From ab417d2fe7679a79bf402cc53ffc98ea813f7167 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Tue, 8 Sep 2020 09:07:59 +0200 Subject: [PATCH 001/114] use text() instead of html() --- .../jquery/jquery-extensions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js index 44c2bdad27..645e7a7259 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js @@ -35,7 +35,7 @@ //change text if ($buttonInnerSpan.length && $button.attr('data-busy-text')) { $button.data('buttonOriginalText', $buttonInnerSpan.html()); - $buttonInnerSpan.html($button.attr('data-busy-text')); + $buttonInnerSpan.text($button.attr('data-busy-text')); } $button.addClass('button-busy'); @@ -55,7 +55,7 @@ //restore text if ($buttonInnerSpan.length && $button.data('buttonOriginalText')) { - $buttonInnerSpan.html($button.data('buttonOriginalText')); + $buttonInnerSpan.text($button.data('buttonOriginalText')); } $button.removeClass('button-busy'); From e25cd9c0fe5e2ccaf8b781d3bc05e9c681f8c0c2 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Tue, 8 Sep 2020 09:42:44 +0200 Subject: [PATCH 002/114] Use TagBuilder to create HTML elements --- .../Button/AbpButtonTagHelperServiceBase.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs index 419aff7c08..ab35dbe804 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Razor.TagHelpers; using System; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; @@ -43,7 +44,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button return; } - output.Content.AppendHtml($" "); + var icon = new TagBuilder("i"); + icon.AddCssClass(GetIconClass(context, output)); + output.Content.AppendHtml(icon); } protected virtual string GetIconClass(TagHelperContext context, TagHelperOutput output) @@ -64,7 +67,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button return; } - output.Content.AppendHtml($"{TagHelper.Text}"); + var span = new TagBuilder("span"); + span.InnerHtml.Append(TagHelper.Text); + output.Content.AppendHtml(span); } protected virtual void AddDisabled(TagHelperContext context, TagHelperOutput output) From a352bbda8f3a6b3101067158577ba0d79ac53060 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Wed, 9 Sep 2020 15:31:30 +0200 Subject: [PATCH 003/114] Use IHtmlGenerator / TagBuilder in necessary tag helpers --- .../TagHelpers/AbpTagHelperService.cs | 10 +++ .../AbpBreadcrumbItemTagHelperService.cs | 22 +++-- .../AbpCarouselItemTagHelperService.cs | 30 ++++--- .../Carousel/AbpCarouselTagHelperService.cs | 87 ++++++++++++++----- .../AbpAccordionItemTagHelperService.cs | 50 +++++++---- .../Collapse/AbpAccordionTagHelperService.cs | 14 ++- .../Modal/AbpModalFooterTagHelperService.cs | 83 +++++++++++++----- .../Modal/AbpModalHeaderTagHelperService.cs | 11 +-- .../Modal/AbpModalTagHelperService.cs | 16 +++- .../Nav/AbpNavbarToggleTagHelperService.cs | 30 +++++-- .../AbpPaginationTagHelperService.cs | 16 ++-- .../Popover/AbpPopoverTagHelperService.cs | 17 ++-- .../Tab/AbpTabDropdownTagHelperService.cs | 33 ++++--- .../Tab/AbpTabLinkTagHelperService.cs | 29 +++++-- .../TagHelpers/Tab/AbpTabTagHelperService.cs | 72 ++++++++++++--- .../Tooltip/AbpTooltipTagHelperService.cs | 12 ++- 16 files changed, 395 insertions(+), 137 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs index 53c56295ce..356e8c5191 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Reflection; using System.Text.Encodings.Web; using System.Threading.Tasks; +using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; @@ -51,5 +52,14 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers Process(context, output); return Task.CompletedTask; } + + protected string RenderHtml(IHtmlContent content) + { + using (var writer = new StringWriter()) + { + content.WriteTo(writer, HtmlEncoder.Default); + return writer.ToString(); + } + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs index 1d6204373a..64f6db5657 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs @@ -1,6 +1,7 @@ -using System.Collections.Generic; -using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Collections.Generic; +using System.Text.Encodings.Web; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; @@ -14,6 +15,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb { _encoder = encoder; } + public override void Process(TagHelperContext context, TagHelperOutput output) { output.TagName = "li"; @@ -23,7 +25,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb var list = context.GetValue>(BreadcrumbItemsContent); - output.Content.SetHtmlContent(GetInnerHtml(context, output)); + ProcessContent(context, output); list.Add(new BreadcrumbItem { @@ -34,15 +36,21 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb output.SuppressOutput(); } - protected virtual string GetInnerHtml(TagHelperContext context, TagHelperOutput output) + protected virtual void ProcessContent(TagHelperContext context, TagHelperOutput output) { if (string.IsNullOrWhiteSpace(TagHelper.Href)) { output.Attributes.Add("aria-current", "page"); - return TagHelper.Title; + output.Content.Append(TagHelper.Title); } - return "" + TagHelper.Title + ""; - } + else + { + var link = new TagBuilder("a"); + link.Attributes.Add("href", TagHelper.Href); + link.InnerHtml.Append(TagHelper.Title); + output.Content.AppendHtml(link); + } + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs index 5a4bafd47d..3d4d33eae3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs @@ -1,7 +1,7 @@ -using System.Collections.Generic; -using System.Text; -using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Collections.Generic; +using System.Text.Encodings.Web; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; @@ -42,8 +42,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel protected virtual void SetInnerImgTag(TagHelperContext context, TagHelperOutput output) { - var imgTag ="\"""; - output.Content.SetHtmlContent(imgTag); + var img = new TagBuilder("img"); + img.AddCssClass("d-block w-100"); + img.Attributes.Add("src", TagHelper.Src); + img.Attributes.Add("alt", TagHelper.Alt); + + output.Content.SetHtmlContent(img); } protected virtual void SetActive(TagHelperContext context, TagHelperOutput output) @@ -61,14 +65,18 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel return; } - var html = new StringBuilder(""); + var title = new TagBuilder("h5"); + title.InnerHtml.Append(TagHelper.CaptionTitle); + + var caption = new TagBuilder("p"); + caption.InnerHtml.Append(TagHelper.Caption); - html.AppendLine("
"); - html.AppendLine("
"+TagHelper.CaptionTitle+"
"); - html.AppendLine("

" + TagHelper.Caption + "

"); - html.AppendLine("
"); + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("carousel-caption d-none d-md-block"); + wrapper.InnerHtml.AppendHtml(title); + wrapper.InnerHtml.AppendHtml(caption); - output.PostContent.SetHtmlContent(html.ToString()); + output.PostContent.SetHtmlContent(wrapper); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs index c92e08365e..83fc057797 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs @@ -1,15 +1,25 @@ -using System; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.Extensions.Localization; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel { public class AbpCarouselTagHelperService : AbpTagHelperService { + protected IStringLocalizer L { get; } + + public AbpCarouselTagHelperService(IStringLocalizer localizer) + { + L = localizer; + } + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { output.TagName = "div"; @@ -58,18 +68,45 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel return; } - var html = new StringBuilder(""); - - html.AppendLine(""); - html.AppendLine(""); - html.AppendLine("Previous"); - html.AppendLine(""); - html.AppendLine(""); - html.AppendLine(""); - html.AppendLine("Next"); - html.AppendLine(""); - - output.PostContent.SetHtmlContent(html.ToString()); + // create 'previous' item + var prevIcon = new TagBuilder("span"); + prevIcon.AddCssClass("carousel-control-prev-icon"); + prevIcon.Attributes.Add("aria-hidden", "true"); + + var prevText = new TagBuilder("span"); + prevText.AddCssClass("sr-only"); + prevText.InnerHtml.Append(L["Previous"].Value); + + var prevAnchor = new TagBuilder("a"); + prevAnchor.AddCssClass("carousel-control-prev"); + prevAnchor.Attributes.Add("href", "#" + TagHelper.Id); + prevAnchor.Attributes.Add("role", "button"); + prevAnchor.Attributes.Add("data-slide", "prev"); + + prevAnchor.InnerHtml.AppendHtml(prevIcon); + prevAnchor.InnerHtml.AppendHtml(prevText); + + // create 'next' item + var nextIcon = new TagBuilder("span"); + nextIcon.AddCssClass("carousel-control-next-icon"); + nextIcon.Attributes.Add("aria-hidden", "true"); + + var nextText = new TagBuilder("span"); + nextText.AddCssClass("sr-only"); + nextText.InnerHtml.Append(L["Next"].Value); + + var nextAnchor = new TagBuilder("a"); + nextAnchor.AddCssClass("carousel-control-next"); + nextAnchor.Attributes.Add("href", "#" + TagHelper.Id); + nextAnchor.Attributes.Add("role", "button"); + nextAnchor.Attributes.Add("data-slide", "next"); + + nextAnchor.InnerHtml.AppendHtml(nextIcon); + nextAnchor.InnerHtml.AppendHtml(nextText); + + // append post content + output.PostContent.AppendHtml(prevAnchor); + output.PostContent.AppendHtml(nextAnchor); } protected virtual void SetIndicators(TagHelperContext context, TagHelperOutput output, List itemList) @@ -79,20 +116,24 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel return; } - var html = new StringBuilder("
    "); + var list = new TagBuilder("ol"); + list.AddCssClass("carousel-indicators"); for (var i = 0; i < itemList.Count; i++) { - html.AppendLine( - "
  1. " : "") + - "
  2. "); + var listItem = new TagBuilder("li"); + listItem.Attributes.Add("data-target", "#" + TagHelper.Id); + listItem.Attributes.Add("data-slide-to", i.ToString()); + + if (itemList[i].Active) + { + listItem.AddCssClass("active"); + } + + list.InnerHtml.AppendHtml(listItem); } - html.AppendLine("
"); - output.PreContent.SetHtmlContent(html.ToString()); + output.PreContent.SetHtmlContent(list); } protected virtual void SetOneItemAsActive(TagHelperContext context, TagHelperOutput output, List itemList) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs index 74365b0c8a..358b9d3054 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs @@ -1,7 +1,8 @@ -using System; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Razor.TagHelpers; +using System; using System.Collections.Generic; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse @@ -17,7 +18,6 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse var html = GetAccordionHeaderItem(context, output) + GetAccordionContentItem(context, output, innerContent); var tabHeaderItems = context.GetValue>(AccordionItems); - tabHeaderItems.Add(html); output.SuppressOutput(); @@ -25,23 +25,43 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse protected virtual string GetAccordionHeaderItem(TagHelperContext context, TagHelperOutput output) { - return "
" + Environment.NewLine + - "
" + Environment.NewLine + - " " + Environment.NewLine + - "
" + Environment.NewLine + - "
" + Environment.NewLine; + var button = new TagBuilder("button"); + button.AddCssClass("btn btn-link"); + button.Attributes.Add("type", "button"); + button.Attributes.Add("data-toggle", "collapse"); + button.Attributes.Add("data-target", "#" + GetContentId()); + button.Attributes.Add("aria-expanded", "true"); + button.Attributes.Add("aria-controls", GetContentId()); + button.InnerHtml.Append(TagHelper.Title); + + var h5 = new TagBuilder("h5"); + h5.AddCssClass("mb-0"); + h5.InnerHtml.AppendHtml(button); + + var header = new TagBuilder("div"); + header.AddCssClass("card-header"); + header.Attributes.Add("id", GetHeadingId()); + header.InnerHtml.AppendHtml(h5); + + return RenderHtml(header); } protected virtual string GetAccordionContentItem(TagHelperContext context, TagHelperOutput output, string content) { var show = (TagHelper.Active ?? false) ? " show" : ""; - return "
" + Environment.NewLine + - "
" + Environment.NewLine + - content + Environment.NewLine + - "
" + Environment.NewLine + - "
" + Environment.NewLine; + + var cardBody = new TagBuilder("div"); + cardBody.AddCssClass("card-body"); + cardBody.InnerHtml.AppendHtml(content); + + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("collapse" + show); + wrapper.Attributes.Add("id", GetContentId()); + wrapper.Attributes.Add("aria-labelledby", GetHeadingId()); + wrapper.Attributes.Add("data-parent", "#" + AbpAccordionParentIdPlaceholder); + wrapper.InnerHtml.AppendHtml(cardBody); + + return RenderHtml(wrapper); } protected virtual string GetHeadingId() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs index 20e62604a9..91e1ece4c5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs @@ -1,14 +1,22 @@ -using System; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; +using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse { public class AbpAccordionTagHelperService : AbpTagHelperService { + protected IHtmlGenerator HtmlGenerator { get; } + + public AbpAccordionTagHelperService(IHtmlGenerator htmlGenerator) + { + HtmlGenerator = htmlGenerator; + } + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { SetRandomIdIfNotProvided(); @@ -32,7 +40,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse var html = new StringBuilder(""); foreach (var item in items) { - var content = item.Replace(AbpAccordionParentIdPlaceholder, TagHelper.Id); + var content = item.Replace(AbpAccordionParentIdPlaceholder, HtmlGenerator.Encode(TagHelper.Id)); html.AppendLine( "
" + Environment.NewLine + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs index 38cac85a6d..d87d0d681c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs @@ -1,10 +1,10 @@ -using System.Text; -using Localization.Resources.AbpUi; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { public class AbpModalFooterTagHelperService : AbpTagHelperService { @@ -22,37 +22,78 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal if (TagHelper.Buttons != AbpModalButtons.None) { - output.PostContent.SetHtmlContent(CreateContent()); + ProcessButtons(context, output); } - ProcessButtonsAlignment(output); - } - - protected virtual string CreateContent() - { - var sb = new StringBuilder(); - switch (TagHelper.Buttons) - { + ProcessButtonsAlignment(output); + } + + protected virtual void ProcessButtons(TagHelperContext context, TagHelperOutput output) + { + switch (TagHelper.Buttons) + { case AbpModalButtons.Cancel: - sb.AppendLine(""); + output.PostContent.AppendHtml(GetCancelButton()); break; case AbpModalButtons.Close: - sb.AppendLine(""); + output.PostContent.AppendHtml(GetCloseButton()); break; case AbpModalButtons.Save: - sb.AppendLine(""); + output.PostContent.AppendHtml(GetSaveButton()); break; case AbpModalButtons.Save | AbpModalButtons.Cancel: - sb.AppendLine(""); - sb.AppendLine(""); + output.PostContent.AppendHtml(GetSaveButton()); + output.PostContent.AppendHtml(GetCancelButton()); break; case AbpModalButtons.Save | AbpModalButtons.Close: - sb.AppendLine(""); - sb.AppendLine(""); - break; + output.PostContent.AppendHtml(GetSaveButton()); + output.PostContent.AppendHtml(GetCloseButton()); + break; } + } + + protected virtual string GetSaveButton() + { + var icon = new TagBuilder("i"); + icon.AddCssClass("fa"); + icon.AddCssClass("fa-check"); + + var span = new TagBuilder("span"); + span.InnerHtml.Append(_localizer["Save"]); + + var button = new TagBuilder("button"); + button.Attributes.Add("type", "submit"); + button.AddCssClass("btn"); + button.AddCssClass("btn-primary"); + button.Attributes.Add("data-busy-text", _localizer["SavingWithThreeDot"]); + button.InnerHtml.AppendHtml(icon); + button.InnerHtml.AppendHtml(span); + + return RenderHtml(button); + } + + protected virtual string GetCloseButton() + { + var button = new TagBuilder("button"); + button.Attributes.Add("type", "button"); + button.Attributes.Add("data-dismiss", "modal"); + button.AddCssClass("btn"); + button.AddCssClass("btn-secondary"); + button.InnerHtml.Append(_localizer["Close"]); + + return RenderHtml(button); + } + + protected virtual string GetCancelButton() + { + var button = new TagBuilder("button"); + button.Attributes.Add("type", "button"); + button.Attributes.Add("data-dismiss", "modal"); + button.AddCssClass("btn"); + button.AddCssClass("btn-secondary"); + button.InnerHtml.Append(_localizer["Cancel"]); - return sb.ToString(); + return RenderHtml(button); } protected virtual void ProcessButtonsAlignment(TagHelperOutput output) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs index 79cddd1f53..8b4118d52b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs @@ -1,5 +1,6 @@ -using System.Text; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Text; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal @@ -16,11 +17,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal protected virtual string CreatePreContent() { - var sb = new StringBuilder(); - - sb.AppendLine("
" + TagHelper.Title + "
"); + var title = new TagBuilder("h5"); + title.AddCssClass("modal-title"); + title.InnerHtml.Append(TagHelper.Title); - return sb.ToString(); + return RenderHtml(title); } protected virtual string CreatePostContent() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs index 3524b27d35..a314322dfe 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs @@ -1,11 +1,19 @@ -using System.Linq; -using System.Text; +using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Linq; +using System.Text; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { public class AbpModalTagHelperService : AbpTagHelperService - { + { + protected IHtmlGenerator HtmlGenerator { get; } + + public AbpModalTagHelperService(IHtmlGenerator htmlGenerator) + { + HtmlGenerator = htmlGenerator; + } + public override void Process(TagHelperContext context, TagHelperOutput output) { output.TagName = null; @@ -17,7 +25,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { var sb = new StringBuilder(); - var attritubutes = output.Attributes.Select(a => " " + a.Name + "=\"" + a.Value + "\" ").ToList(); + var attritubutes = output.Attributes.Select(a => " " + HtmlGenerator.Encode(a.Name) + "=\"" + HtmlGenerator.Encode(a.Value) + "\" ").ToList(); var attritubutesAsJoin = string.Join(" ", attritubutes.ToArray()); sb.AppendLine("
"); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/AbpNavbarToggleTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/AbpNavbarToggleTagHelperService.cs index 1b53894ac2..df48452c40 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/AbpNavbarToggleTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/AbpNavbarToggleTagHelperService.cs @@ -1,11 +1,21 @@ -using System; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.Extensions.Localization; +using System; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Nav { public class AbpNavbarToggleTagHelperService : AbpTagHelperService { + protected IStringLocalizer L { get; } + + public AbpNavbarToggleTagHelperService(IStringLocalizer stringLocalizer) + { + L = stringLocalizer; + } + public override void Process(TagHelperContext context, TagHelperOutput output) { SetRandomNameIfNotProvided(); @@ -18,10 +28,20 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Nav protected virtual void SetToggleButton(TagHelperContext context, TagHelperOutput output) { - output.PreElement.SetHtmlContent( - ""); + var span = new TagBuilder("span"); + span.AddCssClass("navbar-toggler-icon"); + + var button = new TagBuilder("button"); + button.AddCssClass("navbar-toggler"); + button.Attributes.Add("type", "button"); + button.Attributes.Add("data-toggle", "collapse"); + button.Attributes.Add("data-target", "#" + TagHelper.Id); + button.Attributes.Add("aria-controls", TagHelper.Id); + button.Attributes.Add("aria-expanded", "false"); + button.Attributes.Add("aria-label", L["ToggleNavigation"].Value); + button.InnerHtml.AppendHtml(span); + + output.PreElement.SetHtmlContent(button); } protected virtual void SetRandomNameIfNotProvided() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/AbpPaginationTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/AbpPaginationTagHelperService.cs index 9c37e77767..71f3bfe247 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/AbpPaginationTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/AbpPaginationTagHelperService.cs @@ -1,13 +1,13 @@ -using System; -using System.Linq; -using System.Text; -using System.Text.Encodings.Web; -using System.Threading.Tasks; -using Localization.Resources.AbpUi; +using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Mvc.TagHelpers; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.Localization; +using System; +using System.Linq; +using System.Text; +using System.Text.Encodings.Web; +using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; @@ -134,7 +134,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Pagination SetHrefAttribute(currentPage, attributeList); - tagHelperOutput.Content.SetHtmlContent(localizer[localizationKey]); + tagHelperOutput.Content.SetContent(localizer[localizationKey]); var renderedHtml = tagHelperOutput.Render(_encoder); @@ -166,7 +166,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Pagination var localizer = _stringLocalizerFactory.Create(typeof(AbpUiResource)); var pagerInfo = (TagHelper.ShowInfo ?? false) ? - "
" + localizer["PagerInfo{0}{1}{2}", TagHelper.Model.ShowingFrom, TagHelper.Model.ShowingTo, TagHelper.Model.TotalItemsCount] + "
\r\n" + "
" + _encoder.Encode(localizer["PagerInfo{0}{1}{2}", TagHelper.Model.ShowingFrom, TagHelper.Model.ShowingTo, TagHelper.Model.TotalItemsCount]) + "
\r\n" : ""; return diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs index 7ecb351290..18e058ab7c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs @@ -1,11 +1,18 @@ -using System; -using System.Linq; +using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Linq; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Popover { public class AbpPopoverTagHelperService : AbpTagHelperService - { + { + protected IHtmlGenerator HtmlGenerator { get; } + + public AbpPopoverTagHelperService(IHtmlGenerator htmlGenerator) + { + HtmlGenerator = htmlGenerator; + } + public override void Process(TagHelperContext context, TagHelperOutput output) { if (!TagHelper.Disabled ?? true) @@ -44,8 +51,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Popover dataPlacementAsHtml = dataPlacementAsHtml.Replace("default", "top"); } var titleAttribute = output.Attributes.FirstOrDefault(at => at.Name == "title"); - var titleAsHtml = titleAttribute == null ? "" : "title=\"" + titleAttribute.Value + "\" "; - var preElementHtml = ""; + var titleAsHtml = titleAttribute == null ? "" : "title=\"" + HtmlGenerator.Encode(titleAttribute.Value) + "\" "; + var preElementHtml = ""; var postElementHtml = ""; output.PreElement.SetHtmlContent(preElementHtml); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs index fb724af9c8..f244a750b0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs @@ -1,7 +1,8 @@ -using System; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Razor.TagHelpers; +using System; using System.Collections.Generic; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab @@ -31,14 +32,26 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab var link = TagHelper.Name; var title = TagHelper.Title; - return "
  • " + - "" + - title + - "" + - "
    " + - AbpTabDropdownItemsActivePlaceholder + - "
    " + - "
  • "; + var anchor = new TagBuilder("a"); + anchor.AddCssClass("nav-link dropdown-toggle"); + anchor.Attributes.Add("id", id); + anchor.Attributes.Add("data-toggle", "dropdown"); + anchor.Attributes.Add("href", "#" + link); + anchor.Attributes.Add("role", "button"); + anchor.Attributes.Add("aria-haspopup", "true"); + anchor.Attributes.Add("aria-expanded", "false"); + anchor.InnerHtml.Append(title); + + var menu = new TagBuilder("div"); + menu.AddCssClass("dropdown-menu"); + menu.InnerHtml.Append(AbpTabDropdownItemsActivePlaceholder); + + var listItem = new TagBuilder("li"); + listItem.AddCssClass("nav-item dropdown"); + listItem.InnerHtml.AppendHtml(anchor); + listItem.InnerHtml.AppendHtml(menu); + + return RenderHtml(listItem); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs index 54a29bf691..cd98e689e0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs @@ -1,6 +1,7 @@ -using System.Collections.Generic; -using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Collections.Generic; +using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab @@ -30,12 +31,28 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab if (!string.IsNullOrWhiteSpace(TagHelper.ParentDropdownName)) { - return "" + title + ""; + var anchor = new TagBuilder("a"); + anchor.AddCssClass("dropdown-item"); + anchor.Attributes.Add("id", id); + anchor.Attributes.Add("href", href); + anchor.InnerHtml.Append(title); + + return RenderHtml(anchor); } + else + { + var anchor = new TagBuilder("a"); + anchor.AddCssClass("nav-link " + AbpTabItemActivePlaceholder); + anchor.Attributes.Add("id", id); + anchor.Attributes.Add("href", href); + anchor.InnerHtml.Append(title); + + var listItem = new TagBuilder("li"); + listItem.AddCssClass("nav-item"); + listItem.InnerHtml.AppendHtml(anchor); - return "
  • " + - title + - "
  • "; + return RenderHtml(listItem); + } } protected virtual void SetPlaceholderForNameIfNotProvided() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs index 2de18d0592..337033193a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs @@ -1,7 +1,8 @@ -using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab @@ -34,16 +35,52 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab var attributes = GetTabHeaderAttributes(context, output); var classAttributesAsString = attributes.Where(a=>a.Name == "class").ToList().Select(a=>a.Value).JoinAsString(" "); - var otherAttributesAsString = attributes.Where(a => a.Name != "class").ToList().ToHtmlAttributesAsString(); + var otherAttributes = attributes.Where(a => a.Name != "class").ToList(); if (!string.IsNullOrWhiteSpace(TagHelper.ParentDropdownName)) { - return "" + title + ""; + var anchor = new TagBuilder("a"); + anchor.AddCssClass("dropdown-item " + classAttributesAsString); + anchor.Attributes.Add("id", id); + anchor.Attributes.Add("href", "#" + link); + anchor.Attributes.Add("data-toggle", "tab"); + anchor.Attributes.Add("role", "tab"); + anchor.Attributes.Add("aria-controls", control); + anchor.Attributes.Add("aria-selected", "false"); + + foreach (var attr in otherAttributes) + { + anchor.Attributes.Add(attr.Name, attr.Value.ToString()); + } + + anchor.InnerHtml.Append(title); + + return RenderHtml(anchor); + } + else + { + var anchor = new TagBuilder("a"); + anchor.AddCssClass("nav-link " + classAttributesAsString + " " + AbpTabItemActivePlaceholder); + anchor.Attributes.Add("id", id); + anchor.Attributes.Add("data-toggle", TabItemsDataTogglePlaceHolder); + anchor.Attributes.Add("href", "#" + link); + anchor.Attributes.Add("role", "tab"); + anchor.Attributes.Add("aria-controls", control); + anchor.Attributes.Add("aria-selected", AbpTabItemSelectedPlaceholder); + + foreach (var attr in otherAttributes) + { + anchor.Attributes.Add(attr.Name, attr.Value.ToString()); + } + + anchor.InnerHtml.Append(title); + + var listItem = new TagBuilder("li"); + listItem.AddCssClass("nav-item"); + listItem.InnerHtml.AppendHtml(anchor); + + return RenderHtml(listItem); } - - return "
  • " + - title + - "
  • "; } protected virtual string GetTabContentItem(TagHelperContext context, TagHelperOutput output, string content) @@ -53,11 +90,22 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab var attributes = GetTabContentAttributes(context, output); var classAttributesAsString = attributes.Where(a => a.Name == "class").ToList().Select(a => a.Name).JoinAsString(" "); - var otherAttributesAsString = attributes.Where(a => a.Name != "class").ToList().ToHtmlAttributesAsString(); + var otherAttributes = attributes.Where(a => a.Name != "class").ToList(); + + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("tab-pane fade " + classAttributesAsString + " " + AbpTabItemShowActivePlaceholder); + wrapper.Attributes.Add("id", id); + wrapper.Attributes.Add("role", "tabpanel"); + wrapper.Attributes.Add("aria-labelledby", headerId); + + foreach (var attr in otherAttributes) + { + wrapper.Attributes.Add(attr.Name, attr.Value.ToString()); + } + + wrapper.InnerHtml.AppendHtml(content); - return "
    " + - content + - "
    "; + return RenderHtml(wrapper); } protected virtual void SetPlaceholderForNameIfNotProvided() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs index f95a0097cd..4c14b62de3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs @@ -1,11 +1,19 @@ using System; using System.Linq; +using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip { public class AbpTooltipTagHelperService : AbpTagHelperService { + protected IHtmlGenerator HtmlGenerator { get; } + + public AbpTooltipTagHelperService(IHtmlGenerator htmlGenerator) + { + HtmlGenerator = htmlGenerator; + } + public override void Process(TagHelperContext context, TagHelperOutput output) { if (IsButtonDisabled(context, output)) @@ -26,8 +34,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip output.PreElement.SetHtmlContent( "" + Environment.NewLine); + "data-placement=\"" + HtmlGenerator.Encode(directory.ToString().ToLowerInvariant()) + + "\" title=\"" + HtmlGenerator.Encode(GetTitle()) + "\">" + Environment.NewLine); output.PostElement.SetHtmlContent(Environment.NewLine + ""); From dd355c093aff47d8ee0da87ed9dba5e1bf1a56e1 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Wed, 9 Sep 2020 22:46:37 +0200 Subject: [PATCH 004/114] Use IHtmlGenerator / TagBuilder in necessary tag helpers Notes: - Would be nice to completely remove the use of `AbpTagHelperService.RenderHtml` --- .../TagHelpers/AbpTagHelperService.cs | 2 +- .../AbpBreadcrumbTagHelperService.cs | 30 +++---- .../Carousel/AbpCarouselTagHelperService.cs | 12 +-- .../Collapse/AbpAccordionTagHelperService.cs | 23 ++--- .../Form/AbpInputTagHelperService.cs | 36 +++++--- .../Form/AbpRadioInputTagHelperService.cs | 42 ++++++--- .../Form/AbpSelectTagHelperService.cs | 32 ++++--- .../Modal/AbpModalFooterTagHelperService.cs | 26 +++--- .../Modal/AbpModalHeaderTagHelperService.cs | 40 ++++++--- .../Modal/AbpModalTagHelperService.cs | 85 +++++++++---------- .../Popover/AbpPopoverTagHelperService.cs | 44 ++++++---- .../TagHelpers/Tab/AbpTabsTagHelperService.cs | 42 +++++---- .../Tooltip/AbpTooltipTagHelperService.cs | 26 +++--- 13 files changed, 245 insertions(+), 195 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs index 356e8c5191..f70de7a364 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs @@ -53,7 +53,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers return Task.CompletedTask; } - protected string RenderHtml(IHtmlContent content) + protected virtual string RenderHtml(IHtmlContent content) { using (var writer = new StringWriter()) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs index 1d0476c5ad..c28b7c3d71 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs @@ -1,8 +1,8 @@ -using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb { @@ -10,37 +10,31 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb { public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { + output.TagName = "nav"; + output.Attributes.Add("aria-label", "breadcrumb"); + var list = InitilizeFormGroupContentsContext(context, output); await output.GetChildContentAsync(); - SetInnerOlTag(context, output); - SetInnerList(context, output, list); - - output.TagName = "nav"; - output.Attributes.Add("aria-label", "breadcrumb"); - } - - protected virtual void SetInnerOlTag(TagHelperContext context, TagHelperOutput output) - { - output.PreContent.SetHtmlContent("
      "); - output.PostContent.SetHtmlContent("
    "); + ProcessItems(context, output, list); } - protected virtual void SetInnerList(TagHelperContext context, TagHelperOutput output, List list) + protected virtual void ProcessItems(TagHelperContext context, TagHelperOutput output, List list) { SetLastOneActiveIfThereIsNotAny(context, output, list); - var html = new StringBuilder(""); + var listElement = new TagBuilder("ol"); + listElement.AddCssClass("breadcrumb"); foreach (var breadcrumbItem in list) { var htmlPart = SetActiveClassIfActiveAndGetHtml(breadcrumbItem); - html.AppendLine(htmlPart); + listElement.InnerHtml.AppendHtml(htmlPart); } - output.Content.SetHtmlContent(html.ToString()); + output.Content.SetHtmlContent(listElement); } protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs index 83fc057797..f6c5d841fd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs @@ -5,7 +5,6 @@ using Microsoft.Extensions.Localization; using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; @@ -32,6 +31,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel await output.GetChildContentAsync(); SetOneItemAsActive(context, output, itemList); + + SetItems(context, output, itemList); SetControls(context, output, itemList); SetIndicators(context, output, itemList); @@ -47,18 +48,17 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel protected virtual void SetItems(TagHelperContext context, TagHelperOutput output, List itemList) { - var itemsHtml = new StringBuilder(""); - itemsHtml.Append("
    "); + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("carousel-inner"); foreach (var carouselItem in itemList) { SetActiveIfActive(carouselItem); - itemsHtml.AppendLine(carouselItem.Html); + wrapper.InnerHtml.AppendHtml(carouselItem.Html); } - itemsHtml.Append("
    "); - output.Content.SetHtmlContent(itemsHtml.ToString()); + output.Content.SetHtmlContent(wrapper); } protected virtual void SetControls(TagHelperContext context, TagHelperOutput output, List itemList) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs index 91e1ece4c5..7a8e0b0571 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs @@ -1,8 +1,8 @@ -using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; using System; using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; @@ -30,26 +30,21 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse await output.GetChildContentAsync(); - var content = GetContent(items); - - output.Content.SetHtmlContent(content); + ProcessItems(context, output, items); } - protected virtual string GetContent(List items) + protected virtual void ProcessItems(TagHelperContext context, TagHelperOutput output, List items) { - var html = new StringBuilder(""); foreach (var item in items) { var content = item.Replace(AbpAccordionParentIdPlaceholder, HtmlGenerator.Encode(TagHelper.Id)); - html.AppendLine( - "
    " + Environment.NewLine + - content - + "
    " + Environment.NewLine - ); - } + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("card"); + wrapper.InnerHtml.AppendHtml(content); - return html.ToString(); + output.Content.AppendHtml(wrapper); + } } protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs index 58a88c676f..f71f8c030f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs @@ -1,12 +1,13 @@ -using System; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.TagHelpers; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text.Encodings.Web; using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc.TagHelpers; -using Microsoft.AspNetCore.Mvc.ViewFeatures; -using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; @@ -249,7 +250,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form { if (IsOutputHidden(inputTag) || TagHelper.SuppressLabel) { - return ""; + return string.Empty; } if (string.IsNullOrEmpty(TagHelper.Label)) @@ -257,11 +258,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return await GetLabelAsHtmlUsingTagHelperAsync(context, output, isCheckbox) + GetRequiredSymbol(context, output); } - var checkboxClass = isCheckbox ? "class=\"custom-control-label\" " : ""; + var label = new TagBuilder("label"); + label.Attributes.Add("for", GetIdAttributeValue(inputTag)); + label.InnerHtml.Append(TagHelper.Label); + + if (isCheckbox) + { + label.AddCssClass("custom-control-label"); + } - return "" + GetRequiredSymbol(context, output); + return RenderHtml(label); } protected virtual string GetRequiredSymbol(TagHelperContext context, TagHelperOutput output) @@ -308,9 +314,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); var localizedText = _tagHelperLocalizer.GetLocalizedText(text, TagHelper.AspFor.ModelExplorer); - return "" + - localizedText + - ""; + var small = new TagBuilder("small"); + small.Attributes.Add("id", idAttr?.Value?.ToString() + "InfoText"); + small.AddCssClass("form-text text-muted"); + + return RenderHtml(small); } protected virtual async Task GetLabelAsHtmlUsingTagHelperAsync(TagHelperContext context, TagHelperOutput output, bool isCheckbox) @@ -426,11 +434,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return inputTag.Attributes.Any(a => a.Name.ToLowerInvariant() == "type" && a.Value.ToString().ToLowerInvariant() == "hidden"); } - protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag) + protected virtual string GetIdAttributeValue(TagHelperOutput inputTag) { var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); - return idAttr != null ? "for=\"" + idAttr.Value + "\"" : ""; + return idAttr != null ? idAttr.Value.ToString() : string.Empty; } protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs index bcfa5bd7d1..f3873e3d2e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs @@ -1,12 +1,12 @@ +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.Extensions.Localization; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; -using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.AspNetCore.Mvc.ViewFeatures; -using Microsoft.AspNetCore.Razor.TagHelpers; -using Microsoft.Extensions.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form @@ -53,15 +53,35 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form var inlineClass = (TagHelper.Inline ?? false) ? " custom-control-inline" : ""; var id = TagHelper.AspFor.Name + "Radio" + selectItem.Value; var name = TagHelper.AspFor.Name; - var selected = selectItem.Selected ? " checked=\"checked\"" : ""; - var disabled = (TagHelper.Disabled??false) ? " disabled" : ""; - var htmlPart = "
    \r\n" + - " \r\n" + - " \r\n" + - "
    "; + var input = new TagBuilder("input"); + input.AddCssClass("custom-control-input"); + input.Attributes.Add("type", "radio"); + input.Attributes.Add("id", id); + input.Attributes.Add("name", name); + input.Attributes.Add("value", selectItem.Value); + + if (selectItem.Selected) + { + input.Attributes.Add("checked", "checked"); + } + + if (TagHelper.Disabled ?? false) + { + input.Attributes.Add("disabled", "disabled"); + } + + var label = new TagBuilder("label"); + label.AddCssClass("custom-control-label"); + label.Attributes.Add("for", id); + label.InnerHtml.Append(selectItem.Text); + + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("custom-control custom-radio" + inlineClass); + wrapper.InnerHtml.AppendHtml(input); + wrapper.InnerHtml.AppendHtml(label); - html.AppendLine(htmlPart); + html.AppendLine(RenderHtml(wrapper)); } return html.ToString(); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs index 21f6c498a9..b5ca866b7a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs @@ -1,20 +1,18 @@ -using System; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.TagHelpers; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.Extensions.Localization; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Linq.Dynamic.Core; using System.Text.Encodings.Web; using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.AspNetCore.Mvc.TagHelpers; -using Microsoft.AspNetCore.Mvc.ViewFeatures; -using Microsoft.AspNetCore.Razor.TagHelpers; -using Microsoft.Extensions.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; -using Volo.Abp.DynamicProxy; using Volo.Abp.Localization; -using Volo.Abp.Reflection; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form { @@ -140,7 +138,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form { if (!string.IsNullOrEmpty(TagHelper.Label)) { - return "" + GetRequiredSymbol(context, output); + var label = new TagBuilder("label"); + label.Attributes.Add("for", GetIdAttributeValue(selectTag)); + label.InnerHtml.Append(TagHelper.Label); + + return RenderHtml(label) + GetRequiredSymbol(context, output); } return await GetLabelAsHtmlUsingTagHelperAsync(context, output) + GetRequiredSymbol(context, output); @@ -199,9 +201,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); var localizedText = _tagHelperLocalizer.GetLocalizedText(text, TagHelper.AspFor.ModelExplorer); - return "" + - localizedText + - ""; + var small = new TagBuilder("small"); + small.Attributes.Add("id", idAttr?.Value?.ToString() + "InfoText"); + small.AddCssClass("form-text text-muted"); + + return RenderHtml(small); } protected virtual List GetSelectItemsFromEnum(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer) @@ -338,11 +342,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form } } - protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag) + protected virtual string GetIdAttributeValue(TagHelperOutput inputTag) { var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); - return idAttr != null ? "for=\"" + idAttr.Value + "\"" : ""; + return idAttr != null ? idAttr.Value.ToString() : string.Empty; } protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs index d87d0d681c..d59de3bbcd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs @@ -33,26 +33,26 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal switch (TagHelper.Buttons) { case AbpModalButtons.Cancel: - output.PostContent.AppendHtml(GetCancelButton()); + AddCancelButton(context, output); break; case AbpModalButtons.Close: - output.PostContent.AppendHtml(GetCloseButton()); + AddCloseButton(context, output); break; case AbpModalButtons.Save: - output.PostContent.AppendHtml(GetSaveButton()); + AddSaveButton(context, output); break; case AbpModalButtons.Save | AbpModalButtons.Cancel: - output.PostContent.AppendHtml(GetSaveButton()); - output.PostContent.AppendHtml(GetCancelButton()); + AddSaveButton(context, output); + AddCancelButton(context, output); break; case AbpModalButtons.Save | AbpModalButtons.Close: - output.PostContent.AppendHtml(GetSaveButton()); - output.PostContent.AppendHtml(GetCloseButton()); + AddSaveButton(context, output); + AddCloseButton(context, output); break; } } - protected virtual string GetSaveButton() + protected virtual void AddSaveButton(TagHelperContext context, TagHelperOutput output) { var icon = new TagBuilder("i"); icon.AddCssClass("fa"); @@ -69,10 +69,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal button.InnerHtml.AppendHtml(icon); button.InnerHtml.AppendHtml(span); - return RenderHtml(button); + output.PostContent.AppendHtml(button); } - protected virtual string GetCloseButton() + protected virtual void AddCloseButton(TagHelperContext context, TagHelperOutput output) { var button = new TagBuilder("button"); button.Attributes.Add("type", "button"); @@ -81,10 +81,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal button.AddCssClass("btn-secondary"); button.InnerHtml.Append(_localizer["Close"]); - return RenderHtml(button); + output.PostContent.AppendHtml(button); } - protected virtual string GetCancelButton() + protected virtual void AddCancelButton(TagHelperContext context, TagHelperOutput output) { var button = new TagBuilder("button"); button.Attributes.Add("type", "button"); @@ -93,7 +93,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal button.AddCssClass("btn-secondary"); button.InnerHtml.Append(_localizer["Cancel"]); - return RenderHtml(button); + output.PostContent.AppendHtml(button); } protected virtual void ProcessButtonsAlignment(TagHelperOutput output) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs index 8b4118d52b..a9d13b795a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs @@ -1,38 +1,52 @@ -using Microsoft.AspNetCore.Mvc.Rendering; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; -using System.Text; +using Microsoft.Extensions.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { public class AbpModalHeaderTagHelperService : AbpTagHelperService { + protected IStringLocalizer L { get; } + + public AbpModalHeaderTagHelperService(IStringLocalizer localizer) + { + L = localizer; + } + public override void Process(TagHelperContext context, TagHelperOutput output) { output.TagName = "div"; output.Attributes.AddClass("modal-header"); - output.PreContent.SetHtmlContent(CreatePreContent()); - output.PostContent.SetHtmlContent(CreatePostContent()); + + AddTitle(context, output); + AddCloseButton(context, output); } - protected virtual string CreatePreContent() + protected virtual void AddTitle(TagHelperContext context, TagHelperOutput output) { var title = new TagBuilder("h5"); title.AddCssClass("modal-title"); title.InnerHtml.Append(TagHelper.Title); - return RenderHtml(title); + output.PreContent.SetHtmlContent(title); } - protected virtual string CreatePostContent() + protected virtual void AddCloseButton(TagHelperContext context, TagHelperOutput output) { - var sb = new StringBuilder(); - - sb.AppendLine(" "); + var span = new TagBuilder("span"); + span.Attributes.Add("aria-hidden", "true"); + span.InnerHtml.AppendHtml("×"); + + var button = new TagBuilder("button"); + button.AddCssClass("close"); + button.Attributes.Add("type", "button"); + button.Attributes.Add("data-dismiss", "modal"); + button.Attributes.Add("aria-label", L["Close"].Value); + button.InnerHtml.AppendHtml(span); - return sb.ToString(); + output.PostContent.AppendHtml(button); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs index a314322dfe..56c24ea384 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs @@ -1,40 +1,53 @@ -using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; -using System.Linq; using System.Text; - +using System.Threading.Tasks; + namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { public class AbpModalTagHelperService : AbpTagHelperService - { - protected IHtmlGenerator HtmlGenerator { get; } - - public AbpModalTagHelperService(IHtmlGenerator htmlGenerator) - { - HtmlGenerator = htmlGenerator; - } - - public override void Process(TagHelperContext context, TagHelperOutput output) + { + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { output.TagName = null; - output.PreContent.SetHtmlContent(CreatePreContent(output)); - output.PostContent.SetHtmlContent(CreatePostContent()); - } - protected virtual string CreatePreContent(TagHelperOutput output) - { - var sb = new StringBuilder(); + var childContent = await output.GetChildContentAsync(); - var attritubutes = output.Attributes.Select(a => " " + HtmlGenerator.Encode(a.Name) + "=\"" + HtmlGenerator.Encode(a.Value) + "\" ").ToList(); - var attritubutesAsJoin = string.Join(" ", attritubutes.ToArray()); - - sb.AppendLine("
    "); - sb.AppendLine("
    "); - sb.AppendLine("
    "); - - return sb.ToString(); + Process(context, output, childContent); } + protected virtual void Process(TagHelperContext context, TagHelperOutput output, TagHelperContent content) + { + var modalContent = new TagBuilder("div"); + modalContent.AddCssClass(GetModalContentClasses()); + modalContent.InnerHtml.AppendHtml(content); + + var modalDialog = new TagBuilder("div"); + modalDialog.AddCssClass(GetModalDialogClasses()); + modalDialog.Attributes.Add("role", "document"); + modalDialog.InnerHtml.AppendHtml(modalContent); + + var modal = new TagBuilder("div"); + modal.AddCssClass(GetModalClasses()); + modal.Attributes.Add("tabindex", "-1"); + modal.Attributes.Add("role", "dialog"); + modal.Attributes.Add("aria-hidden", "true"); + + foreach (var attr in output.Attributes) + { + modal.Attributes.Add(attr.Name, attr.Value.ToString()); + } + + if (TagHelper.Static == true) + { + modal.Attributes.Add("data-backdrop", "static"); + } + + modal.InnerHtml.AppendHtml(modalDialog); + + output.Content.SetHtmlContent(modal); + } + protected virtual string GetModalClasses() { return "modal fade"; @@ -63,25 +76,5 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { return "modal-content"; } - - protected virtual string GetDataAttributes() - { - if (TagHelper.Static == true) - { - return "data-backdrop=\"static\" "; - } - return string.Empty; - } - - protected virtual string CreatePostContent() - { - var sb = new StringBuilder(); - - sb.AppendLine("
    "); - sb.AppendLine("
    "); - sb.AppendLine("
    "); - - return sb.ToString(); - } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs index 18e058ab7c..1d13437d8a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; using System.Linq; @@ -28,38 +29,51 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Popover SetDisabled(context, output); } } + protected virtual void SetDisabled(TagHelperContext context, TagHelperOutput output) - { - var triggerAsHtml = TagHelper.Dismissible ?? false ? "data-trigger=\"focus\" " : ""; + { + var triggerValue = TagHelper.Dismissible ?? false ? "focus" : ""; if (TagHelper.Hoverable ?? false) { - if (triggerAsHtml.Contains("focus")) + if (triggerValue.Contains("focus")) { - triggerAsHtml = triggerAsHtml.Replace("focus", "focus hover"); + triggerValue = triggerValue.Replace("focus", "focus hover"); } else { - triggerAsHtml = "data-trigger=\"hover\" "; + triggerValue = "hover"; } - } - var dataPlacementAsHtml = "data-placement=\"" + GetDirectory().ToString().ToLowerInvariant() + "\" "; - + } + + var dataPlacement = GetDirectory().ToString().ToLowerInvariant(); // data-placement="default" with data-trigger="focus" causes Cannot read property 'indexOf' of undefined at computeAutoPlacement(bootstrap.bundle.js?_v=637146714627330435:2185) error if (IsDismissibleOrHoverable() && GetDirectory() == PopoverDirectory.Default) { //dataPlacementAsHtml = string.Empty; //bootstrap default placement is right, abp's is top. - dataPlacementAsHtml = dataPlacementAsHtml.Replace("default", "top"); + dataPlacement = dataPlacement.Replace("default", "top"); } + var titleAttribute = output.Attributes.FirstOrDefault(at => at.Name == "title"); - var titleAsHtml = titleAttribute == null ? "" : "title=\"" + HtmlGenerator.Encode(titleAttribute.Value) + "\" "; - var preElementHtml = ""; - var postElementHtml = ""; - output.PreElement.SetHtmlContent(preElementHtml); - output.PostElement.SetHtmlContent(postElementHtml); + var span = new TagBuilder("span"); + span.AddCssClass("d-inline-block"); + span.Attributes.Add("tabindex", "0"); + span.Attributes.Add("data-toggle", "popover"); + span.Attributes.Add("data-content", GetDataContent()); + span.Attributes.Add("data-trigger", triggerValue); + span.Attributes.Add("data-placement", dataPlacement); + + if (titleAttribute != null) + { + span.Attributes.Add("title", titleAttribute.Value.ToString()); + } + + output.PreElement.SetHtmlContent(span.RenderStartTag()); + output.PostElement.SetHtmlContent(span.RenderEndTag()); output.Attributes.Add("style", "pointer-events: none;"); } + protected virtual void SetDataTriggerIfDismissible(TagHelperContext context, TagHelperOutput output) { if (TagHelper.Dismissible ?? false) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs index a28e0c7057..404354c8b2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs @@ -1,9 +1,11 @@ -using System; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid; @@ -11,6 +13,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab { public class AbpTabsTagHelperService : AbpTagHelperService { + protected IHtmlGenerator HtmlGenerator { get; } + + public AbpTabsTagHelperService(IHtmlGenerator htmlGenerator) + { + HtmlGenerator = htmlGenerator; + } + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { SetRandomNameIfNotProvided(); @@ -61,31 +70,34 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab var navClass = TagHelper.TabStyle == TabStyle.Tab ? " nav-tabs" : " nav-pills"; var verticalClass = GetVerticalPillClassIfVertical(); - var surroundedHeaders = "
      " + Environment.NewLine + - headers + - "
    "; + var listElement = new TagBuilder("ul"); + listElement.AddCssClass("nav" + verticalClass + navClass); + listElement.Attributes.Add("id", id); + listElement.Attributes.Add("role", "tablist"); + listElement.InnerHtml.AppendHtml(headers); - return surroundedHeaders; + return RenderHtml(listElement); } protected virtual string SurroundContents(TagHelperContext context, TagHelperOutput output, string contents) { var id = TagHelper.Name + "Content"; - var surroundedContents = "
    " + Environment.NewLine + - contents + - "
    "; + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("tab-content"); + wrapper.Attributes.Add("id", id); + wrapper.InnerHtml.AppendHtml(contents); - return surroundedContents; + return RenderHtml(wrapper); } protected virtual string PlaceInsideColumn(string contents, int columnSize) { - var surroundedContents = "
    " + Environment.NewLine + - contents + - "
    "; + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("col-md-" + columnSize); + wrapper.InnerHtml.AppendHtml(contents); - return surroundedContents; + return RenderHtml(wrapper); } protected virtual void PlaceInsideRow(TagHelperOutput output) @@ -213,7 +225,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab protected virtual string SetTabItemNameIfNotProvided(string content, int index) { - return content.Replace(TabItemNamePlaceHolder, TagHelper.Name + "_" + index); + return content.Replace(TabItemNamePlaceHolder, HtmlGenerator.Encode(TagHelper.Name) + "_" + index); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs index 4c14b62de3..acef4a0951 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs @@ -1,19 +1,11 @@ -using System; -using System.Linq; -using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; +using System.Linq; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip { public class AbpTooltipTagHelperService : AbpTagHelperService { - protected IHtmlGenerator HtmlGenerator { get; } - - public AbpTooltipTagHelperService(IHtmlGenerator htmlGenerator) - { - HtmlGenerator = htmlGenerator; - } - public override void Process(TagHelperContext context, TagHelperOutput output) { if (IsButtonDisabled(context, output)) @@ -32,12 +24,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip var directory = GetDirectory() != TooltipDirectory.Default ? GetDirectory() : TooltipDirectory.Top; output.Attributes.Add("data-placement", directory.ToString().ToLowerInvariant()); - output.PreElement.SetHtmlContent( - "" + Environment.NewLine); + var span = new TagBuilder("span"); + span.AddCssClass("d-inline-block"); + span.Attributes.Add("tabindex", "0"); + span.Attributes.Add("data-toggle", "tooltip"); + span.Attributes.Add("data-placement", directory.ToString().ToLowerInvariant()); + span.Attributes.Add("title", GetTitle()); + + output.PreElement.SetHtmlContent(span.RenderStartTag()); - output.PostElement.SetHtmlContent(Environment.NewLine + ""); + output.PostElement.SetHtmlContent(span.RenderEndTag()); output.Attributes.Add("style", "pointer-events: none;"); } From 4ec1281b00ffdda2893f2fd1f88492540d4c5d72 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Thu, 10 Sep 2020 10:41:43 +0200 Subject: [PATCH 005/114] reverted some changes to not break class signatures --- .../AbpBreadcrumbTagHelperService.cs | 22 +++-- .../Carousel/AbpCarouselTagHelperService.cs | 2 - .../Collapse/AbpAccordionTagHelperService.cs | 4 +- .../Form/AbpInputTagHelperService.cs | 7 ++ .../Form/AbpSelectTagHelperService.cs | 7 ++ .../Modal/AbpModalHeaderTagHelperService.cs | 13 ++- .../Modal/AbpModalTagHelperService.cs | 80 +++++++++++++------ 7 files changed, 92 insertions(+), 43 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs index c28b7c3d71..59a45ec036 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs @@ -17,24 +17,30 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb await output.GetChildContentAsync(); - ProcessItems(context, output, list); + var listTagBulder = GetOlTagBuilder(); + + SetInnerList(context, output, list, listTagBulder); + + output.Content.SetHtmlContent(listTagBulder); } - protected virtual void ProcessItems(TagHelperContext context, TagHelperOutput output, List list) + protected virtual TagBuilder GetOlTagBuilder() { - SetLastOneActiveIfThereIsNotAny(context, output, list); + var builder = new TagBuilder("ol"); + builder.AddCssClass("breadcrumb"); + return builder; + } - var listElement = new TagBuilder("ol"); - listElement.AddCssClass("breadcrumb"); + protected virtual void SetInnerList(TagHelperContext context, TagHelperOutput output, List list, TagBuilder listTagBuilder) + { + SetLastOneActiveIfThereIsNotAny(context, output, list); foreach (var breadcrumbItem in list) { var htmlPart = SetActiveClassIfActiveAndGetHtml(breadcrumbItem); - listElement.InnerHtml.AppendHtml(htmlPart); + listTagBuilder.InnerHtml.AppendHtml(htmlPart); } - - output.Content.SetHtmlContent(listElement); } protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs index f6c5d841fd..c3672db7f5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs @@ -31,8 +31,6 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel await output.GetChildContentAsync(); SetOneItemAsActive(context, output, itemList); - - SetItems(context, output, itemList); SetControls(context, output, itemList); SetIndicators(context, output, itemList); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs index 7a8e0b0571..c7f93e87cc 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs @@ -30,10 +30,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse await output.GetChildContentAsync(); - ProcessItems(context, output, items); + SetContent(context, output, items); } - protected virtual void ProcessItems(TagHelperContext context, TagHelperOutput output, List items) + protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, List items) { foreach (var item in items) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs index f71f8c030f..e629572658 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs @@ -441,6 +441,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return idAttr != null ? idAttr.Value.ToString() : string.Empty; } + protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag) + { + var id = GetIdAttributeValue(inputTag); + + return !string.IsNullOrWhiteSpace(id) ? "for=\"" + id + "\"" : string.Empty; + } + protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress) { var list = context.GetValue>(FormGroupContents) ?? new List(); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs index b5ca866b7a..d978fe5f5e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs @@ -349,6 +349,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return idAttr != null ? idAttr.Value.ToString() : string.Empty; } + protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag) + { + var id = GetIdAttributeValue(inputTag); + + return !string.IsNullOrWhiteSpace(id) ? "for=\"" + id + "\"" : string.Empty; + } + protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress) { var list = context.GetValue>(FormGroupContents) ?? new List(); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs index a9d13b795a..7ee1fdd0e9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs @@ -19,21 +19,20 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { output.TagName = "div"; output.Attributes.AddClass("modal-header"); - - AddTitle(context, output); - AddCloseButton(context, output); + output.PreContent.SetHtmlContent(CreatePreContent()); + output.PostContent.SetHtmlContent(CreatePostContent()); } - protected virtual void AddTitle(TagHelperContext context, TagHelperOutput output) + protected virtual string CreatePreContent() { var title = new TagBuilder("h5"); title.AddCssClass("modal-title"); title.InnerHtml.Append(TagHelper.Title); - output.PreContent.SetHtmlContent(title); + return RenderHtml(title); } - protected virtual void AddCloseButton(TagHelperContext context, TagHelperOutput output) + protected virtual string CreatePostContent() { var span = new TagBuilder("span"); span.Attributes.Add("aria-hidden", "true"); @@ -46,7 +45,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal button.Attributes.Add("aria-label", L["Close"].Value); button.InnerHtml.AppendHtml(span); - output.PostContent.AppendHtml(button); + return RenderHtml(button); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs index 56c24ea384..78d664b562 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; using System.Text; using System.Threading.Tasks; @@ -13,40 +14,54 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal var childContent = await output.GetChildContentAsync(); - Process(context, output, childContent); + SetContent(context, output, childContent); } - protected virtual void Process(TagHelperContext context, TagHelperOutput output, TagHelperContent content) + protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent) { - var modalContent = new TagBuilder("div"); - modalContent.AddCssClass(GetModalContentClasses()); - modalContent.InnerHtml.AppendHtml(content); + var modalContent = GetModalContentElement(context, output, childContent); + var modalDialog = GetModalDialogElement(context, output, modalContent); + var modal = GetModal(context, output, modalDialog); - var modalDialog = new TagBuilder("div"); - modalDialog.AddCssClass(GetModalDialogClasses()); - modalDialog.Attributes.Add("role", "document"); - modalDialog.InnerHtml.AppendHtml(modalContent); - - var modal = new TagBuilder("div"); - modal.AddCssClass(GetModalClasses()); - modal.Attributes.Add("tabindex", "-1"); - modal.Attributes.Add("role", "dialog"); - modal.Attributes.Add("aria-hidden", "true"); + output.Content.SetHtmlContent(modal); + } + + protected virtual TagBuilder GetModalContentElement(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent) + { + var element = new TagBuilder("div"); + element.AddCssClass(GetModalContentClasses()); + element.InnerHtml.SetHtmlContent(childContent); + return element; + } + + protected virtual TagBuilder GetModalDialogElement(TagHelperContext context, TagHelperOutput output, IHtmlContent innerHtml) + { + var element = new TagBuilder("div"); + element.AddCssClass(GetModalDialogClasses()); + element.Attributes.Add("role", "document"); + element.InnerHtml.SetHtmlContent(innerHtml); + return element; + } + + protected virtual TagBuilder GetModal(TagHelperContext context, TagHelperOutput output, IHtmlContent innerHtml) + { + var element = new TagBuilder("div"); + element.AddCssClass(GetModalClasses()); + element.Attributes.Add("tabindex", "-1"); + element.Attributes.Add("role", "dialog"); + element.Attributes.Add("aria-hidden", "true"); foreach (var attr in output.Attributes) { - modal.Attributes.Add(attr.Name, attr.Value.ToString()); + element.Attributes.Add(attr.Name, attr.Value.ToString()); } - if (TagHelper.Static == true) - { - modal.Attributes.Add("data-backdrop", "static"); - } + SetDataAttributes(element); - modal.InnerHtml.AppendHtml(modalDialog); + element.InnerHtml.SetHtmlContent(innerHtml); - output.Content.SetHtmlContent(modal); - } + return element; + } protected virtual string GetModalClasses() { @@ -76,5 +91,22 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal { return "modal-content"; } + + protected virtual string GetDataAttributes() + { + if (TagHelper.Static == true) + { + return "data-backdrop=\"static\" "; + } + return string.Empty; + } + + protected virtual void SetDataAttributes(TagBuilder builder) + { + if (TagHelper.Static == true) + { + builder.Attributes.Add("data-backdrop", "static"); + } + } } } \ No newline at end of file From c9d18ab484cf96f7ba24e7d9fbff78b591b50770 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Thu, 10 Sep 2020 15:09:34 +0200 Subject: [PATCH 006/114] reverted some changes to not break class signatures --- .../AbpBreadcrumbItemTagHelperService.cs | 19 ++--- .../Modal/AbpModalFooterTagHelperService.cs | 73 ++++++++++--------- 2 files changed, 47 insertions(+), 45 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs index 64f6db5657..97eef50e79 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs @@ -25,8 +25,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb var list = context.GetValue>(BreadcrumbItemsContent); - ProcessContent(context, output); - + output.Content.SetHtmlContent(GetInnerHtml(context, output)); + list.Add(new BreadcrumbItem { Html = output.Render(_encoder), @@ -36,21 +36,18 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb output.SuppressOutput(); } - protected virtual void ProcessContent(TagHelperContext context, TagHelperOutput output) + protected virtual string GetInnerHtml(TagHelperContext context, TagHelperOutput output) { if (string.IsNullOrWhiteSpace(TagHelper.Href)) { output.Attributes.Add("aria-current", "page"); - output.Content.Append(TagHelper.Title); + return _encoder.Encode(TagHelper.Title); } - else - { - var link = new TagBuilder("a"); - link.Attributes.Add("href", TagHelper.Href); - link.InnerHtml.Append(TagHelper.Title); - output.Content.AppendHtml(link); - } + var link = new TagBuilder("a"); + link.Attributes.Add("href", TagHelper.Href); + link.InnerHtml.Append(TagHelper.Title); + return RenderHtml(link); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs index d59de3bbcd..fd0ee54e59 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.Localization; +using System.Text; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal @@ -22,37 +23,41 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal if (TagHelper.Buttons != AbpModalButtons.None) { - ProcessButtons(context, output); + output.PostContent.SetHtmlContent(CreateContent()); } ProcessButtonsAlignment(output); } - protected virtual void ProcessButtons(TagHelperContext context, TagHelperOutput output) + protected virtual string CreateContent() { + var sb = new StringBuilder(); + switch (TagHelper.Buttons) { case AbpModalButtons.Cancel: - AddCancelButton(context, output); + sb.AppendLine(GetCancelButton()); break; case AbpModalButtons.Close: - AddCloseButton(context, output); + sb.AppendLine(GetCloseButton()); break; case AbpModalButtons.Save: - AddSaveButton(context, output); + sb.AppendLine(GetSaveButton()); break; case AbpModalButtons.Save | AbpModalButtons.Cancel: - AddSaveButton(context, output); - AddCancelButton(context, output); + sb.AppendLine(GetSaveButton()); + sb.AppendLine(GetCancelButton()); break; case AbpModalButtons.Save | AbpModalButtons.Close: - AddSaveButton(context, output); - AddCloseButton(context, output); + sb.AppendLine(GetSaveButton()); + sb.AppendLine(GetCloseButton()); break; } + + return sb.ToString(); } - protected virtual void AddSaveButton(TagHelperContext context, TagHelperOutput output) + protected virtual string GetSaveButton() { var icon = new TagBuilder("i"); icon.AddCssClass("fa"); @@ -61,39 +66,39 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal var span = new TagBuilder("span"); span.InnerHtml.Append(_localizer["Save"]); - var button = new TagBuilder("button"); - button.Attributes.Add("type", "submit"); - button.AddCssClass("btn"); - button.AddCssClass("btn-primary"); - button.Attributes.Add("data-busy-text", _localizer["SavingWithThreeDot"]); - button.InnerHtml.AppendHtml(icon); - button.InnerHtml.AppendHtml(span); + var element = new TagBuilder("button"); + element.Attributes.Add("type", "submit"); + element.AddCssClass("btn"); + element.AddCssClass("btn-primary"); + element.Attributes.Add("data-busy-text", _localizer["SavingWithThreeDot"]); + element.InnerHtml.AppendHtml(icon); + element.InnerHtml.AppendHtml(span); - output.PostContent.AppendHtml(button); + return RenderHtml(element); } - protected virtual void AddCloseButton(TagHelperContext context, TagHelperOutput output) + protected virtual string GetCloseButton() { - var button = new TagBuilder("button"); - button.Attributes.Add("type", "button"); - button.Attributes.Add("data-dismiss", "modal"); - button.AddCssClass("btn"); - button.AddCssClass("btn-secondary"); - button.InnerHtml.Append(_localizer["Close"]); + var element = new TagBuilder("button"); + element.Attributes.Add("type", "button"); + element.Attributes.Add("data-dismiss", "modal"); + element.AddCssClass("btn"); + element.AddCssClass("btn-secondary"); + element.InnerHtml.Append(_localizer["Close"]); - output.PostContent.AppendHtml(button); + return RenderHtml(element); } - protected virtual void AddCancelButton(TagHelperContext context, TagHelperOutput output) + protected virtual string GetCancelButton() { - var button = new TagBuilder("button"); - button.Attributes.Add("type", "button"); - button.Attributes.Add("data-dismiss", "modal"); - button.AddCssClass("btn"); - button.AddCssClass("btn-secondary"); - button.InnerHtml.Append(_localizer["Cancel"]); + var element = new TagBuilder("button"); + element.Attributes.Add("type", "button"); + element.Attributes.Add("data-dismiss", "modal"); + element.AddCssClass("btn"); + element.AddCssClass("btn-secondary"); + element.InnerHtml.Append(_localizer["Cancel"]); - output.PostContent.AppendHtml(button); + return RenderHtml(element); } protected virtual void ProcessButtonsAlignment(TagHelperOutput output) From 384cd057fde0c67281bd347796ab7e8260134d83 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Thu, 10 Sep 2020 15:10:35 +0200 Subject: [PATCH 007/114] fixed encoding issue --- .../TagHelpers/Popover/AbpPopoverTagHelperService.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs index 1d13437d8a..5ada0dfbc5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs @@ -2,7 +2,8 @@ using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; using System.Linq; - +using System.Web; + namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Popover { public class AbpPopoverTagHelperService : AbpTagHelperService @@ -65,7 +66,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Popover if (titleAttribute != null) { - span.Attributes.Add("title", titleAttribute.Value.ToString()); + span.Attributes.Add("title", HttpUtility.HtmlDecode(titleAttribute.Value.ToString())); } output.PreElement.SetHtmlContent(span.RenderStartTag()); From f20fcb1de7a21a57f0444a92468023a5c30fae10 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Fri, 11 Sep 2020 10:05:31 +0200 Subject: [PATCH 008/114] fixed encoding issue when using data uris --- .../TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs index 3d4d33eae3..c905ac5bed 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using System.Collections.Generic; using System.Text.Encodings.Web; +using System.Web; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; @@ -44,7 +45,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel { var img = new TagBuilder("img"); img.AddCssClass("d-block w-100"); - img.Attributes.Add("src", TagHelper.Src); + img.Attributes.Add("src", HttpUtility.HtmlDecode(TagHelper.Src)); img.Attributes.Add("alt", TagHelper.Alt); output.Content.SetHtmlContent(img); From ce9e3a7af2f11109350e2fd661ee377069620892 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Fri, 11 Sep 2020 10:05:59 +0200 Subject: [PATCH 009/114] fixed typo --- .../TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs index 59a45ec036..4b433ac495 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs @@ -17,11 +17,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb await output.GetChildContentAsync(); - var listTagBulder = GetOlTagBuilder(); + var listTagBuilder = GetOlTagBuilder(); - SetInnerList(context, output, list, listTagBulder); + SetInnerList(context, output, list, listTagBuilder); - output.Content.SetHtmlContent(listTagBulder); + output.Content.SetHtmlContent(listTagBuilder); } protected virtual TagBuilder GetOlTagBuilder() From 0dfee1825dc674b7578e76f9aecd32c08d2dee4a Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Fri, 11 Sep 2020 14:46:05 +0200 Subject: [PATCH 010/114] fixed encoding issue --- .../datatables/datatables-extensions.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index 8d85f6f6d8..f293ed3079 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -27,6 +27,10 @@ } }; + var appendEncoded = function ($element, unencoded) { + $element.append($('
    ').text(unencoded).html()); + }; + var _createDropdownItem = function (record, fieldItem) { var $li = $('
  • '); var $a = $(''); @@ -41,7 +45,7 @@ $a.append($("").addClass(fieldItem.iconClass + " mr-1")); } - $a.append(fieldItem.text); + appendEncoded($a, fieldItem.text); } if (fieldItem.action) { @@ -85,9 +89,9 @@ } if (field.text) { - $dropdownButton.append(field.text); + appendEncoded($dropdownButton, field.text); } else { - $dropdownButton.append(localize("DatatableActionDropdownDefaultText")); + appendEncoded($dropdownButton, localize("DatatableActionDropdownDefaultText")); } $dropdownButton From a725b4960f577b6a890cb3487a55f4a225f4674e Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Mon, 14 Sep 2020 09:36:58 +0200 Subject: [PATCH 011/114] escape html by default --- .../abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js index 01b29cdfd7..01d92e0cc6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js @@ -12,6 +12,12 @@ /* NOTIFICATION *********************************************/ var showNotification = function (type, message, title, options) { + if (!options) { + options = {}; + } + if (options.escapeHtml === undefined) { + options.escapeHtml = true; + } toastr[type](message, title, options); }; From 7c89603ada349337a5cb206930c051982f781f29 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 16 Sep 2020 12:04:51 +0800 Subject: [PATCH 012/114] Use TagBuilderExtensions instead of RenderHtml. --- .../TagHelpers/AbpTagHelperService.cs | 23 +--- .../AbpBreadcrumbItemTagHelperService.cs | 4 +- .../AbpCarouselItemTagHelperService.cs | 5 +- .../AbpAccordionItemTagHelperService.cs | 4 +- .../Form/AbpInputTagHelperService.cs | 4 +- .../Form/AbpRadioInputTagHelperService.cs | 2 +- .../Form/AbpSelectTagHelperService.cs | 10 +- .../Modal/AbpModalFooterTagHelperService.cs | 122 +++++++++--------- .../Modal/AbpModalHeaderTagHelperService.cs | 6 +- .../Tab/AbpTabDropdownTagHelperService.cs | 4 +- .../Tab/AbpTabLinkTagHelperService.cs | 8 +- .../TagHelpers/Tab/AbpTabTagHelperService.cs | 8 +- .../TagHelpers/Tab/AbpTabsTagHelperService.cs | 10 +- .../TagHelpers/TagBuilderExtensions.cs | 23 ++++ 14 files changed, 118 insertions(+), 115 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/TagBuilderExtensions.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs index f70de7a364..b53b2b4d56 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs @@ -1,15 +1,5 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Text.Encodings.Web; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc.ViewFeatures; +using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.TagHelpers; -using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; -using Volo.Abp.Threading; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers { @@ -52,14 +42,5 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers Process(context, output); return Task.CompletedTask; } - - protected virtual string RenderHtml(IHtmlContent content) - { - using (var writer = new StringWriter()) - { - content.WriteTo(writer, HtmlEncoder.Default); - return writer.ToString(); - } - } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs index 97eef50e79..5f649db448 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs @@ -47,7 +47,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb var link = new TagBuilder("a"); link.Attributes.Add("href", TagHelper.Href); link.InnerHtml.Append(TagHelper.Title); - return RenderHtml(link); + return link.ToHtmlString(); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs index c905ac5bed..d3736a384a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs @@ -2,7 +2,6 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using System.Collections.Generic; using System.Text.Encodings.Web; -using System.Web; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; @@ -45,7 +44,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel { var img = new TagBuilder("img"); img.AddCssClass("d-block w-100"); - img.Attributes.Add("src", HttpUtility.HtmlDecode(TagHelper.Src)); + img.Attributes.Add("src", TagHelper.Src); img.Attributes.Add("alt", TagHelper.Alt); output.Content.SetHtmlContent(img); @@ -81,4 +80,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs index 358b9d3054..6e532cb71d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs @@ -43,7 +43,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse header.Attributes.Add("id", GetHeadingId()); header.InnerHtml.AppendHtml(h5); - return RenderHtml(header); + return header.ToHtmlString(); } protected virtual string GetAccordionContentItem(TagHelperContext context, TagHelperOutput output, string content) @@ -61,7 +61,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse wrapper.Attributes.Add("data-parent", "#" + AbpAccordionParentIdPlaceholder); wrapper.InnerHtml.AppendHtml(cardBody); - return RenderHtml(wrapper); + return wrapper.ToHtmlString(); } protected virtual string GetHeadingId() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs index e629572658..5bebab0257 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs @@ -267,7 +267,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form label.AddCssClass("custom-control-label"); } - return RenderHtml(label); + return label.ToHtmlString(); } protected virtual string GetRequiredSymbol(TagHelperContext context, TagHelperOutput output) @@ -318,7 +318,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form small.Attributes.Add("id", idAttr?.Value?.ToString() + "InfoText"); small.AddCssClass("form-text text-muted"); - return RenderHtml(small); + return small.ToHtmlString(); } protected virtual async Task GetLabelAsHtmlUsingTagHelperAsync(TagHelperContext context, TagHelperOutput output, bool isCheckbox) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs index f3873e3d2e..8d5c704830 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs @@ -81,7 +81,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form wrapper.InnerHtml.AppendHtml(input); wrapper.InnerHtml.AppendHtml(label); - html.AppendLine(RenderHtml(wrapper)); + html.AppendLine(wrapper.ToHtmlString()); } return html.ToString(); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs index d978fe5f5e..017d58dc17 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs @@ -24,9 +24,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form private readonly IStringLocalizerFactory _stringLocalizerFactory; public AbpSelectTagHelperService( - IHtmlGenerator generator, - HtmlEncoder encoder, - IAbpTagHelperLocalizer tagHelperLocalizer, + IHtmlGenerator generator, + HtmlEncoder encoder, + IAbpTagHelperLocalizer tagHelperLocalizer, IStringLocalizerFactory stringLocalizerFactory) { _generator = generator; @@ -142,7 +142,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form label.Attributes.Add("for", GetIdAttributeValue(selectTag)); label.InnerHtml.Append(TagHelper.Label); - return RenderHtml(label) + GetRequiredSymbol(context, output); + return label.ToHtmlString() + GetRequiredSymbol(context, output); } return await GetLabelAsHtmlUsingTagHelperAsync(context, output) + GetRequiredSymbol(context, output); @@ -205,7 +205,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form small.Attributes.Add("id", idAttr?.Value?.ToString() + "InfoText"); small.AddCssClass("form-text text-muted"); - return RenderHtml(small); + return small.ToHtmlString(); } protected virtual List GetSelectItemsFromEnum(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs index fd0ee54e59..1bc6ab2f3a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalFooterTagHelperService.cs @@ -1,63 +1,63 @@ -using Localization.Resources.AbpUi; +using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.AspNetCore.Razor.TagHelpers; -using Microsoft.Extensions.Localization; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Microsoft.Extensions.Localization; using System.Text; -using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; - +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; + namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal -{ - public class AbpModalFooterTagHelperService : AbpTagHelperService - { - private readonly IStringLocalizer _localizer; - - public AbpModalFooterTagHelperService(IStringLocalizer localizer) - { - _localizer = localizer; - } - - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("modal-footer"); - - if (TagHelper.Buttons != AbpModalButtons.None) - { - output.PostContent.SetHtmlContent(CreateContent()); - } - - ProcessButtonsAlignment(output); +{ + public class AbpModalFooterTagHelperService : AbpTagHelperService + { + private readonly IStringLocalizer _localizer; + + public AbpModalFooterTagHelperService(IStringLocalizer localizer) + { + _localizer = localizer; + } + + public override void Process(TagHelperContext context, TagHelperOutput output) + { + output.TagName = "div"; + output.Attributes.AddClass("modal-footer"); + + if (TagHelper.Buttons != AbpModalButtons.None) + { + output.PostContent.SetHtmlContent(CreateContent()); + } + + ProcessButtonsAlignment(output); } - protected virtual string CreateContent() + protected virtual string CreateContent() { var sb = new StringBuilder(); - switch (TagHelper.Buttons) + switch (TagHelper.Buttons) { - case AbpModalButtons.Cancel: - sb.AppendLine(GetCancelButton()); - break; - case AbpModalButtons.Close: - sb.AppendLine(GetCloseButton()); - break; - case AbpModalButtons.Save: - sb.AppendLine(GetSaveButton()); - break; - case AbpModalButtons.Save | AbpModalButtons.Cancel: - sb.AppendLine(GetSaveButton()); - sb.AppendLine(GetCancelButton()); - break; - case AbpModalButtons.Save | AbpModalButtons.Close: - sb.AppendLine(GetSaveButton()); - sb.AppendLine(GetCloseButton()); + case AbpModalButtons.Cancel: + sb.AppendLine(GetCancelButton()); + break; + case AbpModalButtons.Close: + sb.AppendLine(GetCloseButton()); + break; + case AbpModalButtons.Save: + sb.AppendLine(GetSaveButton()); + break; + case AbpModalButtons.Save | AbpModalButtons.Cancel: + sb.AppendLine(GetSaveButton()); + sb.AppendLine(GetCancelButton()); + break; + case AbpModalButtons.Save | AbpModalButtons.Close: + sb.AppendLine(GetSaveButton()); + sb.AppendLine(GetCloseButton()); break; } return sb.ToString(); - } - - protected virtual string GetSaveButton() + } + + protected virtual string GetSaveButton() { var icon = new TagBuilder("i"); icon.AddCssClass("fa"); @@ -74,10 +74,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal element.InnerHtml.AppendHtml(icon); element.InnerHtml.AppendHtml(span); - return RenderHtml(element); - } - - protected virtual string GetCloseButton() + return element.ToHtmlString(); + } + + protected virtual string GetCloseButton() { var element = new TagBuilder("button"); element.Attributes.Add("type", "button"); @@ -86,10 +86,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal element.AddCssClass("btn-secondary"); element.InnerHtml.Append(_localizer["Close"]); - return RenderHtml(element); - } - - protected virtual string GetCancelButton() + return element.ToHtmlString(); + } + + protected virtual string GetCancelButton() { var element = new TagBuilder("button"); element.Attributes.Add("type", "button"); @@ -98,9 +98,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal element.AddCssClass("btn-secondary"); element.InnerHtml.Append(_localizer["Cancel"]); - return RenderHtml(element); - } - + return element.ToHtmlString(); + } + protected virtual void ProcessButtonsAlignment(TagHelperOutput output) { if (TagHelper.ButtonAlignment == ButtonsAlign.Default) @@ -108,6 +108,6 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal return; } output.Attributes.AddClass("justify-content-" + TagHelper.ButtonAlignment.ToString().ToLowerInvariant()); - } - } -} \ No newline at end of file + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs index 7ee1fdd0e9..7473245e96 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelperService.cs @@ -29,7 +29,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal title.AddCssClass("modal-title"); title.InnerHtml.Append(TagHelper.Title); - return RenderHtml(title); + return title.ToHtmlString(); } protected virtual string CreatePostContent() @@ -45,7 +45,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal button.Attributes.Add("aria-label", L["Close"].Value); button.InnerHtml.AppendHtml(span); - return RenderHtml(button); + return button.ToHtmlString(); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs index f244a750b0..8746e4a48b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelperService.cs @@ -51,7 +51,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab listItem.InnerHtml.AppendHtml(anchor); listItem.InnerHtml.AppendHtml(menu); - return RenderHtml(listItem); + return listItem.ToHtmlString(); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs index cd98e689e0..1955127114 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs @@ -11,7 +11,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { SetPlaceholderForNameIfNotProvided(); - + var tabHeader = GetTabHeaderItem(context, output); var tabHeaderItems = context.GetValue>(TabItems); @@ -37,7 +37,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab anchor.Attributes.Add("href", href); anchor.InnerHtml.Append(title); - return RenderHtml(anchor); + return anchor.ToHtmlString(); } else { @@ -51,7 +51,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab listItem.AddCssClass("nav-item"); listItem.InnerHtml.AppendHtml(anchor); - return RenderHtml(listItem); + return listItem.ToHtmlString(); } } @@ -63,4 +63,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab } } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs index 337033193a..9080e49d83 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs @@ -55,7 +55,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab anchor.InnerHtml.Append(title); - return RenderHtml(anchor); + return anchor.ToHtmlString(); } else { @@ -79,7 +79,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab listItem.AddCssClass("nav-item"); listItem.InnerHtml.AppendHtml(anchor); - return RenderHtml(listItem); + return listItem.ToHtmlString(); } } @@ -105,7 +105,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab wrapper.InnerHtml.AppendHtml(content); - return RenderHtml(wrapper); + return wrapper.ToHtmlString(); } protected virtual void SetPlaceholderForNameIfNotProvided() @@ -131,4 +131,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab .Select(a=> new TagHelperAttribute(a.Name.Substring(prefix.Length), a.Value)).ToList(); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs index 404354c8b2..92e50990a4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelperService.cs @@ -44,7 +44,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab } } - + protected virtual string CombineHeadersAndContents(TagHelperContext context, TagHelperOutput output, string headers, string contents) { var combined = new StringBuilder(); @@ -76,7 +76,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab listElement.Attributes.Add("role", "tablist"); listElement.InnerHtml.AppendHtml(headers); - return RenderHtml(listElement); + return listElement.ToHtmlString(); } protected virtual string SurroundContents(TagHelperContext context, TagHelperOutput output, string contents) @@ -88,7 +88,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab wrapper.Attributes.Add("id", id); wrapper.InnerHtml.AppendHtml(contents); - return RenderHtml(wrapper); + return wrapper.ToHtmlString(); } protected virtual string PlaceInsideColumn(string contents, int columnSize) @@ -97,7 +97,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab wrapper.AddCssClass("col-md-" + columnSize); wrapper.InnerHtml.AppendHtml(contents); - return RenderHtml(wrapper); + return wrapper.ToHtmlString(); } protected virtual void PlaceInsideRow(TagHelperOutput output) @@ -228,4 +228,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab return content.Replace(TabItemNamePlaceHolder, HtmlGenerator.Encode(TagHelper.Name) + "_" + index); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/TagBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/TagBuilderExtensions.cs new file mode 100644 index 0000000000..cab43b963b --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/TagBuilderExtensions.cs @@ -0,0 +1,23 @@ +using System.IO; +using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers +{ + internal static class TagBuilderExtensions + { + public static string ToHtmlString(this TagBuilder tagBuilder) + { + return tagBuilder.ToHtmlString(HtmlEncoder.Default); + } + + public static string ToHtmlString(this TagBuilder tagBuilder, HtmlEncoder htmlEncoder) + { + using (var writer = new StringWriter()) + { + tagBuilder.WriteTo(writer, htmlEncoder); + return writer.ToString(); + } + } + } +} From 6c10b33fef31c9b044c20f1a87ca663582ed0f3a Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Wed, 16 Sep 2020 08:54:10 +0200 Subject: [PATCH 013/114] revert a725b49 --- .../abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js index 01d92e0cc6..01b29cdfd7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js @@ -12,12 +12,6 @@ /* NOTIFICATION *********************************************/ var showNotification = function (type, message, title, options) { - if (!options) { - options = {}; - } - if (options.escapeHtml === undefined) { - options.escapeHtml = true; - } toastr[type](message, title, options); }; From 3cd00f58f6f484bc69b8728f6a584f1d64826fd4 Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Wed, 16 Sep 2020 09:42:06 +0200 Subject: [PATCH 014/114] added `busy-text-is-html` attribute --- .../TagHelpers/Button/AbpButtonTagHelper.cs | 2 ++ .../Button/AbpButtonTagHelperService.cs | 16 ++++++++++++++-- .../jquery/jquery-extensions.js | 9 +++++++-- .../Pages/Components/Buttons.cshtml | 3 +++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs index 56143ea059..f7ffa84c39 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs @@ -19,6 +19,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button public FontIconType IconType { get; set; } = FontIconType.FontAwesome; + public bool BusyTextIsHtml { get; set; } + public AbpButtonTagHelper(AbpButtonTagHelperService service) : base(service) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs index 63a61fd1f2..fb74d5c1da 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs @@ -1,13 +1,14 @@ -using System; -using Localization.Resources.AbpUi; +using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.Localization; +using System; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button { public class AbpButtonTagHelperService : AbpButtonTagHelperServiceBase { protected const string DataBusyTextAttributeName = "data-busy-text"; + protected const string DataBusyTextIsHtmlAttributeName = "data-busy-text-is-html"; protected IStringLocalizer L { get; } @@ -22,6 +23,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button output.TagName = "button"; AddType(context, output); AddBusyText(context, output); + AddBusyTextIsHtml(context, output); } protected virtual void AddType(TagHelperContext context, TagHelperOutput output) @@ -44,5 +46,15 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button output.Attributes.SetAttribute(DataBusyTextAttributeName, busyText); } + + protected virtual void AddBusyTextIsHtml(TagHelperContext context, TagHelperOutput output) + { + if (!TagHelper.BusyTextIsHtml) + { + return; + } + + output.Attributes.SetAttribute(DataBusyTextIsHtmlAttributeName, TagHelper.BusyTextIsHtml.ToString().ToLower()); + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js index 645e7a7259..9c99a20acd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js @@ -35,7 +35,12 @@ //change text if ($buttonInnerSpan.length && $button.attr('data-busy-text')) { $button.data('buttonOriginalText', $buttonInnerSpan.html()); - $buttonInnerSpan.text($button.attr('data-busy-text')); + + if ($button.data('busy-text-is-html')) { + $buttonInnerSpan.html($button.attr('data-busy-text')); + } else { + $buttonInnerSpan.text($button.attr('data-busy-text')); + } } $button.addClass('button-busy'); @@ -55,7 +60,7 @@ //restore text if ($buttonInnerSpan.length && $button.data('buttonOriginalText')) { - $buttonInnerSpan.text($button.data('buttonOriginalText')); + $buttonInnerSpan.html($button.data('buttonOriginalText')); } $button.removeClass('button-busy'); diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml index e58817d91c..c3aa9c0c92 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml @@ -295,6 +295,9 @@
  • busy-text: Sets "data-busy-text" attribute. Default value is localization of "ProcessingWithThreeDot" string.
  • +
  • + busy-text-is-html: Sets "data-busy-is-html" attribute. Default value is "false". +
  • \ No newline at end of file From bfc8e1e878b9f1ef6e6fc0a8587724947187207d Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Wed, 16 Sep 2020 09:50:06 +0200 Subject: [PATCH 015/114] `appendEncoded` -> `htmlEncode` --- .../datatables/datatables-extensions.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index f293ed3079..865eca6292 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -27,8 +27,8 @@ } }; - var appendEncoded = function ($element, unencoded) { - $element.append($('
    ').text(unencoded).html()); + var htmlEncode = function (html) { + return $('
    ').text(html).html(); }; var _createDropdownItem = function (record, fieldItem) { @@ -45,7 +45,7 @@ $a.append($("").addClass(fieldItem.iconClass + " mr-1")); } - appendEncoded($a, fieldItem.text); + $a.append(htmlEncode(fieldItem.text)); } if (fieldItem.action) { @@ -89,9 +89,9 @@ } if (field.text) { - appendEncoded($dropdownButton, field.text); + $dropdownButton.append(htmlEncode(fieldItem.text)); } else { - appendEncoded($dropdownButton, localize("DatatableActionDropdownDefaultText")); + $dropdownButton.append(htmlEncode(localize("DatatableActionDropdownDefaultText"))); } $dropdownButton From 7a1820c4130984db5ed5210cc580824f14fd14ed Mon Sep 17 00:00:00 2001 From: Maik Stegemann Date: Wed, 16 Sep 2020 10:46:54 +0200 Subject: [PATCH 016/114] fixed demo page --- .../Pages/Components/Carousel.cshtml | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml index 3763cd2601..4005b9d3d2 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml @@ -2,6 +2,11 @@ @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.CarouselsModel @{ ViewData["Title"] = "Carousels"; + + var firstSlide = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjQwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgODAwIDQwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4jaG9sZGVyXzE2MzQzY2ZiNzEyIHRleHQgeyBmaWxsOiM0NDQ7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtZmFtaWx5OkhlbHZldGljYSwgbW9ub3NwYWNlO2ZvbnQtc2l6ZTo0MHB0IH0gPC9zdHlsZT48L2RlZnM+PGcgaWQ9ImhvbGRlcl8xNjM0M2NmYjcxMiI+PHJlY3Qgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0MDAiIGZpbGw9IiM2NjYiPjwvcmVjdD48Zz48dGV4dCB4PSIyNDcuMjkxNjcxNzUyOTI5NyIgeT0iMjE4LjMiPkZpcnN0IHNsaWRlPC90ZXh0PjwvZz48L2c+PC9zdmc+"; + var secondSlide = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjQwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgODAwIDQwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4jaG9sZGVyXzE2MzQzY2ZiNzEyIHRleHQgeyBmaWxsOiM0NDQ7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtZmFtaWx5OkhlbHZldGljYSwgbW9ub3NwYWNlO2ZvbnQtc2l6ZTo0MHB0IH0gPC9zdHlsZT48L2RlZnM+PGcgaWQ9ImhvbGRlcl8xNjM0M2NmYjcxMiI+PHJlY3Qgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0MDAiIGZpbGw9IiM2NjYiPjwvcmVjdD48Zz48dGV4dCB4PSIyNDcuMjkxNjcxNzUyOTI5NyIgeT0iMjE4LjMiPlNlY29uZCBzbGlkZTwvdGV4dD48L2c+PC9nPjwvc3ZnPg=="; + var thirdSlide = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjQwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgODAwIDQwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4jaG9sZGVyXzE2MzQzY2ZiNzE0IHRleHQgeyBmaWxsOiMzMzM7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtZmFtaWx5OkhlbHZldGljYSwgbW9ub3NwYWNlO2ZvbnQtc2l6ZTo0MHB0IH0gPC9zdHlsZT48L2RlZnM+PGcgaWQ9ImhvbGRlcl8xNjM0M2NmYjcxNCI+PHJlY3Qgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0MDAiIGZpbGw9IiM1NTUiPjwvcmVjdD48Zz48dGV4dCB4PSIyNzYuOTc0OTk4NDc0MTIxMSIgeT0iMjE4LjMiPlRoaXJkIHNsaWRlPC90ZXh0PjwvZz48L2c+PC9zdmc+"; + } @section styles { @@ -31,11 +36,10 @@
    - - - - + + +
    @@ -76,9 +80,9 @@
    - - - + + +
    @@ -127,9 +131,9 @@
    - - - + + +
    @@ -183,7 +187,7 @@
    - +
    @@ -234,9 +238,9 @@
    - - - + + +
    From b7421341eeb78fa40a0ce08fe37bf6ff93648fe8 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Thu, 24 Sep 2020 10:19:36 +0800 Subject: [PATCH 017/114] Run yarn & gulp in Bootstrap.Demo project. --- .../wwwroot/libs/abp/luxon/abp.luxon.js | 46 + .../wwwroot/libs/luxon/luxon.js | 8258 +++++++++++++++++ .../wwwroot/libs/luxon/luxon.js.map | 1 + .../wwwroot/libs/luxon/luxon.min.js | 1 + .../wwwroot/libs/luxon/luxon.min.js.map | 1 + 5 files changed, 8307 insertions(+) create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js.map create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js.map diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js new file mode 100644 index 0000000000..b04de7cadf --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js @@ -0,0 +1,46 @@ +var abp = abp || {}; +(function () { + + if (!luxon) { + throw "abp/luxon library requires the luxon library included to the page!"; + } + + /* TIMING *************************************************/ + + abp.timing = abp.timing || {}; + + var setObjectValue = function (obj, property, value) { + if (typeof property === "string") { + property = property.split('.'); + } + + if (property.length > 1) { + var p = property.shift(); + setObjectValue(obj[p], property, value); + } else { + obj[property[0]] = value; + } + } + + var getObjectValue = function (obj, property) { + return property.split('.').reduce((a, v) => a[v], obj) + } + + abp.timing.convertFieldsToIsoDate = function (form, fields) { + for (var field of fields) { + var dateTime = luxon.DateTime + .fromFormat( + getObjectValue(form, field), + abp.localization.currentCulture.dateTimeFormat.shortDatePattern, + {locale: abp.localization.currentCulture.cultureName} + ); + + if (!dateTime.invalid) { + setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss")) + } + } + + return form; + } + +})(jQuery); diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js new file mode 100644 index 0000000000..aa6e8caa20 --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js @@ -0,0 +1,8258 @@ +var luxon = (function (exports) { + 'use strict'; + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); + } + + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } + + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); + } + + function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _createForOfIteratorHelperLoose(o) { + var i = 0; + + if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + i = o[Symbol.iterator](); + return i.next.bind(i); + } + + // these aren't really private, but nor are they really useful to document + + /** + * @private + */ + var LuxonError = /*#__PURE__*/function (_Error) { + _inheritsLoose(LuxonError, _Error); + + function LuxonError() { + return _Error.apply(this, arguments) || this; + } + + return LuxonError; + }( /*#__PURE__*/_wrapNativeSuper(Error)); + /** + * @private + */ + + + var InvalidDateTimeError = /*#__PURE__*/function (_LuxonError) { + _inheritsLoose(InvalidDateTimeError, _LuxonError); + + function InvalidDateTimeError(reason) { + return _LuxonError.call(this, "Invalid DateTime: " + reason.toMessage()) || this; + } + + return InvalidDateTimeError; + }(LuxonError); + /** + * @private + */ + + var InvalidIntervalError = /*#__PURE__*/function (_LuxonError2) { + _inheritsLoose(InvalidIntervalError, _LuxonError2); + + function InvalidIntervalError(reason) { + return _LuxonError2.call(this, "Invalid Interval: " + reason.toMessage()) || this; + } + + return InvalidIntervalError; + }(LuxonError); + /** + * @private + */ + + var InvalidDurationError = /*#__PURE__*/function (_LuxonError3) { + _inheritsLoose(InvalidDurationError, _LuxonError3); + + function InvalidDurationError(reason) { + return _LuxonError3.call(this, "Invalid Duration: " + reason.toMessage()) || this; + } + + return InvalidDurationError; + }(LuxonError); + /** + * @private + */ + + var ConflictingSpecificationError = /*#__PURE__*/function (_LuxonError4) { + _inheritsLoose(ConflictingSpecificationError, _LuxonError4); + + function ConflictingSpecificationError() { + return _LuxonError4.apply(this, arguments) || this; + } + + return ConflictingSpecificationError; + }(LuxonError); + /** + * @private + */ + + var InvalidUnitError = /*#__PURE__*/function (_LuxonError5) { + _inheritsLoose(InvalidUnitError, _LuxonError5); + + function InvalidUnitError(unit) { + return _LuxonError5.call(this, "Invalid unit " + unit) || this; + } + + return InvalidUnitError; + }(LuxonError); + /** + * @private + */ + + var InvalidArgumentError = /*#__PURE__*/function (_LuxonError6) { + _inheritsLoose(InvalidArgumentError, _LuxonError6); + + function InvalidArgumentError() { + return _LuxonError6.apply(this, arguments) || this; + } + + return InvalidArgumentError; + }(LuxonError); + /** + * @private + */ + + var ZoneIsAbstractError = /*#__PURE__*/function (_LuxonError7) { + _inheritsLoose(ZoneIsAbstractError, _LuxonError7); + + function ZoneIsAbstractError() { + return _LuxonError7.call(this, "Zone is an abstract class") || this; + } + + return ZoneIsAbstractError; + }(LuxonError); + + /** + * @private + */ + var n = "numeric", + s = "short", + l = "long"; + var DATE_SHORT = { + year: n, + month: n, + day: n + }; + var DATE_MED = { + year: n, + month: s, + day: n + }; + var DATE_FULL = { + year: n, + month: l, + day: n + }; + var DATE_HUGE = { + year: n, + month: l, + day: n, + weekday: l + }; + var TIME_SIMPLE = { + hour: n, + minute: n + }; + var TIME_WITH_SECONDS = { + hour: n, + minute: n, + second: n + }; + var TIME_WITH_SHORT_OFFSET = { + hour: n, + minute: n, + second: n, + timeZoneName: s + }; + var TIME_WITH_LONG_OFFSET = { + hour: n, + minute: n, + second: n, + timeZoneName: l + }; + var TIME_24_SIMPLE = { + hour: n, + minute: n, + hour12: false + }; + /** + * {@link toLocaleString}; format like '09:30:23', always 24-hour. + */ + + var TIME_24_WITH_SECONDS = { + hour: n, + minute: n, + second: n, + hour12: false + }; + /** + * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour. + */ + + var TIME_24_WITH_SHORT_OFFSET = { + hour: n, + minute: n, + second: n, + hour12: false, + timeZoneName: s + }; + /** + * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour. + */ + + var TIME_24_WITH_LONG_OFFSET = { + hour: n, + minute: n, + second: n, + hour12: false, + timeZoneName: l + }; + /** + * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is. + */ + + var DATETIME_SHORT = { + year: n, + month: n, + day: n, + hour: n, + minute: n + }; + /** + * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is. + */ + + var DATETIME_SHORT_WITH_SECONDS = { + year: n, + month: n, + day: n, + hour: n, + minute: n, + second: n + }; + var DATETIME_MED = { + year: n, + month: s, + day: n, + hour: n, + minute: n + }; + var DATETIME_MED_WITH_SECONDS = { + year: n, + month: s, + day: n, + hour: n, + minute: n, + second: n + }; + var DATETIME_MED_WITH_WEEKDAY = { + year: n, + month: s, + day: n, + weekday: s, + hour: n, + minute: n + }; + var DATETIME_FULL = { + year: n, + month: l, + day: n, + hour: n, + minute: n, + timeZoneName: s + }; + var DATETIME_FULL_WITH_SECONDS = { + year: n, + month: l, + day: n, + hour: n, + minute: n, + second: n, + timeZoneName: s + }; + var DATETIME_HUGE = { + year: n, + month: l, + day: n, + weekday: l, + hour: n, + minute: n, + timeZoneName: l + }; + var DATETIME_HUGE_WITH_SECONDS = { + year: n, + month: l, + day: n, + weekday: l, + hour: n, + minute: n, + second: n, + timeZoneName: l + }; + + /* + This is just a junk drawer, containing anything used across multiple classes. + Because Luxon is small(ish), this should stay small and we won't worry about splitting + it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area. + */ + /** + * @private + */ + // TYPES + + function isUndefined(o) { + return typeof o === "undefined"; + } + function isNumber(o) { + return typeof o === "number"; + } + function isInteger(o) { + return typeof o === "number" && o % 1 === 0; + } + function isString(o) { + return typeof o === "string"; + } + function isDate(o) { + return Object.prototype.toString.call(o) === "[object Date]"; + } // CAPABILITIES + + function hasIntl() { + try { + return typeof Intl !== "undefined" && Intl.DateTimeFormat; + } catch (e) { + return false; + } + } + function hasFormatToParts() { + return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts); + } + function hasRelative() { + try { + return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat; + } catch (e) { + return false; + } + } // OBJECTS AND ARRAYS + + function maybeArray(thing) { + return Array.isArray(thing) ? thing : [thing]; + } + function bestBy(arr, by, compare) { + if (arr.length === 0) { + return undefined; + } + + return arr.reduce(function (best, next) { + var pair = [by(next), next]; + + if (!best) { + return pair; + } else if (compare(best[0], pair[0]) === best[0]) { + return best; + } else { + return pair; + } + }, null)[1]; + } + function pick(obj, keys) { + return keys.reduce(function (a, k) { + a[k] = obj[k]; + return a; + }, {}); + } + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } // NUMBERS AND STRINGS + + function integerBetween(thing, bottom, top) { + return isInteger(thing) && thing >= bottom && thing <= top; + } // x % n but takes the sign of n instead of x + + function floorMod(x, n) { + return x - n * Math.floor(x / n); + } + function padStart(input, n) { + if (n === void 0) { + n = 2; + } + + if (input.toString().length < n) { + return ("0".repeat(n) + input).slice(-n); + } else { + return input.toString(); + } + } + function parseInteger(string) { + if (isUndefined(string) || string === null || string === "") { + return undefined; + } else { + return parseInt(string, 10); + } + } + function parseMillis(fraction) { + // Return undefined (instead of 0) in these cases, where fraction is not set + if (isUndefined(fraction) || fraction === null || fraction === "") { + return undefined; + } else { + var f = parseFloat("0." + fraction) * 1000; + return Math.floor(f); + } + } + function roundTo(number, digits, towardZero) { + if (towardZero === void 0) { + towardZero = false; + } + + var factor = Math.pow(10, digits), + rounder = towardZero ? Math.trunc : Math.round; + return rounder(number * factor) / factor; + } // DATE BASICS + + function isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + function daysInMonth(year, month) { + var modMonth = floorMod(month - 1, 12) + 1, + modYear = year + (month - modMonth) / 12; + + if (modMonth === 2) { + return isLeapYear(modYear) ? 29 : 28; + } else { + return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1]; + } + } // covert a calendar object to a local timestamp (epoch, but with the offset baked in) + + function objToLocalTS(obj) { + var d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond); // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that + + if (obj.year < 100 && obj.year >= 0) { + d = new Date(d); + d.setUTCFullYear(d.getUTCFullYear() - 1900); + } + + return +d; + } + function weeksInWeekYear(weekYear) { + var p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7, + last = weekYear - 1, + p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7; + return p1 === 4 || p2 === 3 ? 53 : 52; + } + function untruncateYear(year) { + if (year > 99) { + return year; + } else return year > 60 ? 1900 + year : 2000 + year; + } // PARSING + + function parseZoneInfo(ts, offsetFormat, locale, timeZone) { + if (timeZone === void 0) { + timeZone = null; + } + + var date = new Date(ts), + intlOpts = { + hour12: false, + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit" + }; + + if (timeZone) { + intlOpts.timeZone = timeZone; + } + + var modified = Object.assign({ + timeZoneName: offsetFormat + }, intlOpts), + intl = hasIntl(); + + if (intl && hasFormatToParts()) { + var parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find(function (m) { + return m.type.toLowerCase() === "timezonename"; + }); + return parsed ? parsed.value : null; + } else if (intl) { + // this probably doesn't work for all locales + var without = new Intl.DateTimeFormat(locale, intlOpts).format(date), + included = new Intl.DateTimeFormat(locale, modified).format(date), + diffed = included.substring(without.length), + trimmed = diffed.replace(/^[, \u200e]+/, ""); + return trimmed; + } else { + return null; + } + } // signedOffset('-5', '30') -> -330 + + function signedOffset(offHourStr, offMinuteStr) { + var offHour = parseInt(offHourStr, 10); // don't || this because we want to preserve -0 + + if (Number.isNaN(offHour)) { + offHour = 0; + } + + var offMin = parseInt(offMinuteStr, 10) || 0, + offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin; + return offHour * 60 + offMinSigned; + } // COERCION + + function asNumber(value) { + var numericValue = Number(value); + if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue)) throw new InvalidArgumentError("Invalid unit value " + value); + return numericValue; + } + function normalizeObject(obj, normalizer, nonUnitKeys) { + var normalized = {}; + + for (var u in obj) { + if (hasOwnProperty(obj, u)) { + if (nonUnitKeys.indexOf(u) >= 0) continue; + var v = obj[u]; + if (v === undefined || v === null) continue; + normalized[normalizer(u)] = asNumber(v); + } + } + + return normalized; + } + function formatOffset(offset, format) { + var hours = Math.trunc(offset / 60), + minutes = Math.abs(offset % 60), + sign = hours >= 0 && !Object.is(hours, -0) ? "+" : "-", + base = "" + sign + Math.abs(hours); + + switch (format) { + case "short": + return "" + sign + padStart(Math.abs(hours), 2) + ":" + padStart(minutes, 2); + + case "narrow": + return minutes > 0 ? base + ":" + minutes : base; + + case "techie": + return "" + sign + padStart(Math.abs(hours), 2) + padStart(minutes, 2); + + default: + throw new RangeError("Value format " + format + " is out of range for property format"); + } + } + function timeObject(obj) { + return pick(obj, ["hour", "minute", "second", "millisecond"]); + } + var ianaRegex = /[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?/; + + function stringify(obj) { + return JSON.stringify(obj, Object.keys(obj).sort()); + } + /** + * @private + */ + + + var monthsLong = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + var monthsShort = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + var monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]; + function months(length) { + switch (length) { + case "narrow": + return monthsNarrow; + + case "short": + return monthsShort; + + case "long": + return monthsLong; + + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; + + case "2-digit": + return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; + + default: + return null; + } + } + var weekdaysLong = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; + var weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + var weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"]; + function weekdays(length) { + switch (length) { + case "narrow": + return weekdaysNarrow; + + case "short": + return weekdaysShort; + + case "long": + return weekdaysLong; + + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7"]; + + default: + return null; + } + } + var meridiems = ["AM", "PM"]; + var erasLong = ["Before Christ", "Anno Domini"]; + var erasShort = ["BC", "AD"]; + var erasNarrow = ["B", "A"]; + function eras(length) { + switch (length) { + case "narrow": + return erasNarrow; + + case "short": + return erasShort; + + case "long": + return erasLong; + + default: + return null; + } + } + function meridiemForDateTime(dt) { + return meridiems[dt.hour < 12 ? 0 : 1]; + } + function weekdayForDateTime(dt, length) { + return weekdays(length)[dt.weekday - 1]; + } + function monthForDateTime(dt, length) { + return months(length)[dt.month - 1]; + } + function eraForDateTime(dt, length) { + return eras(length)[dt.year < 0 ? 0 : 1]; + } + function formatRelativeTime(unit, count, numeric, narrow) { + if (numeric === void 0) { + numeric = "always"; + } + + if (narrow === void 0) { + narrow = false; + } + + var units = { + years: ["year", "yr."], + quarters: ["quarter", "qtr."], + months: ["month", "mo."], + weeks: ["week", "wk."], + days: ["day", "day", "days"], + hours: ["hour", "hr."], + minutes: ["minute", "min."], + seconds: ["second", "sec."] + }; + var lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1; + + if (numeric === "auto" && lastable) { + var isDay = unit === "days"; + + switch (count) { + case 1: + return isDay ? "tomorrow" : "next " + units[unit][0]; + + case -1: + return isDay ? "yesterday" : "last " + units[unit][0]; + + case 0: + return isDay ? "today" : "this " + units[unit][0]; + + } + } + + var isInPast = Object.is(count, -0) || count < 0, + fmtValue = Math.abs(count), + singular = fmtValue === 1, + lilUnits = units[unit], + fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit; + return isInPast ? fmtValue + " " + fmtUnit + " ago" : "in " + fmtValue + " " + fmtUnit; + } + function formatString(knownFormat) { + // these all have the offsets removed because we don't have access to them + // without all the intl stuff this is backfilling + var filtered = pick(knownFormat, ["weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName", "hour12"]), + key = stringify(filtered), + dateTimeHuge = "EEEE, LLLL d, yyyy, h:mm a"; + + switch (key) { + case stringify(DATE_SHORT): + return "M/d/yyyy"; + + case stringify(DATE_MED): + return "LLL d, yyyy"; + + case stringify(DATE_FULL): + return "LLLL d, yyyy"; + + case stringify(DATE_HUGE): + return "EEEE, LLLL d, yyyy"; + + case stringify(TIME_SIMPLE): + return "h:mm a"; + + case stringify(TIME_WITH_SECONDS): + return "h:mm:ss a"; + + case stringify(TIME_WITH_SHORT_OFFSET): + return "h:mm a"; + + case stringify(TIME_WITH_LONG_OFFSET): + return "h:mm a"; + + case stringify(TIME_24_SIMPLE): + return "HH:mm"; + + case stringify(TIME_24_WITH_SECONDS): + return "HH:mm:ss"; + + case stringify(TIME_24_WITH_SHORT_OFFSET): + return "HH:mm"; + + case stringify(TIME_24_WITH_LONG_OFFSET): + return "HH:mm"; + + case stringify(DATETIME_SHORT): + return "M/d/yyyy, h:mm a"; + + case stringify(DATETIME_MED): + return "LLL d, yyyy, h:mm a"; + + case stringify(DATETIME_FULL): + return "LLLL d, yyyy, h:mm a"; + + case stringify(DATETIME_HUGE): + return dateTimeHuge; + + case stringify(DATETIME_SHORT_WITH_SECONDS): + return "M/d/yyyy, h:mm:ss a"; + + case stringify(DATETIME_MED_WITH_SECONDS): + return "LLL d, yyyy, h:mm:ss a"; + + case stringify(DATETIME_MED_WITH_WEEKDAY): + return "EEE, d LLL yyyy, h:mm a"; + + case stringify(DATETIME_FULL_WITH_SECONDS): + return "LLLL d, yyyy, h:mm:ss a"; + + case stringify(DATETIME_HUGE_WITH_SECONDS): + return "EEEE, LLLL d, yyyy, h:mm:ss a"; + + default: + return dateTimeHuge; + } + } + + function stringifyTokens(splits, tokenToString) { + var s = ""; + + for (var _iterator = _createForOfIteratorHelperLoose(splits), _step; !(_step = _iterator()).done;) { + var token = _step.value; + + if (token.literal) { + s += token.val; + } else { + s += tokenToString(token.val); + } + } + + return s; + } + + var _macroTokenToFormatOpts = { + D: DATE_SHORT, + DD: DATE_MED, + DDD: DATE_FULL, + DDDD: DATE_HUGE, + t: TIME_SIMPLE, + tt: TIME_WITH_SECONDS, + ttt: TIME_WITH_SHORT_OFFSET, + tttt: TIME_WITH_LONG_OFFSET, + T: TIME_24_SIMPLE, + TT: TIME_24_WITH_SECONDS, + TTT: TIME_24_WITH_SHORT_OFFSET, + TTTT: TIME_24_WITH_LONG_OFFSET, + f: DATETIME_SHORT, + ff: DATETIME_MED, + fff: DATETIME_FULL, + ffff: DATETIME_HUGE, + F: DATETIME_SHORT_WITH_SECONDS, + FF: DATETIME_MED_WITH_SECONDS, + FFF: DATETIME_FULL_WITH_SECONDS, + FFFF: DATETIME_HUGE_WITH_SECONDS + }; + /** + * @private + */ + + var Formatter = /*#__PURE__*/function () { + Formatter.create = function create(locale, opts) { + if (opts === void 0) { + opts = {}; + } + + return new Formatter(locale, opts); + }; + + Formatter.parseFormat = function parseFormat(fmt) { + var current = null, + currentFull = "", + bracketed = false; + var splits = []; + + for (var i = 0; i < fmt.length; i++) { + var c = fmt.charAt(i); + + if (c === "'") { + if (currentFull.length > 0) { + splits.push({ + literal: bracketed, + val: currentFull + }); + } + + current = null; + currentFull = ""; + bracketed = !bracketed; + } else if (bracketed) { + currentFull += c; + } else if (c === current) { + currentFull += c; + } else { + if (currentFull.length > 0) { + splits.push({ + literal: false, + val: currentFull + }); + } + + currentFull = c; + current = c; + } + } + + if (currentFull.length > 0) { + splits.push({ + literal: bracketed, + val: currentFull + }); + } + + return splits; + }; + + Formatter.macroTokenToFormatOpts = function macroTokenToFormatOpts(token) { + return _macroTokenToFormatOpts[token]; + }; + + function Formatter(locale, formatOpts) { + this.opts = formatOpts; + this.loc = locale; + this.systemLoc = null; + } + + var _proto = Formatter.prototype; + + _proto.formatWithSystemDefault = function formatWithSystemDefault(dt, opts) { + if (this.systemLoc === null) { + this.systemLoc = this.loc.redefaultToSystem(); + } + + var df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.format(); + }; + + _proto.formatDateTime = function formatDateTime(dt, opts) { + if (opts === void 0) { + opts = {}; + } + + var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.format(); + }; + + _proto.formatDateTimeParts = function formatDateTimeParts(dt, opts) { + if (opts === void 0) { + opts = {}; + } + + var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.formatToParts(); + }; + + _proto.resolvedOptions = function resolvedOptions(dt, opts) { + if (opts === void 0) { + opts = {}; + } + + var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.resolvedOptions(); + }; + + _proto.num = function num(n, p) { + if (p === void 0) { + p = 0; + } + + // we get some perf out of doing this here, annoyingly + if (this.opts.forceSimple) { + return padStart(n, p); + } + + var opts = Object.assign({}, this.opts); + + if (p > 0) { + opts.padTo = p; + } + + return this.loc.numberFormatter(opts).format(n); + }; + + _proto.formatDateTimeFromString = function formatDateTimeFromString(dt, fmt) { + var _this = this; + + var knownEnglish = this.loc.listingMode() === "en", + useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== "gregory" && hasFormatToParts(), + string = function string(opts, extract) { + return _this.loc.extract(dt, opts, extract); + }, + formatOffset = function formatOffset(opts) { + if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) { + return "Z"; + } + + return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : ""; + }, + meridiem = function meridiem() { + return knownEnglish ? meridiemForDateTime(dt) : string({ + hour: "numeric", + hour12: true + }, "dayperiod"); + }, + month = function month(length, standalone) { + return knownEnglish ? monthForDateTime(dt, length) : string(standalone ? { + month: length + } : { + month: length, + day: "numeric" + }, "month"); + }, + weekday = function weekday(length, standalone) { + return knownEnglish ? weekdayForDateTime(dt, length) : string(standalone ? { + weekday: length + } : { + weekday: length, + month: "long", + day: "numeric" + }, "weekday"); + }, + maybeMacro = function maybeMacro(token) { + var formatOpts = Formatter.macroTokenToFormatOpts(token); + + if (formatOpts) { + return _this.formatWithSystemDefault(dt, formatOpts); + } else { + return token; + } + }, + era = function era(length) { + return knownEnglish ? eraForDateTime(dt, length) : string({ + era: length + }, "era"); + }, + tokenToString = function tokenToString(token) { + // Where possible: http://cldr.unicode.org/translation/date-time#TOC-Stand-Alone-vs.-Format-Styles + switch (token) { + // ms + case "S": + return _this.num(dt.millisecond); + + case "u": // falls through + + case "SSS": + return _this.num(dt.millisecond, 3); + // seconds + + case "s": + return _this.num(dt.second); + + case "ss": + return _this.num(dt.second, 2); + // minutes + + case "m": + return _this.num(dt.minute); + + case "mm": + return _this.num(dt.minute, 2); + // hours + + case "h": + return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12); + + case "hh": + return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2); + + case "H": + return _this.num(dt.hour); + + case "HH": + return _this.num(dt.hour, 2); + // offset + + case "Z": + // like +6 + return formatOffset({ + format: "narrow", + allowZ: _this.opts.allowZ + }); + + case "ZZ": + // like +06:00 + return formatOffset({ + format: "short", + allowZ: _this.opts.allowZ + }); + + case "ZZZ": + // like +0600 + return formatOffset({ + format: "techie", + allowZ: _this.opts.allowZ + }); + + case "ZZZZ": + // like EST + return dt.zone.offsetName(dt.ts, { + format: "short", + locale: _this.loc.locale + }); + + case "ZZZZZ": + // like Eastern Standard Time + return dt.zone.offsetName(dt.ts, { + format: "long", + locale: _this.loc.locale + }); + // zone + + case "z": + // like America/New_York + return dt.zoneName; + // meridiems + + case "a": + return meridiem(); + // dates + + case "d": + return useDateTimeFormatter ? string({ + day: "numeric" + }, "day") : _this.num(dt.day); + + case "dd": + return useDateTimeFormatter ? string({ + day: "2-digit" + }, "day") : _this.num(dt.day, 2); + // weekdays - standalone + + case "c": + // like 1 + return _this.num(dt.weekday); + + case "ccc": + // like 'Tues' + return weekday("short", true); + + case "cccc": + // like 'Tuesday' + return weekday("long", true); + + case "ccccc": + // like 'T' + return weekday("narrow", true); + // weekdays - format + + case "E": + // like 1 + return _this.num(dt.weekday); + + case "EEE": + // like 'Tues' + return weekday("short", false); + + case "EEEE": + // like 'Tuesday' + return weekday("long", false); + + case "EEEEE": + // like 'T' + return weekday("narrow", false); + // months - standalone + + case "L": + // like 1 + return useDateTimeFormatter ? string({ + month: "numeric", + day: "numeric" + }, "month") : _this.num(dt.month); + + case "LL": + // like 01, doesn't seem to work + return useDateTimeFormatter ? string({ + month: "2-digit", + day: "numeric" + }, "month") : _this.num(dt.month, 2); + + case "LLL": + // like Jan + return month("short", true); + + case "LLLL": + // like January + return month("long", true); + + case "LLLLL": + // like J + return month("narrow", true); + // months - format + + case "M": + // like 1 + return useDateTimeFormatter ? string({ + month: "numeric" + }, "month") : _this.num(dt.month); + + case "MM": + // like 01 + return useDateTimeFormatter ? string({ + month: "2-digit" + }, "month") : _this.num(dt.month, 2); + + case "MMM": + // like Jan + return month("short", false); + + case "MMMM": + // like January + return month("long", false); + + case "MMMMM": + // like J + return month("narrow", false); + // years + + case "y": + // like 2014 + return useDateTimeFormatter ? string({ + year: "numeric" + }, "year") : _this.num(dt.year); + + case "yy": + // like 14 + return useDateTimeFormatter ? string({ + year: "2-digit" + }, "year") : _this.num(dt.year.toString().slice(-2), 2); + + case "yyyy": + // like 0012 + return useDateTimeFormatter ? string({ + year: "numeric" + }, "year") : _this.num(dt.year, 4); + + case "yyyyyy": + // like 000012 + return useDateTimeFormatter ? string({ + year: "numeric" + }, "year") : _this.num(dt.year, 6); + // eras + + case "G": + // like AD + return era("short"); + + case "GG": + // like Anno Domini + return era("long"); + + case "GGGGG": + return era("narrow"); + + case "kk": + return _this.num(dt.weekYear.toString().slice(-2), 2); + + case "kkkk": + return _this.num(dt.weekYear, 4); + + case "W": + return _this.num(dt.weekNumber); + + case "WW": + return _this.num(dt.weekNumber, 2); + + case "o": + return _this.num(dt.ordinal); + + case "ooo": + return _this.num(dt.ordinal, 3); + + case "q": + // like 1 + return _this.num(dt.quarter); + + case "qq": + // like 01 + return _this.num(dt.quarter, 2); + + case "X": + return _this.num(Math.floor(dt.ts / 1000)); + + case "x": + return _this.num(dt.ts); + + default: + return maybeMacro(token); + } + }; + + return stringifyTokens(Formatter.parseFormat(fmt), tokenToString); + }; + + _proto.formatDurationFromString = function formatDurationFromString(dur, fmt) { + var _this2 = this; + + var tokenToField = function tokenToField(token) { + switch (token[0]) { + case "S": + return "millisecond"; + + case "s": + return "second"; + + case "m": + return "minute"; + + case "h": + return "hour"; + + case "d": + return "day"; + + case "M": + return "month"; + + case "y": + return "year"; + + default: + return null; + } + }, + tokenToString = function tokenToString(lildur) { + return function (token) { + var mapped = tokenToField(token); + + if (mapped) { + return _this2.num(lildur.get(mapped), token.length); + } else { + return token; + } + }; + }, + tokens = Formatter.parseFormat(fmt), + realTokens = tokens.reduce(function (found, _ref) { + var literal = _ref.literal, + val = _ref.val; + return literal ? found : found.concat(val); + }, []), + collapsed = dur.shiftTo.apply(dur, realTokens.map(tokenToField).filter(function (t) { + return t; + })); + + return stringifyTokens(tokens, tokenToString(collapsed)); + }; + + return Formatter; + }(); + + var Invalid = /*#__PURE__*/function () { + function Invalid(reason, explanation) { + this.reason = reason; + this.explanation = explanation; + } + + var _proto = Invalid.prototype; + + _proto.toMessage = function toMessage() { + if (this.explanation) { + return this.reason + ": " + this.explanation; + } else { + return this.reason; + } + }; + + return Invalid; + }(); + + /** + * @interface + */ + + var Zone = /*#__PURE__*/function () { + function Zone() {} + + var _proto = Zone.prototype; + + /** + * Returns the offset's common name (such as EST) at the specified timestamp + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the name + * @param {Object} opts - Options to affect the format + * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'. + * @param {string} opts.locale - What locale to return the offset name in. + * @return {string} + */ + _proto.offsetName = function offsetName(ts, opts) { + throw new ZoneIsAbstractError(); + } + /** + * Returns the offset's value as a string + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the offset + * @param {string} format - What style of offset to return. + * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively + * @return {string} + */ + ; + + _proto.formatOffset = function formatOffset(ts, format) { + throw new ZoneIsAbstractError(); + } + /** + * Return the offset in minutes for this zone at the specified timestamp. + * @abstract + * @param {number} ts - Epoch milliseconds for which to compute the offset + * @return {number} + */ + ; + + _proto.offset = function offset(ts) { + throw new ZoneIsAbstractError(); + } + /** + * Return whether this Zone is equal to another zone + * @abstract + * @param {Zone} otherZone - the zone to compare + * @return {boolean} + */ + ; + + _proto.equals = function equals(otherZone) { + throw new ZoneIsAbstractError(); + } + /** + * Return whether this Zone is valid. + * @abstract + * @type {boolean} + */ + ; + + _createClass(Zone, [{ + key: "type", + + /** + * The type of zone + * @abstract + * @type {string} + */ + get: function get() { + throw new ZoneIsAbstractError(); + } + /** + * The name of this zone. + * @abstract + * @type {string} + */ + + }, { + key: "name", + get: function get() { + throw new ZoneIsAbstractError(); + } + /** + * Returns whether the offset is known to be fixed for the whole year. + * @abstract + * @type {boolean} + */ + + }, { + key: "universal", + get: function get() { + throw new ZoneIsAbstractError(); + } + }, { + key: "isValid", + get: function get() { + throw new ZoneIsAbstractError(); + } + }]); + + return Zone; + }(); + + var singleton = null; + /** + * Represents the local zone for this Javascript environment. + * @implements {Zone} + */ + + var LocalZone = /*#__PURE__*/function (_Zone) { + _inheritsLoose(LocalZone, _Zone); + + function LocalZone() { + return _Zone.apply(this, arguments) || this; + } + + var _proto = LocalZone.prototype; + + /** @override **/ + _proto.offsetName = function offsetName(ts, _ref) { + var format = _ref.format, + locale = _ref.locale; + return parseZoneInfo(ts, format, locale); + } + /** @override **/ + ; + + _proto.formatOffset = function formatOffset$1(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + ; + + _proto.offset = function offset(ts) { + return -new Date(ts).getTimezoneOffset(); + } + /** @override **/ + ; + + _proto.equals = function equals(otherZone) { + return otherZone.type === "local"; + } + /** @override **/ + ; + + _createClass(LocalZone, [{ + key: "type", + + /** @override **/ + get: function get() { + return "local"; + } + /** @override **/ + + }, { + key: "name", + get: function get() { + if (hasIntl()) { + return new Intl.DateTimeFormat().resolvedOptions().timeZone; + } else return "local"; + } + /** @override **/ + + }, { + key: "universal", + get: function get() { + return false; + } + }, { + key: "isValid", + get: function get() { + return true; + } + }], [{ + key: "instance", + + /** + * Get a singleton instance of the local zone + * @return {LocalZone} + */ + get: function get() { + if (singleton === null) { + singleton = new LocalZone(); + } + + return singleton; + } + }]); + + return LocalZone; + }(Zone); + + var matchingRegex = RegExp("^" + ianaRegex.source + "$"); + var dtfCache = {}; + + function makeDTF(zone) { + if (!dtfCache[zone]) { + dtfCache[zone] = new Intl.DateTimeFormat("en-US", { + hour12: false, + timeZone: zone, + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit" + }); + } + + return dtfCache[zone]; + } + + var typeToPos = { + year: 0, + month: 1, + day: 2, + hour: 3, + minute: 4, + second: 5 + }; + + function hackyOffset(dtf, date) { + var formatted = dtf.format(date).replace(/\u200E/g, ""), + parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted), + fMonth = parsed[1], + fDay = parsed[2], + fYear = parsed[3], + fHour = parsed[4], + fMinute = parsed[5], + fSecond = parsed[6]; + return [fYear, fMonth, fDay, fHour, fMinute, fSecond]; + } + + function partsOffset(dtf, date) { + var formatted = dtf.formatToParts(date), + filled = []; + + for (var i = 0; i < formatted.length; i++) { + var _formatted$i = formatted[i], + type = _formatted$i.type, + value = _formatted$i.value, + pos = typeToPos[type]; + + if (!isUndefined(pos)) { + filled[pos] = parseInt(value, 10); + } + } + + return filled; + } + + var ianaZoneCache = {}; + /** + * A zone identified by an IANA identifier, like America/New_York + * @implements {Zone} + */ + + var IANAZone = /*#__PURE__*/function (_Zone) { + _inheritsLoose(IANAZone, _Zone); + + /** + * @param {string} name - Zone name + * @return {IANAZone} + */ + IANAZone.create = function create(name) { + if (!ianaZoneCache[name]) { + ianaZoneCache[name] = new IANAZone(name); + } + + return ianaZoneCache[name]; + } + /** + * Reset local caches. Should only be necessary in testing scenarios. + * @return {void} + */ + ; + + IANAZone.resetCache = function resetCache() { + ianaZoneCache = {}; + dtfCache = {}; + } + /** + * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that. + * @param {string} s - The string to check validity on + * @example IANAZone.isValidSpecifier("America/New_York") //=> true + * @example IANAZone.isValidSpecifier("Fantasia/Castle") //=> true + * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false + * @return {boolean} + */ + ; + + IANAZone.isValidSpecifier = function isValidSpecifier(s) { + return !!(s && s.match(matchingRegex)); + } + /** + * Returns whether the provided string identifies a real zone + * @param {string} zone - The string to check + * @example IANAZone.isValidZone("America/New_York") //=> true + * @example IANAZone.isValidZone("Fantasia/Castle") //=> false + * @example IANAZone.isValidZone("Sport~~blorp") //=> false + * @return {boolean} + */ + ; + + IANAZone.isValidZone = function isValidZone(zone) { + try { + new Intl.DateTimeFormat("en-US", { + timeZone: zone + }).format(); + return true; + } catch (e) { + return false; + } + } // Etc/GMT+8 -> -480 + + /** @ignore */ + ; + + IANAZone.parseGMTOffset = function parseGMTOffset(specifier) { + if (specifier) { + var match = specifier.match(/^Etc\/GMT([+-]\d{1,2})$/i); + + if (match) { + return -60 * parseInt(match[1]); + } + } + + return null; + }; + + function IANAZone(name) { + var _this; + + _this = _Zone.call(this) || this; + /** @private **/ + + _this.zoneName = name; + /** @private **/ + + _this.valid = IANAZone.isValidZone(name); + return _this; + } + /** @override **/ + + + var _proto = IANAZone.prototype; + + /** @override **/ + _proto.offsetName = function offsetName(ts, _ref) { + var format = _ref.format, + locale = _ref.locale; + return parseZoneInfo(ts, format, locale, this.name); + } + /** @override **/ + ; + + _proto.formatOffset = function formatOffset$1(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + ; + + _proto.offset = function offset(ts) { + var date = new Date(ts), + dtf = makeDTF(this.name), + _ref2 = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date), + year = _ref2[0], + month = _ref2[1], + day = _ref2[2], + hour = _ref2[3], + minute = _ref2[4], + second = _ref2[5], + adjustedHour = hour === 24 ? 0 : hour; + + var asUTC = objToLocalTS({ + year: year, + month: month, + day: day, + hour: adjustedHour, + minute: minute, + second: second, + millisecond: 0 + }); + var asTS = +date; + var over = asTS % 1000; + asTS -= over >= 0 ? over : 1000 + over; + return (asUTC - asTS) / (60 * 1000); + } + /** @override **/ + ; + + _proto.equals = function equals(otherZone) { + return otherZone.type === "iana" && otherZone.name === this.name; + } + /** @override **/ + ; + + _createClass(IANAZone, [{ + key: "type", + get: function get() { + return "iana"; + } + /** @override **/ + + }, { + key: "name", + get: function get() { + return this.zoneName; + } + /** @override **/ + + }, { + key: "universal", + get: function get() { + return false; + } + }, { + key: "isValid", + get: function get() { + return this.valid; + } + }]); + + return IANAZone; + }(Zone); + + var singleton$1 = null; + /** + * A zone with a fixed offset (meaning no DST) + * @implements {Zone} + */ + + var FixedOffsetZone = /*#__PURE__*/function (_Zone) { + _inheritsLoose(FixedOffsetZone, _Zone); + + /** + * Get an instance with a specified offset + * @param {number} offset - The offset in minutes + * @return {FixedOffsetZone} + */ + FixedOffsetZone.instance = function instance(offset) { + return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset); + } + /** + * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6" + * @param {string} s - The offset string to parse + * @example FixedOffsetZone.parseSpecifier("UTC+6") + * @example FixedOffsetZone.parseSpecifier("UTC+06") + * @example FixedOffsetZone.parseSpecifier("UTC-6:00") + * @return {FixedOffsetZone} + */ + ; + + FixedOffsetZone.parseSpecifier = function parseSpecifier(s) { + if (s) { + var r = s.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); + + if (r) { + return new FixedOffsetZone(signedOffset(r[1], r[2])); + } + } + + return null; + }; + + _createClass(FixedOffsetZone, null, [{ + key: "utcInstance", + + /** + * Get a singleton instance of UTC + * @return {FixedOffsetZone} + */ + get: function get() { + if (singleton$1 === null) { + singleton$1 = new FixedOffsetZone(0); + } + + return singleton$1; + } + }]); + + function FixedOffsetZone(offset) { + var _this; + + _this = _Zone.call(this) || this; + /** @private **/ + + _this.fixed = offset; + return _this; + } + /** @override **/ + + + var _proto = FixedOffsetZone.prototype; + + /** @override **/ + _proto.offsetName = function offsetName() { + return this.name; + } + /** @override **/ + ; + + _proto.formatOffset = function formatOffset$1(ts, format) { + return formatOffset(this.fixed, format); + } + /** @override **/ + ; + + /** @override **/ + _proto.offset = function offset() { + return this.fixed; + } + /** @override **/ + ; + + _proto.equals = function equals(otherZone) { + return otherZone.type === "fixed" && otherZone.fixed === this.fixed; + } + /** @override **/ + ; + + _createClass(FixedOffsetZone, [{ + key: "type", + get: function get() { + return "fixed"; + } + /** @override **/ + + }, { + key: "name", + get: function get() { + return this.fixed === 0 ? "UTC" : "UTC" + formatOffset(this.fixed, "narrow"); + } + }, { + key: "universal", + get: function get() { + return true; + } + }, { + key: "isValid", + get: function get() { + return true; + } + }]); + + return FixedOffsetZone; + }(Zone); + + /** + * A zone that failed to parse. You should never need to instantiate this. + * @implements {Zone} + */ + + var InvalidZone = /*#__PURE__*/function (_Zone) { + _inheritsLoose(InvalidZone, _Zone); + + function InvalidZone(zoneName) { + var _this; + + _this = _Zone.call(this) || this; + /** @private */ + + _this.zoneName = zoneName; + return _this; + } + /** @override **/ + + + var _proto = InvalidZone.prototype; + + /** @override **/ + _proto.offsetName = function offsetName() { + return null; + } + /** @override **/ + ; + + _proto.formatOffset = function formatOffset() { + return ""; + } + /** @override **/ + ; + + _proto.offset = function offset() { + return NaN; + } + /** @override **/ + ; + + _proto.equals = function equals() { + return false; + } + /** @override **/ + ; + + _createClass(InvalidZone, [{ + key: "type", + get: function get() { + return "invalid"; + } + /** @override **/ + + }, { + key: "name", + get: function get() { + return this.zoneName; + } + /** @override **/ + + }, { + key: "universal", + get: function get() { + return false; + } + }, { + key: "isValid", + get: function get() { + return false; + } + }]); + + return InvalidZone; + }(Zone); + + /** + * @private + */ + function normalizeZone(input, defaultZone) { + var offset; + + if (isUndefined(input) || input === null) { + return defaultZone; + } else if (input instanceof Zone) { + return input; + } else if (isString(input)) { + var lowered = input.toLowerCase(); + if (lowered === "local") return defaultZone;else if (lowered === "utc" || lowered === "gmt") return FixedOffsetZone.utcInstance;else if ((offset = IANAZone.parseGMTOffset(input)) != null) { + // handle Etc/GMT-4, which V8 chokes on + return FixedOffsetZone.instance(offset); + } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input); + } else if (isNumber(input)) { + return FixedOffsetZone.instance(input); + } else if (typeof input === "object" && input.offset && typeof input.offset === "number") { + // This is dumb, but the instanceof check above doesn't seem to really work + // so we're duck checking it + return input; + } else { + return new InvalidZone(input); + } + } + + var now = function now() { + return Date.now(); + }, + defaultZone = null, + // not setting this directly to LocalZone.instance bc loading order issues + defaultLocale = null, + defaultNumberingSystem = null, + defaultOutputCalendar = null, + throwOnInvalid = false; + /** + * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here. + */ + + + var Settings = /*#__PURE__*/function () { + function Settings() {} + + /** + * Reset Luxon's global caches. Should only be necessary in testing scenarios. + * @return {void} + */ + Settings.resetCaches = function resetCaches() { + Locale.resetCache(); + IANAZone.resetCache(); + }; + + _createClass(Settings, null, [{ + key: "now", + + /** + * Get the callback for returning the current timestamp. + * @type {function} + */ + get: function get() { + return now; + } + /** + * Set the callback for returning the current timestamp. + * The function should return a number, which will be interpreted as an Epoch millisecond count + * @type {function} + * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future + * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time + */ + , + set: function set(n) { + now = n; + } + /** + * Get the default time zone to create DateTimes in. + * @type {string} + */ + + }, { + key: "defaultZoneName", + get: function get() { + return Settings.defaultZone.name; + } + /** + * Set the default time zone to create DateTimes in. Does not affect existing instances. + * @type {string} + */ + , + set: function set(z) { + if (!z) { + defaultZone = null; + } else { + defaultZone = normalizeZone(z); + } + } + /** + * Get the default time zone object to create DateTimes in. Does not affect existing instances. + * @type {Zone} + */ + + }, { + key: "defaultZone", + get: function get() { + return defaultZone || LocalZone.instance; + } + /** + * Get the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + + }, { + key: "defaultLocale", + get: function get() { + return defaultLocale; + } + /** + * Set the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + , + set: function set(locale) { + defaultLocale = locale; + } + /** + * Get the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + + }, { + key: "defaultNumberingSystem", + get: function get() { + return defaultNumberingSystem; + } + /** + * Set the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + , + set: function set(numberingSystem) { + defaultNumberingSystem = numberingSystem; + } + /** + * Get the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + + }, { + key: "defaultOutputCalendar", + get: function get() { + return defaultOutputCalendar; + } + /** + * Set the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + , + set: function set(outputCalendar) { + defaultOutputCalendar = outputCalendar; + } + /** + * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + + }, { + key: "throwOnInvalid", + get: function get() { + return throwOnInvalid; + } + /** + * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + , + set: function set(t) { + throwOnInvalid = t; + } + }]); + + return Settings; + }(); + + var intlDTCache = {}; + + function getCachedDTF(locString, opts) { + if (opts === void 0) { + opts = {}; + } + + var key = JSON.stringify([locString, opts]); + var dtf = intlDTCache[key]; + + if (!dtf) { + dtf = new Intl.DateTimeFormat(locString, opts); + intlDTCache[key] = dtf; + } + + return dtf; + } + + var intlNumCache = {}; + + function getCachedINF(locString, opts) { + if (opts === void 0) { + opts = {}; + } + + var key = JSON.stringify([locString, opts]); + var inf = intlNumCache[key]; + + if (!inf) { + inf = new Intl.NumberFormat(locString, opts); + intlNumCache[key] = inf; + } + + return inf; + } + + var intlRelCache = {}; + + function getCachedRTF(locString, opts) { + if (opts === void 0) { + opts = {}; + } + + var _opts = opts, + base = _opts.base, + cacheKeyOpts = _objectWithoutPropertiesLoose(_opts, ["base"]); // exclude `base` from the options + + + var key = JSON.stringify([locString, cacheKeyOpts]); + var inf = intlRelCache[key]; + + if (!inf) { + inf = new Intl.RelativeTimeFormat(locString, opts); + intlRelCache[key] = inf; + } + + return inf; + } + + var sysLocaleCache = null; + + function systemLocale() { + if (sysLocaleCache) { + return sysLocaleCache; + } else if (hasIntl()) { + var computedSys = new Intl.DateTimeFormat().resolvedOptions().locale; // node sometimes defaults to "und". Override that because that is dumb + + sysLocaleCache = !computedSys || computedSys === "und" ? "en-US" : computedSys; + return sysLocaleCache; + } else { + sysLocaleCache = "en-US"; + return sysLocaleCache; + } + } + + function parseLocaleString(localeStr) { + // I really want to avoid writing a BCP 47 parser + // see, e.g. https://github.com/wooorm/bcp-47 + // Instead, we'll do this: + // a) if the string has no -u extensions, just leave it alone + // b) if it does, use Intl to resolve everything + // c) if Intl fails, try again without the -u + var uIndex = localeStr.indexOf("-u-"); + + if (uIndex === -1) { + return [localeStr]; + } else { + var options; + var smaller = localeStr.substring(0, uIndex); + + try { + options = getCachedDTF(localeStr).resolvedOptions(); + } catch (e) { + options = getCachedDTF(smaller).resolvedOptions(); + } + + var _options = options, + numberingSystem = _options.numberingSystem, + calendar = _options.calendar; // return the smaller one so that we can append the calendar and numbering overrides to it + + return [smaller, numberingSystem, calendar]; + } + } + + function intlConfigString(localeStr, numberingSystem, outputCalendar) { + if (hasIntl()) { + if (outputCalendar || numberingSystem) { + localeStr += "-u"; + + if (outputCalendar) { + localeStr += "-ca-" + outputCalendar; + } + + if (numberingSystem) { + localeStr += "-nu-" + numberingSystem; + } + + return localeStr; + } else { + return localeStr; + } + } else { + return []; + } + } + + function mapMonths(f) { + var ms = []; + + for (var i = 1; i <= 12; i++) { + var dt = DateTime.utc(2016, i, 1); + ms.push(f(dt)); + } + + return ms; + } + + function mapWeekdays(f) { + var ms = []; + + for (var i = 1; i <= 7; i++) { + var dt = DateTime.utc(2016, 11, 13 + i); + ms.push(f(dt)); + } + + return ms; + } + + function listStuff(loc, length, defaultOK, englishFn, intlFn) { + var mode = loc.listingMode(defaultOK); + + if (mode === "error") { + return null; + } else if (mode === "en") { + return englishFn(length); + } else { + return intlFn(length); + } + } + + function supportsFastNumbers(loc) { + if (loc.numberingSystem && loc.numberingSystem !== "latn") { + return false; + } else { + return loc.numberingSystem === "latn" || !loc.locale || loc.locale.startsWith("en") || hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn"; + } + } + /** + * @private + */ + + + var PolyNumberFormatter = /*#__PURE__*/function () { + function PolyNumberFormatter(intl, forceSimple, opts) { + this.padTo = opts.padTo || 0; + this.floor = opts.floor || false; + + if (!forceSimple && hasIntl()) { + var intlOpts = { + useGrouping: false + }; + if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo; + this.inf = getCachedINF(intl, intlOpts); + } + } + + var _proto = PolyNumberFormatter.prototype; + + _proto.format = function format(i) { + if (this.inf) { + var fixed = this.floor ? Math.floor(i) : i; + return this.inf.format(fixed); + } else { + // to match the browser's numberformatter defaults + var _fixed = this.floor ? Math.floor(i) : roundTo(i, 3); + + return padStart(_fixed, this.padTo); + } + }; + + return PolyNumberFormatter; + }(); + /** + * @private + */ + + + var PolyDateFormatter = /*#__PURE__*/function () { + function PolyDateFormatter(dt, intl, opts) { + this.opts = opts; + this.hasIntl = hasIntl(); + var z; + + if (dt.zone.universal && this.hasIntl) { + // Chromium doesn't support fixed-offset zones like Etc/GMT+8 in its formatter, + // See https://bugs.chromium.org/p/chromium/issues/detail?id=364374. + // So we have to make do. Two cases: + // 1. The format options tell us to show the zone. We can't do that, so the best + // we can do is format the date in UTC. + // 2. The format options don't tell us to show the zone. Then we can adjust them + // the time and tell the formatter to show it to us in UTC, so that the time is right + // and the bad zone doesn't show up. + // We can clean all this up when Chrome fixes this. + z = "UTC"; + + if (opts.timeZoneName) { + this.dt = dt; + } else { + this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000); + } + } else if (dt.zone.type === "local") { + this.dt = dt; + } else { + this.dt = dt; + z = dt.zone.name; + } + + if (this.hasIntl) { + var intlOpts = Object.assign({}, this.opts); + + if (z) { + intlOpts.timeZone = z; + } + + this.dtf = getCachedDTF(intl, intlOpts); + } + } + + var _proto2 = PolyDateFormatter.prototype; + + _proto2.format = function format() { + if (this.hasIntl) { + return this.dtf.format(this.dt.toJSDate()); + } else { + var tokenFormat = formatString(this.opts), + loc = Locale.create("en-US"); + return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat); + } + }; + + _proto2.formatToParts = function formatToParts() { + if (this.hasIntl && hasFormatToParts()) { + return this.dtf.formatToParts(this.dt.toJSDate()); + } else { + // This is kind of a cop out. We actually could do this for English. However, we couldn't do it for intl strings + // and IMO it's too weird to have an uncanny valley like that + return []; + } + }; + + _proto2.resolvedOptions = function resolvedOptions() { + if (this.hasIntl) { + return this.dtf.resolvedOptions(); + } else { + return { + locale: "en-US", + numberingSystem: "latn", + outputCalendar: "gregory" + }; + } + }; + + return PolyDateFormatter; + }(); + /** + * @private + */ + + + var PolyRelFormatter = /*#__PURE__*/function () { + function PolyRelFormatter(intl, isEnglish, opts) { + this.opts = Object.assign({ + style: "long" + }, opts); + + if (!isEnglish && hasRelative()) { + this.rtf = getCachedRTF(intl, opts); + } + } + + var _proto3 = PolyRelFormatter.prototype; + + _proto3.format = function format(count, unit) { + if (this.rtf) { + return this.rtf.format(count, unit); + } else { + return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long"); + } + }; + + _proto3.formatToParts = function formatToParts(count, unit) { + if (this.rtf) { + return this.rtf.formatToParts(count, unit); + } else { + return []; + } + }; + + return PolyRelFormatter; + }(); + /** + * @private + */ + + + var Locale = /*#__PURE__*/function () { + Locale.fromOpts = function fromOpts(opts) { + return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN); + }; + + Locale.create = function create(locale, numberingSystem, outputCalendar, defaultToEN) { + if (defaultToEN === void 0) { + defaultToEN = false; + } + + var specifiedLocale = locale || Settings.defaultLocale, + // the system locale is useful for human readable strings but annoying for parsing/formatting known formats + localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()), + numberingSystemR = numberingSystem || Settings.defaultNumberingSystem, + outputCalendarR = outputCalendar || Settings.defaultOutputCalendar; + return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale); + }; + + Locale.resetCache = function resetCache() { + sysLocaleCache = null; + intlDTCache = {}; + intlNumCache = {}; + intlRelCache = {}; + }; + + Locale.fromObject = function fromObject(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + locale = _ref.locale, + numberingSystem = _ref.numberingSystem, + outputCalendar = _ref.outputCalendar; + + return Locale.create(locale, numberingSystem, outputCalendar); + }; + + function Locale(locale, numbering, outputCalendar, specifiedLocale) { + var _parseLocaleString = parseLocaleString(locale), + parsedLocale = _parseLocaleString[0], + parsedNumberingSystem = _parseLocaleString[1], + parsedOutputCalendar = _parseLocaleString[2]; + + this.locale = parsedLocale; + this.numberingSystem = numbering || parsedNumberingSystem || null; + this.outputCalendar = outputCalendar || parsedOutputCalendar || null; + this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar); + this.weekdaysCache = { + format: {}, + standalone: {} + }; + this.monthsCache = { + format: {}, + standalone: {} + }; + this.meridiemCache = null; + this.eraCache = {}; + this.specifiedLocale = specifiedLocale; + this.fastNumbersCached = null; + } + + var _proto4 = Locale.prototype; + + _proto4.listingMode = function listingMode(defaultOK) { + if (defaultOK === void 0) { + defaultOK = true; + } + + var intl = hasIntl(), + hasFTP = intl && hasFormatToParts(), + isActuallyEn = this.isEnglish(), + hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === "latn") && (this.outputCalendar === null || this.outputCalendar === "gregory"); + + if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) { + return "error"; + } else if (!hasFTP || isActuallyEn && hasNoWeirdness) { + return "en"; + } else { + return "intl"; + } + }; + + _proto4.clone = function clone(alts) { + if (!alts || Object.getOwnPropertyNames(alts).length === 0) { + return this; + } else { + return Locale.create(alts.locale || this.specifiedLocale, alts.numberingSystem || this.numberingSystem, alts.outputCalendar || this.outputCalendar, alts.defaultToEN || false); + } + }; + + _proto4.redefaultToEN = function redefaultToEN(alts) { + if (alts === void 0) { + alts = {}; + } + + return this.clone(Object.assign({}, alts, { + defaultToEN: true + })); + }; + + _proto4.redefaultToSystem = function redefaultToSystem(alts) { + if (alts === void 0) { + alts = {}; + } + + return this.clone(Object.assign({}, alts, { + defaultToEN: false + })); + }; + + _proto4.months = function months$1(length, format, defaultOK) { + var _this = this; + + if (format === void 0) { + format = false; + } + + if (defaultOK === void 0) { + defaultOK = true; + } + + return listStuff(this, length, defaultOK, months, function () { + var intl = format ? { + month: length, + day: "numeric" + } : { + month: length + }, + formatStr = format ? "format" : "standalone"; + + if (!_this.monthsCache[formatStr][length]) { + _this.monthsCache[formatStr][length] = mapMonths(function (dt) { + return _this.extract(dt, intl, "month"); + }); + } + + return _this.monthsCache[formatStr][length]; + }); + }; + + _proto4.weekdays = function weekdays$1(length, format, defaultOK) { + var _this2 = this; + + if (format === void 0) { + format = false; + } + + if (defaultOK === void 0) { + defaultOK = true; + } + + return listStuff(this, length, defaultOK, weekdays, function () { + var intl = format ? { + weekday: length, + year: "numeric", + month: "long", + day: "numeric" + } : { + weekday: length + }, + formatStr = format ? "format" : "standalone"; + + if (!_this2.weekdaysCache[formatStr][length]) { + _this2.weekdaysCache[formatStr][length] = mapWeekdays(function (dt) { + return _this2.extract(dt, intl, "weekday"); + }); + } + + return _this2.weekdaysCache[formatStr][length]; + }); + }; + + _proto4.meridiems = function meridiems$1(defaultOK) { + var _this3 = this; + + if (defaultOK === void 0) { + defaultOK = true; + } + + return listStuff(this, undefined, defaultOK, function () { + return meridiems; + }, function () { + // In theory there could be aribitrary day periods. We're gonna assume there are exactly two + // for AM and PM. This is probably wrong, but it's makes parsing way easier. + if (!_this3.meridiemCache) { + var intl = { + hour: "numeric", + hour12: true + }; + _this3.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(function (dt) { + return _this3.extract(dt, intl, "dayperiod"); + }); + } + + return _this3.meridiemCache; + }); + }; + + _proto4.eras = function eras$1(length, defaultOK) { + var _this4 = this; + + if (defaultOK === void 0) { + defaultOK = true; + } + + return listStuff(this, length, defaultOK, eras, function () { + var intl = { + era: length + }; // This is utter bullshit. Different calendars are going to define eras totally differently. What I need is the minimum set of dates + // to definitely enumerate them. + + if (!_this4.eraCache[length]) { + _this4.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(function (dt) { + return _this4.extract(dt, intl, "era"); + }); + } + + return _this4.eraCache[length]; + }); + }; + + _proto4.extract = function extract(dt, intlOpts, field) { + var df = this.dtFormatter(dt, intlOpts), + results = df.formatToParts(), + matching = results.find(function (m) { + return m.type.toLowerCase() === field; + }); + return matching ? matching.value : null; + }; + + _proto4.numberFormatter = function numberFormatter(opts) { + if (opts === void 0) { + opts = {}; + } + + // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave) + // (in contrast, the rest of the condition is used heavily) + return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts); + }; + + _proto4.dtFormatter = function dtFormatter(dt, intlOpts) { + if (intlOpts === void 0) { + intlOpts = {}; + } + + return new PolyDateFormatter(dt, this.intl, intlOpts); + }; + + _proto4.relFormatter = function relFormatter(opts) { + if (opts === void 0) { + opts = {}; + } + + return new PolyRelFormatter(this.intl, this.isEnglish(), opts); + }; + + _proto4.isEnglish = function isEnglish() { + return this.locale === "en" || this.locale.toLowerCase() === "en-us" || hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"); + }; + + _proto4.equals = function equals(other) { + return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; + }; + + _createClass(Locale, [{ + key: "fastNumbers", + get: function get() { + if (this.fastNumbersCached == null) { + this.fastNumbersCached = supportsFastNumbers(this); + } + + return this.fastNumbersCached; + } + }]); + + return Locale; + }(); + + /* + * This file handles parsing for well-specified formats. Here's how it works: + * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match. + * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object + * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence. + * Extractors can take a "cursor" representing the offset in the match to look at. This makes it easy to combine extractors. + * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions. + * Some extractions are super dumb and simpleParse and fromStrings help DRY them. + */ + + function combineRegexes() { + for (var _len = arguments.length, regexes = new Array(_len), _key = 0; _key < _len; _key++) { + regexes[_key] = arguments[_key]; + } + + var full = regexes.reduce(function (f, r) { + return f + r.source; + }, ""); + return RegExp("^" + full + "$"); + } + + function combineExtractors() { + for (var _len2 = arguments.length, extractors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + extractors[_key2] = arguments[_key2]; + } + + return function (m) { + return extractors.reduce(function (_ref, ex) { + var mergedVals = _ref[0], + mergedZone = _ref[1], + cursor = _ref[2]; + + var _ex = ex(m, cursor), + val = _ex[0], + zone = _ex[1], + next = _ex[2]; + + return [Object.assign(mergedVals, val), mergedZone || zone, next]; + }, [{}, null, 1]).slice(0, 2); + }; + } + + function parse(s) { + if (s == null) { + return [null, null]; + } + + for (var _len3 = arguments.length, patterns = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + patterns[_key3 - 1] = arguments[_key3]; + } + + for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { + var _patterns$_i = _patterns[_i], + regex = _patterns$_i[0], + extractor = _patterns$_i[1]; + var m = regex.exec(s); + + if (m) { + return extractor(m); + } + } + + return [null, null]; + } + + function simpleParse() { + for (var _len4 = arguments.length, keys = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + keys[_key4] = arguments[_key4]; + } + + return function (match, cursor) { + var ret = {}; + var i; + + for (i = 0; i < keys.length; i++) { + ret[keys[i]] = parseInteger(match[cursor + i]); + } + + return [ret, null, cursor + i]; + }; + } // ISO and SQL parsing + + + var offsetRegex = /(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/, + isoTimeBaseRegex = /(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,9}))?)?)?/, + isoTimeRegex = RegExp("" + isoTimeBaseRegex.source + offsetRegex.source + "?"), + isoTimeExtensionRegex = RegExp("(?:T" + isoTimeRegex.source + ")?"), + isoYmdRegex = /([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/, + isoWeekRegex = /(\d{4})-?W(\d\d)(?:-?(\d))?/, + isoOrdinalRegex = /(\d{4})-?(\d{3})/, + extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay"), + extractISOOrdinalData = simpleParse("year", "ordinal"), + sqlYmdRegex = /(\d{4})-(\d\d)-(\d\d)/, + // dumbed-down version of the ISO one + sqlTimeRegex = RegExp(isoTimeBaseRegex.source + " ?(?:" + offsetRegex.source + "|(" + ianaRegex.source + "))?"), + sqlTimeExtensionRegex = RegExp("(?: " + sqlTimeRegex.source + ")?"); + + function int(match, pos, fallback) { + var m = match[pos]; + return isUndefined(m) ? fallback : parseInteger(m); + } + + function extractISOYmd(match, cursor) { + var item = { + year: int(match, cursor), + month: int(match, cursor + 1, 1), + day: int(match, cursor + 2, 1) + }; + return [item, null, cursor + 3]; + } + + function extractISOTime(match, cursor) { + var item = { + hour: int(match, cursor, 0), + minute: int(match, cursor + 1, 0), + second: int(match, cursor + 2, 0), + millisecond: parseMillis(match[cursor + 3]) + }; + return [item, null, cursor + 4]; + } + + function extractISOOffset(match, cursor) { + var local = !match[cursor] && !match[cursor + 1], + fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]), + zone = local ? null : FixedOffsetZone.instance(fullOffset); + return [{}, zone, cursor + 3]; + } + + function extractIANAZone(match, cursor) { + var zone = match[cursor] ? IANAZone.create(match[cursor]) : null; + return [{}, zone, cursor + 1]; + } // ISO duration parsing + + + var isoDuration = /^-?P(?:(?:(-?\d{1,9})Y)?(?:(-?\d{1,9})M)?(?:(-?\d{1,9})W)?(?:(-?\d{1,9})D)?(?:T(?:(-?\d{1,9})H)?(?:(-?\d{1,9})M)?(?:(-?\d{1,9})(?:[.,](-?\d{1,9}))?S)?)?)$/; + + function extractISODuration(match) { + var s = match[0], + yearStr = match[1], + monthStr = match[2], + weekStr = match[3], + dayStr = match[4], + hourStr = match[5], + minuteStr = match[6], + secondStr = match[7], + millisecondsStr = match[8]; + var hasNegativePrefix = s[0] === "-"; + + var maybeNegate = function maybeNegate(num) { + return num && hasNegativePrefix ? -num : num; + }; + + return [{ + years: maybeNegate(parseInteger(yearStr)), + months: maybeNegate(parseInteger(monthStr)), + weeks: maybeNegate(parseInteger(weekStr)), + days: maybeNegate(parseInteger(dayStr)), + hours: maybeNegate(parseInteger(hourStr)), + minutes: maybeNegate(parseInteger(minuteStr)), + seconds: maybeNegate(parseInteger(secondStr)), + milliseconds: maybeNegate(parseMillis(millisecondsStr)) + }]; + } // These are a little braindead. EDT *should* tell us that we're in, say, America/New_York + // and not just that we're in -240 *right now*. But since I don't think these are used that often + // I'm just going to ignore that + + + var obsOffsets = { + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + + function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + var result = { + year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr), + month: monthsShort.indexOf(monthStr) + 1, + day: parseInteger(dayStr), + hour: parseInteger(hourStr), + minute: parseInteger(minuteStr) + }; + if (secondStr) result.second = parseInteger(secondStr); + + if (weekdayStr) { + result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1; + } + + return result; + } // RFC 2822/5322 + + + var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/; + + function extractRFC2822(match) { + var weekdayStr = match[1], + dayStr = match[2], + monthStr = match[3], + yearStr = match[4], + hourStr = match[5], + minuteStr = match[6], + secondStr = match[7], + obsOffset = match[8], + milOffset = match[9], + offHourStr = match[10], + offMinuteStr = match[11], + result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + var offset; + + if (obsOffset) { + offset = obsOffsets[obsOffset]; + } else if (milOffset) { + offset = 0; + } else { + offset = signedOffset(offHourStr, offMinuteStr); + } + + return [result, new FixedOffsetZone(offset)]; + } + + function preprocessRFC2822(s) { + // Remove comments and folding whitespace and replace multiple-spaces with a single space + return s.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim(); + } // http date + + + var rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/, + rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/, + ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/; + + function extractRFC1123Or850(match) { + var weekdayStr = match[1], + dayStr = match[2], + monthStr = match[3], + yearStr = match[4], + hourStr = match[5], + minuteStr = match[6], + secondStr = match[7], + result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; + } + + function extractASCII(match) { + var weekdayStr = match[1], + monthStr = match[2], + dayStr = match[3], + hourStr = match[4], + minuteStr = match[5], + secondStr = match[6], + yearStr = match[7], + result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; + } + + var isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex); + var isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex); + var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex); + var isoTimeCombinedRegex = combineRegexes(isoTimeRegex); + var extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset); + var extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset); + var extractISOOrdinalDataAndTime = combineExtractors(extractISOOrdinalData, extractISOTime); + var extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset); + /** + * @private + */ + + function parseISODate(s) { + return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDataAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]); + } + function parseRFC2822Date(s) { + return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]); + } + function parseHTTPDate(s) { + return parse(s, [rfc1123, extractRFC1123Or850], [rfc850, extractRFC1123Or850], [ascii, extractASCII]); + } + function parseISODuration(s) { + return parse(s, [isoDuration, extractISODuration]); + } + var sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex); + var sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex); + var extractISOYmdTimeOffsetAndIANAZone = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset, extractIANAZone); + var extractISOTimeOffsetAndIANAZone = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone); + function parseSQL(s) { + return parse(s, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]); + } + + var INVALID = "Invalid Duration"; // unit conversion constants + + var lowOrderMatrix = { + weeks: { + days: 7, + hours: 7 * 24, + minutes: 7 * 24 * 60, + seconds: 7 * 24 * 60 * 60, + milliseconds: 7 * 24 * 60 * 60 * 1000 + }, + days: { + hours: 24, + minutes: 24 * 60, + seconds: 24 * 60 * 60, + milliseconds: 24 * 60 * 60 * 1000 + }, + hours: { + minutes: 60, + seconds: 60 * 60, + milliseconds: 60 * 60 * 1000 + }, + minutes: { + seconds: 60, + milliseconds: 60 * 1000 + }, + seconds: { + milliseconds: 1000 + } + }, + casualMatrix = Object.assign({ + years: { + months: 12, + weeks: 52, + days: 365, + hours: 365 * 24, + minutes: 365 * 24 * 60, + seconds: 365 * 24 * 60 * 60, + milliseconds: 365 * 24 * 60 * 60 * 1000 + }, + quarters: { + months: 3, + weeks: 13, + days: 91, + hours: 91 * 24, + minutes: 91 * 24 * 60, + milliseconds: 91 * 24 * 60 * 60 * 1000 + }, + months: { + weeks: 4, + days: 30, + hours: 30 * 24, + minutes: 30 * 24 * 60, + seconds: 30 * 24 * 60 * 60, + milliseconds: 30 * 24 * 60 * 60 * 1000 + } + }, lowOrderMatrix), + daysInYearAccurate = 146097.0 / 400, + daysInMonthAccurate = 146097.0 / 4800, + accurateMatrix = Object.assign({ + years: { + months: 12, + weeks: daysInYearAccurate / 7, + days: daysInYearAccurate, + hours: daysInYearAccurate * 24, + minutes: daysInYearAccurate * 24 * 60, + seconds: daysInYearAccurate * 24 * 60 * 60, + milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000 + }, + quarters: { + months: 3, + weeks: daysInYearAccurate / 28, + days: daysInYearAccurate / 4, + hours: daysInYearAccurate * 24 / 4, + minutes: daysInYearAccurate * 24 * 60 / 4, + seconds: daysInYearAccurate * 24 * 60 * 60 / 4, + milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000 / 4 + }, + months: { + weeks: daysInMonthAccurate / 7, + days: daysInMonthAccurate, + hours: daysInMonthAccurate * 24, + minutes: daysInMonthAccurate * 24 * 60, + seconds: daysInMonthAccurate * 24 * 60 * 60, + milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000 + } + }, lowOrderMatrix); // units ordered by size + + var orderedUnits = ["years", "quarters", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds"]; + var reverseUnits = orderedUnits.slice(0).reverse(); // clone really means "create another instance just like this one, but with these changes" + + function clone(dur, alts, clear) { + if (clear === void 0) { + clear = false; + } + + // deep merge for vals + var conf = { + values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}), + loc: dur.loc.clone(alts.loc), + conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy + }; + return new Duration(conf); + } + + function antiTrunc(n) { + return n < 0 ? Math.floor(n) : Math.ceil(n); + } // NB: mutates parameters + + + function convert(matrix, fromMap, fromUnit, toMap, toUnit) { + var conv = matrix[toUnit][fromUnit], + raw = fromMap[fromUnit] / conv, + sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]), + // ok, so this is wild, but see the matrix in the tests + added = !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw); + toMap[toUnit] += added; + fromMap[fromUnit] -= added * conv; + } // NB: mutates parameters + + + function normalizeValues(matrix, vals) { + reverseUnits.reduce(function (previous, current) { + if (!isUndefined(vals[current])) { + if (previous) { + convert(matrix, vals, previous, vals, current); + } + + return current; + } else { + return previous; + } + }, null); + } + /** + * A Duration object represents a period of time, like "2 months" or "1 day, 1 hour". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime. + * + * Here is a brief overview of commonly used methods and getters in Duration: + * + * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}. + * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors. + * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors. + * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}. + * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON} + * + * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation. + */ + + + var Duration = /*#__PURE__*/function () { + /** + * @private + */ + function Duration(config) { + var accurate = config.conversionAccuracy === "longterm" || false; + /** + * @access private + */ + + this.values = config.values; + /** + * @access private + */ + + this.loc = config.loc || Locale.create(); + /** + * @access private + */ + + this.conversionAccuracy = accurate ? "longterm" : "casual"; + /** + * @access private + */ + + this.invalid = config.invalid || null; + /** + * @access private + */ + + this.matrix = accurate ? accurateMatrix : casualMatrix; + /** + * @access private + */ + + this.isLuxonDuration = true; + } + /** + * Create Duration from a number of milliseconds. + * @param {number} count of milliseconds + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @return {Duration} + */ + + + Duration.fromMillis = function fromMillis(count, opts) { + return Duration.fromObject(Object.assign({ + milliseconds: count + }, opts)); + } + /** + * Create a Duration from a Javascript object with keys like 'years' and 'hours. + * If this object is empty then a zero milliseconds duration is returned. + * @param {Object} obj - the object to create the DateTime from + * @param {number} obj.years + * @param {number} obj.quarters + * @param {number} obj.months + * @param {number} obj.weeks + * @param {number} obj.days + * @param {number} obj.hours + * @param {number} obj.minutes + * @param {number} obj.seconds + * @param {number} obj.milliseconds + * @param {string} [obj.locale='en-US'] - the locale to use + * @param {string} obj.numberingSystem - the numbering system to use + * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use + * @return {Duration} + */ + ; + + Duration.fromObject = function fromObject(obj) { + if (obj == null || typeof obj !== "object") { + throw new InvalidArgumentError("Duration.fromObject: argument expected to be an object, got " + (obj === null ? "null" : typeof obj)); + } + + return new Duration({ + values: normalizeObject(obj, Duration.normalizeUnit, ["locale", "numberingSystem", "conversionAccuracy", "zone" // a bit of debt; it's super inconvenient internally not to be able to blindly pass this + ]), + loc: Locale.fromObject(obj), + conversionAccuracy: obj.conversionAccuracy + }); + } + /** + * Create a Duration from an ISO 8601 duration string. + * @param {string} text - text to parse + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @see https://en.wikipedia.org/wiki/ISO_8601#Durations + * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 } + * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 } + * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 } + * @return {Duration} + */ + ; + + Duration.fromISO = function fromISO(text, opts) { + var _parseISODuration = parseISODuration(text), + parsed = _parseISODuration[0]; + + if (parsed) { + var obj = Object.assign(parsed, opts); + return Duration.fromObject(obj); + } else { + return Duration.invalid("unparsable", "the input \"" + text + "\" can't be parsed as ISO 8601"); + } + } + /** + * Create an invalid Duration. + * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {Duration} + */ + ; + + Duration.invalid = function invalid(reason, explanation) { + if (explanation === void 0) { + explanation = null; + } + + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the Duration is invalid"); + } + + var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + + if (Settings.throwOnInvalid) { + throw new InvalidDurationError(invalid); + } else { + return new Duration({ + invalid: invalid + }); + } + } + /** + * @private + */ + ; + + Duration.normalizeUnit = function normalizeUnit(unit) { + var normalized = { + year: "years", + years: "years", + quarter: "quarters", + quarters: "quarters", + month: "months", + months: "months", + week: "weeks", + weeks: "weeks", + day: "days", + days: "days", + hour: "hours", + hours: "hours", + minute: "minutes", + minutes: "minutes", + second: "seconds", + seconds: "seconds", + millisecond: "milliseconds", + milliseconds: "milliseconds" + }[unit ? unit.toLowerCase() : unit]; + if (!normalized) throw new InvalidUnitError(unit); + return normalized; + } + /** + * Check if an object is a Duration. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + ; + + Duration.isDuration = function isDuration(o) { + return o && o.isLuxonDuration || false; + } + /** + * Get the locale of a Duration, such 'en-GB' + * @type {string} + */ + ; + + var _proto = Duration.prototype; + + /** + * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens: + * * `S` for milliseconds + * * `s` for seconds + * * `m` for minutes + * * `h` for hours + * * `d` for days + * * `M` for months + * * `y` for years + * Notes: + * * Add padding by repeating the token, e.g. "yy" pads the years to two digits, "hhhh" pads the hours out to four digits + * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations's conversion accuracy setting. + * @param {string} fmt - the format string + * @param {Object} opts - options + * @param {boolean} [opts.floor=true] - floor numerical values + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("y d s") //=> "1 6 2" + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("yy dd sss") //=> "01 06 002" + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("M S") //=> "12 518402000" + * @return {string} + */ + _proto.toFormat = function toFormat(fmt, opts) { + if (opts === void 0) { + opts = {}; + } + + // reverse-compat since 1.2; we always round down now, never up, and we do it by default + var fmtOpts = Object.assign({}, opts, { + floor: opts.round !== false && opts.floor !== false + }); + return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID; + } + /** + * Returns a Javascript object with this Duration's values. + * @param opts - options for generating the object + * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 } + * @return {Object} + */ + ; + + _proto.toObject = function toObject(opts) { + if (opts === void 0) { + opts = {}; + } + + if (!this.isValid) return {}; + var base = Object.assign({}, this.values); + + if (opts.includeConfig) { + base.conversionAccuracy = this.conversionAccuracy; + base.numberingSystem = this.loc.numberingSystem; + base.locale = this.loc.locale; + } + + return base; + } + /** + * Returns an ISO 8601-compliant string representation of this Duration. + * @see https://en.wikipedia.org/wiki/ISO_8601#Durations + * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S' + * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S' + * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M' + * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M' + * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S' + * @return {string} + */ + ; + + _proto.toISO = function toISO() { + // we could use the formatter, but this is an easier way to get the minimum string + if (!this.isValid) return null; + var s = "P"; + if (this.years !== 0) s += this.years + "Y"; + if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + "M"; + if (this.weeks !== 0) s += this.weeks + "W"; + if (this.days !== 0) s += this.days + "D"; + if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) s += "T"; + if (this.hours !== 0) s += this.hours + "H"; + if (this.minutes !== 0) s += this.minutes + "M"; + if (this.seconds !== 0 || this.milliseconds !== 0) // this will handle "floating point madness" by removing extra decimal places + // https://stackoverflow.com/questions/588004/is-floating-point-math-broken + s += roundTo(this.seconds + this.milliseconds / 1000, 3) + "S"; + if (s === "P") s += "T0S"; + return s; + } + /** + * Returns an ISO 8601 representation of this Duration appropriate for use in JSON. + * @return {string} + */ + ; + + _proto.toJSON = function toJSON() { + return this.toISO(); + } + /** + * Returns an ISO 8601 representation of this Duration appropriate for use in debugging. + * @return {string} + */ + ; + + _proto.toString = function toString() { + return this.toISO(); + } + /** + * Returns an milliseconds value of this Duration. + * @return {number} + */ + ; + + _proto.valueOf = function valueOf() { + return this.as("milliseconds"); + } + /** + * Make this Duration longer by the specified amount. Return a newly-constructed Duration. + * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @return {Duration} + */ + ; + + _proto.plus = function plus(duration) { + if (!this.isValid) return this; + var dur = friendlyDuration(duration), + result = {}; + + for (var _iterator = _createForOfIteratorHelperLoose(orderedUnits), _step; !(_step = _iterator()).done;) { + var k = _step.value; + + if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) { + result[k] = dur.get(k) + this.get(k); + } + } + + return clone(this, { + values: result + }, true); + } + /** + * Make this Duration shorter by the specified amount. Return a newly-constructed Duration. + * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @return {Duration} + */ + ; + + _proto.minus = function minus(duration) { + if (!this.isValid) return this; + var dur = friendlyDuration(duration); + return this.plus(dur.negate()); + } + /** + * Scale this Duration by the specified amount. Return a newly-constructed Duration. + * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number. + * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit(x => x * 2) //=> { hours: 2, minutes: 60 } + * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit((x, u) => u === "hour" ? x * 2 : x) //=> { hours: 2, minutes: 30 } + * @return {Duration} + */ + ; + + _proto.mapUnits = function mapUnits(fn) { + if (!this.isValid) return this; + var result = {}; + + for (var _i = 0, _Object$keys = Object.keys(this.values); _i < _Object$keys.length; _i++) { + var k = _Object$keys[_i]; + result[k] = asNumber(fn(this.values[k], k)); + } + + return clone(this, { + values: result + }, true); + } + /** + * Get the value of unit. + * @param {string} unit - a unit such as 'minute' or 'day' + * @example Duration.fromObject({years: 2, days: 3}).years //=> 2 + * @example Duration.fromObject({years: 2, days: 3}).months //=> 0 + * @example Duration.fromObject({years: 2, days: 3}).days //=> 3 + * @return {number} + */ + ; + + _proto.get = function get(unit) { + return this[Duration.normalizeUnit(unit)]; + } + /** + * "Set" the values of specified units. Return a newly-constructed Duration. + * @param {Object} values - a mapping of units to numbers + * @example dur.set({ years: 2017 }) + * @example dur.set({ hours: 8, minutes: 30 }) + * @return {Duration} + */ + ; + + _proto.set = function set(values) { + if (!this.isValid) return this; + var mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, [])); + return clone(this, { + values: mixed + }); + } + /** + * "Set" the locale and/or numberingSystem. Returns a newly-constructed Duration. + * @example dur.reconfigure({ locale: 'en-GB' }) + * @return {Duration} + */ + ; + + _proto.reconfigure = function reconfigure(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + locale = _ref.locale, + numberingSystem = _ref.numberingSystem, + conversionAccuracy = _ref.conversionAccuracy; + + var loc = this.loc.clone({ + locale: locale, + numberingSystem: numberingSystem + }), + opts = { + loc: loc + }; + + if (conversionAccuracy) { + opts.conversionAccuracy = conversionAccuracy; + } + + return clone(this, opts); + } + /** + * Return the length of the duration in the specified unit. + * @param {string} unit - a unit such as 'minutes' or 'days' + * @example Duration.fromObject({years: 1}).as('days') //=> 365 + * @example Duration.fromObject({years: 1}).as('months') //=> 12 + * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5 + * @return {number} + */ + ; + + _proto.as = function as(unit) { + return this.isValid ? this.shiftTo(unit).get(unit) : NaN; + } + /** + * Reduce this Duration to its canonical representation in its current units. + * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 } + * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 } + * @return {Duration} + */ + ; + + _proto.normalize = function normalize() { + if (!this.isValid) return this; + var vals = this.toObject(); + normalizeValues(this.matrix, vals); + return clone(this, { + values: vals + }, true); + } + /** + * Convert this Duration into its representation in a different set of units. + * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 } + * @return {Duration} + */ + ; + + _proto.shiftTo = function shiftTo() { + for (var _len = arguments.length, units = new Array(_len), _key = 0; _key < _len; _key++) { + units[_key] = arguments[_key]; + } + + if (!this.isValid) return this; + + if (units.length === 0) { + return this; + } + + units = units.map(function (u) { + return Duration.normalizeUnit(u); + }); + var built = {}, + accumulated = {}, + vals = this.toObject(); + var lastUnit; + normalizeValues(this.matrix, vals); + + for (var _iterator2 = _createForOfIteratorHelperLoose(orderedUnits), _step2; !(_step2 = _iterator2()).done;) { + var k = _step2.value; + + if (units.indexOf(k) >= 0) { + lastUnit = k; + var own = 0; // anything we haven't boiled down yet should get boiled to this unit + + for (var ak in accumulated) { + own += this.matrix[ak][k] * accumulated[ak]; + accumulated[ak] = 0; + } // plus anything that's already in this unit + + + if (isNumber(vals[k])) { + own += vals[k]; + } + + var i = Math.trunc(own); + built[k] = i; + accumulated[k] = own - i; // we'd like to absorb these fractions in another unit + // plus anything further down the chain that should be rolled up in to this + + for (var down in vals) { + if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) { + convert(this.matrix, vals, down, built, k); + } + } // otherwise, keep it in the wings to boil it later + + } else if (isNumber(vals[k])) { + accumulated[k] = vals[k]; + } + } // anything leftover becomes the decimal for the last unit + // lastUnit must be defined since units is not empty + + + for (var key in accumulated) { + if (accumulated[key] !== 0) { + built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key]; + } + } + + return clone(this, { + values: built + }, true).normalize(); + } + /** + * Return the negative of this Duration. + * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 } + * @return {Duration} + */ + ; + + _proto.negate = function negate() { + if (!this.isValid) return this; + var negated = {}; + + for (var _i2 = 0, _Object$keys2 = Object.keys(this.values); _i2 < _Object$keys2.length; _i2++) { + var k = _Object$keys2[_i2]; + negated[k] = -this.values[k]; + } + + return clone(this, { + values: negated + }, true); + } + /** + * Get the years. + * @type {number} + */ + ; + + /** + * Equality check + * Two Durations are equal iff they have the same units and the same values for each unit. + * @param {Duration} other + * @return {boolean} + */ + _proto.equals = function equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + + if (!this.loc.equals(other.loc)) { + return false; + } + + for (var _iterator3 = _createForOfIteratorHelperLoose(orderedUnits), _step3; !(_step3 = _iterator3()).done;) { + var u = _step3.value; + + if (this.values[u] !== other.values[u]) { + return false; + } + } + + return true; + }; + + _createClass(Duration, [{ + key: "locale", + get: function get() { + return this.isValid ? this.loc.locale : null; + } + /** + * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration + * + * @type {string} + */ + + }, { + key: "numberingSystem", + get: function get() { + return this.isValid ? this.loc.numberingSystem : null; + } + }, { + key: "years", + get: function get() { + return this.isValid ? this.values.years || 0 : NaN; + } + /** + * Get the quarters. + * @type {number} + */ + + }, { + key: "quarters", + get: function get() { + return this.isValid ? this.values.quarters || 0 : NaN; + } + /** + * Get the months. + * @type {number} + */ + + }, { + key: "months", + get: function get() { + return this.isValid ? this.values.months || 0 : NaN; + } + /** + * Get the weeks + * @type {number} + */ + + }, { + key: "weeks", + get: function get() { + return this.isValid ? this.values.weeks || 0 : NaN; + } + /** + * Get the days. + * @type {number} + */ + + }, { + key: "days", + get: function get() { + return this.isValid ? this.values.days || 0 : NaN; + } + /** + * Get the hours. + * @type {number} + */ + + }, { + key: "hours", + get: function get() { + return this.isValid ? this.values.hours || 0 : NaN; + } + /** + * Get the minutes. + * @type {number} + */ + + }, { + key: "minutes", + get: function get() { + return this.isValid ? this.values.minutes || 0 : NaN; + } + /** + * Get the seconds. + * @return {number} + */ + + }, { + key: "seconds", + get: function get() { + return this.isValid ? this.values.seconds || 0 : NaN; + } + /** + * Get the milliseconds. + * @return {number} + */ + + }, { + key: "milliseconds", + get: function get() { + return this.isValid ? this.values.milliseconds || 0 : NaN; + } + /** + * Returns whether the Duration is invalid. Invalid durations are returned by diff operations + * on invalid DateTimes or Intervals. + * @return {boolean} + */ + + }, { + key: "isValid", + get: function get() { + return this.invalid === null; + } + /** + * Returns an error code if this Duration became invalid, or null if the Duration is valid + * @return {string} + */ + + }, { + key: "invalidReason", + get: function get() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this Duration became invalid, or null if the Duration is valid + * @type {string} + */ + + }, { + key: "invalidExplanation", + get: function get() { + return this.invalid ? this.invalid.explanation : null; + } + }]); + + return Duration; + }(); + function friendlyDuration(durationish) { + if (isNumber(durationish)) { + return Duration.fromMillis(durationish); + } else if (Duration.isDuration(durationish)) { + return durationish; + } else if (typeof durationish === "object") { + return Duration.fromObject(durationish); + } else { + throw new InvalidArgumentError("Unknown duration argument " + durationish + " of type " + typeof durationish); + } + } + + var INVALID$1 = "Invalid Interval"; // checks if the start is equal to or before the end + + function validateStartEnd(start, end) { + if (!start || !start.isValid) { + return Interval.invalid("missing or invalid start"); + } else if (!end || !end.isValid) { + return Interval.invalid("missing or invalid end"); + } else if (end < start) { + return Interval.invalid("end before start", "The end of an interval must be after its start, but you had start=" + start.toISO() + " and end=" + end.toISO()); + } else { + return null; + } + } + /** + * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them. + * + * Here is a brief overview of the most commonly used methods and getters in Interval: + * + * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}. + * * **Accessors** Use {@link start} and {@link end} to get the start and end. + * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}. + * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}. + * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs} + * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}. + */ + + + var Interval = /*#__PURE__*/function () { + /** + * @private + */ + function Interval(config) { + /** + * @access private + */ + this.s = config.start; + /** + * @access private + */ + + this.e = config.end; + /** + * @access private + */ + + this.invalid = config.invalid || null; + /** + * @access private + */ + + this.isLuxonInterval = true; + } + /** + * Create an invalid Interval. + * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {Interval} + */ + + + Interval.invalid = function invalid(reason, explanation) { + if (explanation === void 0) { + explanation = null; + } + + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the Interval is invalid"); + } + + var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + + if (Settings.throwOnInvalid) { + throw new InvalidIntervalError(invalid); + } else { + return new Interval({ + invalid: invalid + }); + } + } + /** + * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end. + * @param {DateTime|Date|Object} start + * @param {DateTime|Date|Object} end + * @return {Interval} + */ + ; + + Interval.fromDateTimes = function fromDateTimes(start, end) { + var builtStart = friendlyDateTime(start), + builtEnd = friendlyDateTime(end); + var validateError = validateStartEnd(builtStart, builtEnd); + + if (validateError == null) { + return new Interval({ + start: builtStart, + end: builtEnd + }); + } else { + return validateError; + } + } + /** + * Create an Interval from a start DateTime and a Duration to extend to. + * @param {DateTime|Date|Object} start + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + ; + + Interval.after = function after(start, duration) { + var dur = friendlyDuration(duration), + dt = friendlyDateTime(start); + return Interval.fromDateTimes(dt, dt.plus(dur)); + } + /** + * Create an Interval from an end DateTime and a Duration to extend backwards to. + * @param {DateTime|Date|Object} end + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + ; + + Interval.before = function before(end, duration) { + var dur = friendlyDuration(duration), + dt = friendlyDateTime(end); + return Interval.fromDateTimes(dt.minus(dur), dt); + } + /** + * Create an Interval from an ISO 8601 string. + * Accepts `/`, `/`, and `/` formats. + * @param {string} text - the ISO string to parse + * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO} + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {Interval} + */ + ; + + Interval.fromISO = function fromISO(text, opts) { + var _split = (text || "").split("/", 2), + s = _split[0], + e = _split[1]; + + if (s && e) { + var start = DateTime.fromISO(s, opts), + end = DateTime.fromISO(e, opts); + + if (start.isValid && end.isValid) { + return Interval.fromDateTimes(start, end); + } + + if (start.isValid) { + var dur = Duration.fromISO(e, opts); + + if (dur.isValid) { + return Interval.after(start, dur); + } + } else if (end.isValid) { + var _dur = Duration.fromISO(s, opts); + + if (_dur.isValid) { + return Interval.before(end, _dur); + } + } + } + + return Interval.invalid("unparsable", "the input \"" + text + "\" can't be parsed as ISO 8601"); + } + /** + * Check if an object is an Interval. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + ; + + Interval.isInterval = function isInterval(o) { + return o && o.isLuxonInterval || false; + } + /** + * Returns the start of the Interval + * @type {DateTime} + */ + ; + + var _proto = Interval.prototype; + + /** + * Returns the length of the Interval in the specified unit. + * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in. + * @return {number} + */ + _proto.length = function length(unit) { + if (unit === void 0) { + unit = "milliseconds"; + } + + return this.isValid ? this.toDuration.apply(this, [unit]).get(unit) : NaN; + } + /** + * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part. + * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day' + * asks 'what dates are included in this interval?', not 'how many days long is this interval?' + * @param {string} [unit='milliseconds'] - the unit of time to count. + * @return {number} + */ + ; + + _proto.count = function count(unit) { + if (unit === void 0) { + unit = "milliseconds"; + } + + if (!this.isValid) return NaN; + var start = this.start.startOf(unit), + end = this.end.startOf(unit); + return Math.floor(end.diff(start, unit).get(unit)) + 1; + } + /** + * Returns whether this Interval's start and end are both in the same unit of time + * @param {string} unit - the unit of time to check sameness on + * @return {boolean} + */ + ; + + _proto.hasSame = function hasSame(unit) { + return this.isValid ? this.e.minus(1).hasSame(this.s, unit) : false; + } + /** + * Return whether this Interval has the same start and end DateTimes. + * @return {boolean} + */ + ; + + _proto.isEmpty = function isEmpty() { + return this.s.valueOf() === this.e.valueOf(); + } + /** + * Return whether this Interval's start is after the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + ; + + _proto.isAfter = function isAfter(dateTime) { + if (!this.isValid) return false; + return this.s > dateTime; + } + /** + * Return whether this Interval's end is before the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + ; + + _proto.isBefore = function isBefore(dateTime) { + if (!this.isValid) return false; + return this.e <= dateTime; + } + /** + * Return whether this Interval contains the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + ; + + _proto.contains = function contains(dateTime) { + if (!this.isValid) return false; + return this.s <= dateTime && this.e > dateTime; + } + /** + * "Sets" the start and/or end dates. Returns a newly-constructed Interval. + * @param {Object} values - the values to set + * @param {DateTime} values.start - the starting DateTime + * @param {DateTime} values.end - the ending DateTime + * @return {Interval} + */ + ; + + _proto.set = function set(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + start = _ref.start, + end = _ref.end; + + if (!this.isValid) return this; + return Interval.fromDateTimes(start || this.s, end || this.e); + } + /** + * Split this Interval at each of the specified DateTimes + * @param {...[DateTime]} dateTimes - the unit of time to count. + * @return {[Interval]} + */ + ; + + _proto.splitAt = function splitAt() { + var _this = this; + + if (!this.isValid) return []; + + for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) { + dateTimes[_key] = arguments[_key]; + } + + var sorted = dateTimes.map(friendlyDateTime).filter(function (d) { + return _this.contains(d); + }).sort(), + results = []; + var s = this.s, + i = 0; + + while (s < this.e) { + var added = sorted[i] || this.e, + next = +added > +this.e ? this.e : added; + results.push(Interval.fromDateTimes(s, next)); + s = next; + i += 1; + } + + return results; + } + /** + * Split this Interval into smaller Intervals, each of the specified length. + * Left over time is grouped into a smaller interval + * @param {Duration|Object|number} duration - The length of each resulting interval. + * @return {[Interval]} + */ + ; + + _proto.splitBy = function splitBy(duration) { + var dur = friendlyDuration(duration); + + if (!this.isValid || !dur.isValid || dur.as("milliseconds") === 0) { + return []; + } + + var s = this.s, + added, + next; + var results = []; + + while (s < this.e) { + added = s.plus(dur); + next = +added > +this.e ? this.e : added; + results.push(Interval.fromDateTimes(s, next)); + s = next; + } + + return results; + } + /** + * Split this Interval into the specified number of smaller intervals. + * @param {number} numberOfParts - The number of Intervals to divide the Interval into. + * @return {[Interval]} + */ + ; + + _proto.divideEqually = function divideEqually(numberOfParts) { + if (!this.isValid) return []; + return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts); + } + /** + * Return whether this Interval overlaps with the specified Interval + * @param {Interval} other + * @return {boolean} + */ + ; + + _proto.overlaps = function overlaps(other) { + return this.e > other.s && this.s < other.e; + } + /** + * Return whether this Interval's end is adjacent to the specified Interval's start. + * @param {Interval} other + * @return {boolean} + */ + ; + + _proto.abutsStart = function abutsStart(other) { + if (!this.isValid) return false; + return +this.e === +other.s; + } + /** + * Return whether this Interval's start is adjacent to the specified Interval's end. + * @param {Interval} other + * @return {boolean} + */ + ; + + _proto.abutsEnd = function abutsEnd(other) { + if (!this.isValid) return false; + return +other.e === +this.s; + } + /** + * Return whether this Interval engulfs the start and end of the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + ; + + _proto.engulfs = function engulfs(other) { + if (!this.isValid) return false; + return this.s <= other.s && this.e >= other.e; + } + /** + * Return whether this Interval has the same start and end as the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + ; + + _proto.equals = function equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + + return this.s.equals(other.s) && this.e.equals(other.e); + } + /** + * Return an Interval representing the intersection of this Interval and the specified Interval. + * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals. + * Returns null if the intersection is empty, meaning, the intervals don't intersect. + * @param {Interval} other + * @return {Interval} + */ + ; + + _proto.intersection = function intersection(other) { + if (!this.isValid) return this; + var s = this.s > other.s ? this.s : other.s, + e = this.e < other.e ? this.e : other.e; + + if (s > e) { + return null; + } else { + return Interval.fromDateTimes(s, e); + } + } + /** + * Return an Interval representing the union of this Interval and the specified Interval. + * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals. + * @param {Interval} other + * @return {Interval} + */ + ; + + _proto.union = function union(other) { + if (!this.isValid) return this; + var s = this.s < other.s ? this.s : other.s, + e = this.e > other.e ? this.e : other.e; + return Interval.fromDateTimes(s, e); + } + /** + * Merge an array of Intervals into a equivalent minimal set of Intervals. + * Combines overlapping and adjacent Intervals. + * @param {[Interval]} intervals + * @return {[Interval]} + */ + ; + + Interval.merge = function merge(intervals) { + var _intervals$sort$reduc = intervals.sort(function (a, b) { + return a.s - b.s; + }).reduce(function (_ref2, item) { + var sofar = _ref2[0], + current = _ref2[1]; + + if (!current) { + return [sofar, item]; + } else if (current.overlaps(item) || current.abutsStart(item)) { + return [sofar, current.union(item)]; + } else { + return [sofar.concat([current]), item]; + } + }, [[], null]), + found = _intervals$sort$reduc[0], + final = _intervals$sort$reduc[1]; + + if (final) { + found.push(final); + } + + return found; + } + /** + * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals. + * @param {[Interval]} intervals + * @return {[Interval]} + */ + ; + + Interval.xor = function xor(intervals) { + var _Array$prototype; + + var start = null, + currentCount = 0; + + var results = [], + ends = intervals.map(function (i) { + return [{ + time: i.s, + type: "s" + }, { + time: i.e, + type: "e" + }]; + }), + flattened = (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, ends), + arr = flattened.sort(function (a, b) { + return a.time - b.time; + }); + + for (var _iterator = _createForOfIteratorHelperLoose(arr), _step; !(_step = _iterator()).done;) { + var i = _step.value; + currentCount += i.type === "s" ? 1 : -1; + + if (currentCount === 1) { + start = i.time; + } else { + if (start && +start !== +i.time) { + results.push(Interval.fromDateTimes(start, i.time)); + } + + start = null; + } + } + + return Interval.merge(results); + } + /** + * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals. + * @param {...Interval} intervals + * @return {[Interval]} + */ + ; + + _proto.difference = function difference() { + var _this2 = this; + + for (var _len2 = arguments.length, intervals = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + intervals[_key2] = arguments[_key2]; + } + + return Interval.xor([this].concat(intervals)).map(function (i) { + return _this2.intersection(i); + }).filter(function (i) { + return i && !i.isEmpty(); + }); + } + /** + * Returns a string representation of this Interval appropriate for debugging. + * @return {string} + */ + ; + + _proto.toString = function toString() { + if (!this.isValid) return INVALID$1; + return "[" + this.s.toISO() + " \u2013 " + this.e.toISO() + ")"; + } + /** + * Returns an ISO 8601-compliant string representation of this Interval. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime.toISO} + * @return {string} + */ + ; + + _proto.toISO = function toISO(opts) { + if (!this.isValid) return INVALID$1; + return this.s.toISO(opts) + "/" + this.e.toISO(opts); + } + /** + * Returns an ISO 8601-compliant string representation of date of this Interval. + * The time components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {string} + */ + ; + + _proto.toISODate = function toISODate() { + if (!this.isValid) return INVALID$1; + return this.s.toISODate() + "/" + this.e.toISODate(); + } + /** + * Returns an ISO 8601-compliant string representation of time of this Interval. + * The date components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime.toISO} + * @return {string} + */ + ; + + _proto.toISOTime = function toISOTime(opts) { + if (!this.isValid) return INVALID$1; + return this.s.toISOTime(opts) + "/" + this.e.toISOTime(opts); + } + /** + * Returns a string representation of this Interval formatted according to the specified format string. + * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details. + * @param {Object} opts - options + * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations + * @return {string} + */ + ; + + _proto.toFormat = function toFormat(dateFormat, _temp2) { + var _ref3 = _temp2 === void 0 ? {} : _temp2, + _ref3$separator = _ref3.separator, + separator = _ref3$separator === void 0 ? " – " : _ref3$separator; + + if (!this.isValid) return INVALID$1; + return "" + this.s.toFormat(dateFormat) + separator + this.e.toFormat(dateFormat); + } + /** + * Return a Duration representing the time spanned by this interval. + * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration. + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 } + * @return {Duration} + */ + ; + + _proto.toDuration = function toDuration(unit, opts) { + if (!this.isValid) { + return Duration.invalid(this.invalidReason); + } + + return this.e.diff(this.s, unit, opts); + } + /** + * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes + * @param {function} mapFn + * @return {Interval} + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC()) + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 })) + */ + ; + + _proto.mapEndpoints = function mapEndpoints(mapFn) { + return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); + }; + + _createClass(Interval, [{ + key: "start", + get: function get() { + return this.isValid ? this.s : null; + } + /** + * Returns the end of the Interval + * @type {DateTime} + */ + + }, { + key: "end", + get: function get() { + return this.isValid ? this.e : null; + } + /** + * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'. + * @type {boolean} + */ + + }, { + key: "isValid", + get: function get() { + return this.invalidReason === null; + } + /** + * Returns an error code if this Interval is invalid, or null if the Interval is valid + * @type {string} + */ + + }, { + key: "invalidReason", + get: function get() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this Interval became invalid, or null if the Interval is valid + * @type {string} + */ + + }, { + key: "invalidExplanation", + get: function get() { + return this.invalid ? this.invalid.explanation : null; + } + }]); + + return Interval; + }(); + + /** + * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment. + */ + + var Info = /*#__PURE__*/function () { + function Info() {} + + /** + * Return whether the specified zone contains a DST. + * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone. + * @return {boolean} + */ + Info.hasDST = function hasDST(zone) { + if (zone === void 0) { + zone = Settings.defaultZone; + } + + var proto = DateTime.local().setZone(zone).set({ + month: 12 + }); + return !zone.universal && proto.offset !== proto.set({ + month: 6 + }).offset; + } + /** + * Return whether the specified zone is a valid IANA specifier. + * @param {string} zone - Zone to check + * @return {boolean} + */ + ; + + Info.isValidIANAZone = function isValidIANAZone(zone) { + return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone); + } + /** + * Converts the input into a {@link Zone} instance. + * + * * If `input` is already a Zone instance, it is returned unchanged. + * * If `input` is a string containing a valid time zone name, a Zone instance + * with that name is returned. + * * If `input` is a string that doesn't refer to a known time zone, a Zone + * instance with {@link Zone.isValid} == false is returned. + * * If `input is a number, a Zone instance with the specified fixed offset + * in minutes is returned. + * * If `input` is `null` or `undefined`, the default zone is returned. + * @param {string|Zone|number} [input] - the value to be converted + * @return {Zone} + */ + ; + + Info.normalizeZone = function normalizeZone$1(input) { + return normalizeZone(input, Settings.defaultZone); + } + /** + * Return an array of standalone month names. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long" + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.outputCalendar='gregory'] - the calendar + * @example Info.months()[0] //=> 'January' + * @example Info.months('short')[0] //=> 'Jan' + * @example Info.months('numeric')[0] //=> '1' + * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.' + * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١' + * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I' + * @return {[string]} + */ + ; + + Info.months = function months(length, _temp) { + if (length === void 0) { + length = "long"; + } + + var _ref = _temp === void 0 ? {} : _temp, + _ref$locale = _ref.locale, + locale = _ref$locale === void 0 ? null : _ref$locale, + _ref$numberingSystem = _ref.numberingSystem, + numberingSystem = _ref$numberingSystem === void 0 ? null : _ref$numberingSystem, + _ref$outputCalendar = _ref.outputCalendar, + outputCalendar = _ref$outputCalendar === void 0 ? "gregory" : _ref$outputCalendar; + + return Locale.create(locale, numberingSystem, outputCalendar).months(length); + } + /** + * Return an array of format month names. + * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that + * changes the string. + * See {@link months} + * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long" + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.outputCalendar='gregory'] - the calendar + * @return {[string]} + */ + ; + + Info.monthsFormat = function monthsFormat(length, _temp2) { + if (length === void 0) { + length = "long"; + } + + var _ref2 = _temp2 === void 0 ? {} : _temp2, + _ref2$locale = _ref2.locale, + locale = _ref2$locale === void 0 ? null : _ref2$locale, + _ref2$numberingSystem = _ref2.numberingSystem, + numberingSystem = _ref2$numberingSystem === void 0 ? null : _ref2$numberingSystem, + _ref2$outputCalendar = _ref2.outputCalendar, + outputCalendar = _ref2$outputCalendar === void 0 ? "gregory" : _ref2$outputCalendar; + + return Locale.create(locale, numberingSystem, outputCalendar).months(length, true); + } + /** + * Return an array of standalone week names. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {string} [length='long'] - the length of the month representation, such as "narrow", "short", "long". + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @example Info.weekdays()[0] //=> 'Monday' + * @example Info.weekdays('short')[0] //=> 'Mon' + * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.' + * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين' + * @return {[string]} + */ + ; + + Info.weekdays = function weekdays(length, _temp3) { + if (length === void 0) { + length = "long"; + } + + var _ref3 = _temp3 === void 0 ? {} : _temp3, + _ref3$locale = _ref3.locale, + locale = _ref3$locale === void 0 ? null : _ref3$locale, + _ref3$numberingSystem = _ref3.numberingSystem, + numberingSystem = _ref3$numberingSystem === void 0 ? null : _ref3$numberingSystem; + + return Locale.create(locale, numberingSystem, null).weekdays(length); + } + /** + * Return an array of format week names. + * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that + * changes the string. + * See {@link weekdays} + * @param {string} [length='long'] - the length of the month representation, such as "narrow", "short", "long". + * @param {Object} opts - options + * @param {string} [opts.locale=null] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @return {[string]} + */ + ; + + Info.weekdaysFormat = function weekdaysFormat(length, _temp4) { + if (length === void 0) { + length = "long"; + } + + var _ref4 = _temp4 === void 0 ? {} : _temp4, + _ref4$locale = _ref4.locale, + locale = _ref4$locale === void 0 ? null : _ref4$locale, + _ref4$numberingSystem = _ref4.numberingSystem, + numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem; + + return Locale.create(locale, numberingSystem, null).weekdays(length, true); + } + /** + * Return an array of meridiems. + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @example Info.meridiems() //=> [ 'AM', 'PM' ] + * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ] + * @return {[string]} + */ + ; + + Info.meridiems = function meridiems(_temp5) { + var _ref5 = _temp5 === void 0 ? {} : _temp5, + _ref5$locale = _ref5.locale, + locale = _ref5$locale === void 0 ? null : _ref5$locale; + + return Locale.create(locale).meridiems(); + } + /** + * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian. + * @param {string} [length='short'] - the length of the era representation, such as "short" or "long". + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @example Info.eras() //=> [ 'BC', 'AD' ] + * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ] + * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ] + * @return {[string]} + */ + ; + + Info.eras = function eras(length, _temp6) { + if (length === void 0) { + length = "short"; + } + + var _ref6 = _temp6 === void 0 ? {} : _temp6, + _ref6$locale = _ref6.locale, + locale = _ref6$locale === void 0 ? null : _ref6$locale; + + return Locale.create(locale, null, "gregory").eras(length); + } + /** + * Return the set of available features in this environment. + * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case. + * Keys: + * * `zones`: whether this environment supports IANA timezones + * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing + * * `intl`: whether this environment supports general internationalization + * * `relative`: whether this environment supports relative time formatting + * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false } + * @return {Object} + */ + ; + + Info.features = function features() { + var intl = false, + intlTokens = false, + zones = false, + relative = false; + + if (hasIntl()) { + intl = true; + intlTokens = hasFormatToParts(); + relative = hasRelative(); + + try { + zones = new Intl.DateTimeFormat("en", { + timeZone: "America/New_York" + }).resolvedOptions().timeZone === "America/New_York"; + } catch (e) { + zones = false; + } + } + + return { + intl: intl, + intlTokens: intlTokens, + zones: zones, + relative: relative + }; + }; + + return Info; + }(); + + function dayDiff(earlier, later) { + var utcDayStart = function utcDayStart(dt) { + return dt.toUTC(0, { + keepLocalTime: true + }).startOf("day").valueOf(); + }, + ms = utcDayStart(later) - utcDayStart(earlier); + + return Math.floor(Duration.fromMillis(ms).as("days")); + } + + function highOrderDiffs(cursor, later, units) { + var differs = [["years", function (a, b) { + return b.year - a.year; + }], ["months", function (a, b) { + return b.month - a.month + (b.year - a.year) * 12; + }], ["weeks", function (a, b) { + var days = dayDiff(a, b); + return (days - days % 7) / 7; + }], ["days", dayDiff]]; + var results = {}; + var lowestOrder, highWater; + + for (var _i = 0, _differs = differs; _i < _differs.length; _i++) { + var _differs$_i = _differs[_i], + unit = _differs$_i[0], + differ = _differs$_i[1]; + + if (units.indexOf(unit) >= 0) { + var _cursor$plus; + + lowestOrder = unit; + var delta = differ(cursor, later); + highWater = cursor.plus((_cursor$plus = {}, _cursor$plus[unit] = delta, _cursor$plus)); + + if (highWater > later) { + var _cursor$plus2; + + cursor = cursor.plus((_cursor$plus2 = {}, _cursor$plus2[unit] = delta - 1, _cursor$plus2)); + delta -= 1; + } else { + cursor = highWater; + } + + results[unit] = delta; + } + } + + return [cursor, results, highWater, lowestOrder]; + } + + function _diff (earlier, later, units, opts) { + var _highOrderDiffs = highOrderDiffs(earlier, later, units), + cursor = _highOrderDiffs[0], + results = _highOrderDiffs[1], + highWater = _highOrderDiffs[2], + lowestOrder = _highOrderDiffs[3]; + + var remainingMillis = later - cursor; + var lowerOrderUnits = units.filter(function (u) { + return ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0; + }); + + if (lowerOrderUnits.length === 0) { + if (highWater < later) { + var _cursor$plus3; + + highWater = cursor.plus((_cursor$plus3 = {}, _cursor$plus3[lowestOrder] = 1, _cursor$plus3)); + } + + if (highWater !== cursor) { + results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor); + } + } + + var duration = Duration.fromObject(Object.assign(results, opts)); + + if (lowerOrderUnits.length > 0) { + var _Duration$fromMillis; + + return (_Duration$fromMillis = Duration.fromMillis(remainingMillis, opts)).shiftTo.apply(_Duration$fromMillis, lowerOrderUnits).plus(duration); + } else { + return duration; + } + } + + var numberingSystems = { + arab: "[\u0660-\u0669]", + arabext: "[\u06F0-\u06F9]", + bali: "[\u1B50-\u1B59]", + beng: "[\u09E6-\u09EF]", + deva: "[\u0966-\u096F]", + fullwide: "[\uFF10-\uFF19]", + gujr: "[\u0AE6-\u0AEF]", + hanidec: "[〇|一|二|三|四|五|六|七|八|九]", + khmr: "[\u17E0-\u17E9]", + knda: "[\u0CE6-\u0CEF]", + laoo: "[\u0ED0-\u0ED9]", + limb: "[\u1946-\u194F]", + mlym: "[\u0D66-\u0D6F]", + mong: "[\u1810-\u1819]", + mymr: "[\u1040-\u1049]", + orya: "[\u0B66-\u0B6F]", + tamldec: "[\u0BE6-\u0BEF]", + telu: "[\u0C66-\u0C6F]", + thai: "[\u0E50-\u0E59]", + tibt: "[\u0F20-\u0F29]", + latn: "\\d" + }; + var numberingSystemsUTF16 = { + arab: [1632, 1641], + arabext: [1776, 1785], + bali: [6992, 7001], + beng: [2534, 2543], + deva: [2406, 2415], + fullwide: [65296, 65303], + gujr: [2790, 2799], + khmr: [6112, 6121], + knda: [3302, 3311], + laoo: [3792, 3801], + limb: [6470, 6479], + mlym: [3430, 3439], + mong: [6160, 6169], + mymr: [4160, 4169], + orya: [2918, 2927], + tamldec: [3046, 3055], + telu: [3174, 3183], + thai: [3664, 3673], + tibt: [3872, 3881] + }; // eslint-disable-next-line + + var hanidecChars = numberingSystems.hanidec.replace(/[\[|\]]/g, "").split(""); + function parseDigits(str) { + var value = parseInt(str, 10); + + if (isNaN(value)) { + value = ""; + + for (var i = 0; i < str.length; i++) { + var code = str.charCodeAt(i); + + if (str[i].search(numberingSystems.hanidec) !== -1) { + value += hanidecChars.indexOf(str[i]); + } else { + for (var key in numberingSystemsUTF16) { + var _numberingSystemsUTF = numberingSystemsUTF16[key], + min = _numberingSystemsUTF[0], + max = _numberingSystemsUTF[1]; + + if (code >= min && code <= max) { + value += code - min; + } + } + } + } + + return parseInt(value, 10); + } else { + return value; + } + } + function digitRegex(_ref, append) { + var numberingSystem = _ref.numberingSystem; + + if (append === void 0) { + append = ""; + } + + return new RegExp("" + numberingSystems[numberingSystem || "latn"] + append); + } + + var MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; + + function intUnit(regex, post) { + if (post === void 0) { + post = function post(i) { + return i; + }; + } + + return { + regex: regex, + deser: function deser(_ref) { + var s = _ref[0]; + return post(parseDigits(s)); + } + }; + } + + function fixListRegex(s) { + // make dots optional and also make them literal + return s.replace(/\./, "\\.?"); + } + + function stripInsensitivities(s) { + return s.replace(/\./, "").toLowerCase(); + } + + function oneOf(strings, startIndex) { + if (strings === null) { + return null; + } else { + return { + regex: RegExp(strings.map(fixListRegex).join("|")), + deser: function deser(_ref2) { + var s = _ref2[0]; + return strings.findIndex(function (i) { + return stripInsensitivities(s) === stripInsensitivities(i); + }) + startIndex; + } + }; + } + } + + function offset(regex, groups) { + return { + regex: regex, + deser: function deser(_ref3) { + var h = _ref3[1], + m = _ref3[2]; + return signedOffset(h, m); + }, + groups: groups + }; + } + + function simple(regex) { + return { + regex: regex, + deser: function deser(_ref4) { + var s = _ref4[0]; + return s; + } + }; + } + + function escapeToken(value) { + // eslint-disable-next-line no-useless-escape + return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); + } + + function unitForToken(token, loc) { + var one = digitRegex(loc), + two = digitRegex(loc, "{2}"), + three = digitRegex(loc, "{3}"), + four = digitRegex(loc, "{4}"), + six = digitRegex(loc, "{6}"), + oneOrTwo = digitRegex(loc, "{1,2}"), + oneToThree = digitRegex(loc, "{1,3}"), + oneToSix = digitRegex(loc, "{1,6}"), + oneToNine = digitRegex(loc, "{1,9}"), + twoToFour = digitRegex(loc, "{2,4}"), + fourToSix = digitRegex(loc, "{4,6}"), + literal = function literal(t) { + return { + regex: RegExp(escapeToken(t.val)), + deser: function deser(_ref5) { + var s = _ref5[0]; + return s; + }, + literal: true + }; + }, + unitate = function unitate(t) { + if (token.literal) { + return literal(t); + } + + switch (t.val) { + // era + case "G": + return oneOf(loc.eras("short", false), 0); + + case "GG": + return oneOf(loc.eras("long", false), 0); + // years + + case "y": + return intUnit(oneToSix); + + case "yy": + return intUnit(twoToFour, untruncateYear); + + case "yyyy": + return intUnit(four); + + case "yyyyy": + return intUnit(fourToSix); + + case "yyyyyy": + return intUnit(six); + // months + + case "M": + return intUnit(oneOrTwo); + + case "MM": + return intUnit(two); + + case "MMM": + return oneOf(loc.months("short", true, false), 1); + + case "MMMM": + return oneOf(loc.months("long", true, false), 1); + + case "L": + return intUnit(oneOrTwo); + + case "LL": + return intUnit(two); + + case "LLL": + return oneOf(loc.months("short", false, false), 1); + + case "LLLL": + return oneOf(loc.months("long", false, false), 1); + // dates + + case "d": + return intUnit(oneOrTwo); + + case "dd": + return intUnit(two); + // ordinals + + case "o": + return intUnit(oneToThree); + + case "ooo": + return intUnit(three); + // time + + case "HH": + return intUnit(two); + + case "H": + return intUnit(oneOrTwo); + + case "hh": + return intUnit(two); + + case "h": + return intUnit(oneOrTwo); + + case "mm": + return intUnit(two); + + case "m": + return intUnit(oneOrTwo); + + case "q": + return intUnit(oneOrTwo); + + case "qq": + return intUnit(two); + + case "s": + return intUnit(oneOrTwo); + + case "ss": + return intUnit(two); + + case "S": + return intUnit(oneToThree); + + case "SSS": + return intUnit(three); + + case "u": + return simple(oneToNine); + // meridiem + + case "a": + return oneOf(loc.meridiems(), 0); + // weekYear (k) + + case "kkkk": + return intUnit(four); + + case "kk": + return intUnit(twoToFour, untruncateYear); + // weekNumber (W) + + case "W": + return intUnit(oneOrTwo); + + case "WW": + return intUnit(two); + // weekdays + + case "E": + case "c": + return intUnit(one); + + case "EEE": + return oneOf(loc.weekdays("short", false, false), 1); + + case "EEEE": + return oneOf(loc.weekdays("long", false, false), 1); + + case "ccc": + return oneOf(loc.weekdays("short", true, false), 1); + + case "cccc": + return oneOf(loc.weekdays("long", true, false), 1); + // offset/zone + + case "Z": + case "ZZ": + return offset(new RegExp("([+-]" + oneOrTwo.source + ")(?::(" + two.source + "))?"), 2); + + case "ZZZ": + return offset(new RegExp("([+-]" + oneOrTwo.source + ")(" + two.source + ")?"), 2); + // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing + // because we don't have any way to figure out what they are + + case "z": + return simple(/[a-z_+-/]{1,256}?/i); + + default: + return literal(t); + } + }; + + var unit = unitate(token) || { + invalidReason: MISSING_FTP + }; + unit.token = token; + return unit; + } + + var partTypeStyleToTokenVal = { + year: { + "2-digit": "yy", + numeric: "yyyyy" + }, + month: { + numeric: "M", + "2-digit": "MM", + short: "MMM", + long: "MMMM" + }, + day: { + numeric: "d", + "2-digit": "dd" + }, + weekday: { + short: "EEE", + long: "EEEE" + }, + dayperiod: "a", + dayPeriod: "a", + hour: { + numeric: "h", + "2-digit": "hh" + }, + minute: { + numeric: "m", + "2-digit": "mm" + }, + second: { + numeric: "s", + "2-digit": "ss" + } + }; + + function tokenForPart(part, locale, formatOpts) { + var type = part.type, + value = part.value; + + if (type === "literal") { + return { + literal: true, + val: value + }; + } + + var style = formatOpts[type]; + var val = partTypeStyleToTokenVal[type]; + + if (typeof val === "object") { + val = val[style]; + } + + if (val) { + return { + literal: false, + val: val + }; + } + + return undefined; + } + + function buildRegex(units) { + var re = units.map(function (u) { + return u.regex; + }).reduce(function (f, r) { + return f + "(" + r.source + ")"; + }, ""); + return ["^" + re + "$", units]; + } + + function match(input, regex, handlers) { + var matches = input.match(regex); + + if (matches) { + var all = {}; + var matchIndex = 1; + + for (var i in handlers) { + if (hasOwnProperty(handlers, i)) { + var h = handlers[i], + groups = h.groups ? h.groups + 1 : 1; + + if (!h.literal && h.token) { + all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups)); + } + + matchIndex += groups; + } + } + + return [matches, all]; + } else { + return [matches, {}]; + } + } + + function dateTimeFromMatches(matches) { + var toField = function toField(token) { + switch (token) { + case "S": + return "millisecond"; + + case "s": + return "second"; + + case "m": + return "minute"; + + case "h": + case "H": + return "hour"; + + case "d": + return "day"; + + case "o": + return "ordinal"; + + case "L": + case "M": + return "month"; + + case "y": + return "year"; + + case "E": + case "c": + return "weekday"; + + case "W": + return "weekNumber"; + + case "k": + return "weekYear"; + + case "q": + return "quarter"; + + default: + return null; + } + }; + + var zone; + + if (!isUndefined(matches.Z)) { + zone = new FixedOffsetZone(matches.Z); + } else if (!isUndefined(matches.z)) { + zone = IANAZone.create(matches.z); + } else { + zone = null; + } + + if (!isUndefined(matches.q)) { + matches.M = (matches.q - 1) * 3 + 1; + } + + if (!isUndefined(matches.h)) { + if (matches.h < 12 && matches.a === 1) { + matches.h += 12; + } else if (matches.h === 12 && matches.a === 0) { + matches.h = 0; + } + } + + if (matches.G === 0 && matches.y) { + matches.y = -matches.y; + } + + if (!isUndefined(matches.u)) { + matches.S = parseMillis(matches.u); + } + + var vals = Object.keys(matches).reduce(function (r, k) { + var f = toField(k); + + if (f) { + r[f] = matches[k]; + } + + return r; + }, {}); + return [vals, zone]; + } + + var dummyDateTimeCache = null; + + function getDummyDateTime() { + if (!dummyDateTimeCache) { + dummyDateTimeCache = DateTime.fromMillis(1555555555555); + } + + return dummyDateTimeCache; + } + + function maybeExpandMacroToken(token, locale) { + if (token.literal) { + return token; + } + + var formatOpts = Formatter.macroTokenToFormatOpts(token.val); + + if (!formatOpts) { + return token; + } + + var formatter = Formatter.create(locale, formatOpts); + var parts = formatter.formatDateTimeParts(getDummyDateTime()); + var tokens = parts.map(function (p) { + return tokenForPart(p, locale, formatOpts); + }); + + if (tokens.includes(undefined)) { + return token; + } + + return tokens; + } + + function expandMacroTokens(tokens, locale) { + var _Array$prototype; + + return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, tokens.map(function (t) { + return maybeExpandMacroToken(t, locale); + })); + } + /** + * @private + */ + + + function explainFromTokens(locale, input, format) { + var tokens = expandMacroTokens(Formatter.parseFormat(format), locale), + units = tokens.map(function (t) { + return unitForToken(t, locale); + }), + disqualifyingUnit = units.find(function (t) { + return t.invalidReason; + }); + + if (disqualifyingUnit) { + return { + input: input, + tokens: tokens, + invalidReason: disqualifyingUnit.invalidReason + }; + } else { + var _buildRegex = buildRegex(units), + regexString = _buildRegex[0], + handlers = _buildRegex[1], + regex = RegExp(regexString, "i"), + _match = match(input, regex, handlers), + rawMatches = _match[0], + matches = _match[1], + _ref6 = matches ? dateTimeFromMatches(matches) : [null, null], + result = _ref6[0], + zone = _ref6[1]; + + if (hasOwnProperty(matches, "a") && hasOwnProperty(matches, "H")) { + throw new ConflictingSpecificationError("Can't include meridiem when specifying 24-hour format"); + } + + return { + input: input, + tokens: tokens, + regex: regex, + rawMatches: rawMatches, + matches: matches, + result: result, + zone: zone + }; + } + } + function parseFromTokens(locale, input, format) { + var _explainFromTokens = explainFromTokens(locale, input, format), + result = _explainFromTokens.result, + zone = _explainFromTokens.zone, + invalidReason = _explainFromTokens.invalidReason; + + return [result, zone, invalidReason]; + } + + var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], + leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; + + function unitOutOfRange(unit, value) { + return new Invalid("unit out of range", "you specified " + value + " (of type " + typeof value + ") as a " + unit + ", which is invalid"); + } + + function dayOfWeek(year, month, day) { + var js = new Date(Date.UTC(year, month - 1, day)).getUTCDay(); + return js === 0 ? 7 : js; + } + + function computeOrdinal(year, month, day) { + return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1]; + } + + function uncomputeOrdinal(year, ordinal) { + var table = isLeapYear(year) ? leapLadder : nonLeapLadder, + month0 = table.findIndex(function (i) { + return i < ordinal; + }), + day = ordinal - table[month0]; + return { + month: month0 + 1, + day: day + }; + } + /** + * @private + */ + + + function gregorianToWeek(gregObj) { + var year = gregObj.year, + month = gregObj.month, + day = gregObj.day, + ordinal = computeOrdinal(year, month, day), + weekday = dayOfWeek(year, month, day); + var weekNumber = Math.floor((ordinal - weekday + 10) / 7), + weekYear; + + if (weekNumber < 1) { + weekYear = year - 1; + weekNumber = weeksInWeekYear(weekYear); + } else if (weekNumber > weeksInWeekYear(year)) { + weekYear = year + 1; + weekNumber = 1; + } else { + weekYear = year; + } + + return Object.assign({ + weekYear: weekYear, + weekNumber: weekNumber, + weekday: weekday + }, timeObject(gregObj)); + } + function weekToGregorian(weekData) { + var weekYear = weekData.weekYear, + weekNumber = weekData.weekNumber, + weekday = weekData.weekday, + weekdayOfJan4 = dayOfWeek(weekYear, 1, 4), + yearInDays = daysInYear(weekYear); + var ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3, + year; + + if (ordinal < 1) { + year = weekYear - 1; + ordinal += daysInYear(year); + } else if (ordinal > yearInDays) { + year = weekYear + 1; + ordinal -= daysInYear(weekYear); + } else { + year = weekYear; + } + + var _uncomputeOrdinal = uncomputeOrdinal(year, ordinal), + month = _uncomputeOrdinal.month, + day = _uncomputeOrdinal.day; + + return Object.assign({ + year: year, + month: month, + day: day + }, timeObject(weekData)); + } + function gregorianToOrdinal(gregData) { + var year = gregData.year, + month = gregData.month, + day = gregData.day, + ordinal = computeOrdinal(year, month, day); + return Object.assign({ + year: year, + ordinal: ordinal + }, timeObject(gregData)); + } + function ordinalToGregorian(ordinalData) { + var year = ordinalData.year, + ordinal = ordinalData.ordinal, + _uncomputeOrdinal2 = uncomputeOrdinal(year, ordinal), + month = _uncomputeOrdinal2.month, + day = _uncomputeOrdinal2.day; + + return Object.assign({ + year: year, + month: month, + day: day + }, timeObject(ordinalData)); + } + function hasInvalidWeekData(obj) { + var validYear = isInteger(obj.weekYear), + validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)), + validWeekday = integerBetween(obj.weekday, 1, 7); + + if (!validYear) { + return unitOutOfRange("weekYear", obj.weekYear); + } else if (!validWeek) { + return unitOutOfRange("week", obj.week); + } else if (!validWeekday) { + return unitOutOfRange("weekday", obj.weekday); + } else return false; + } + function hasInvalidOrdinalData(obj) { + var validYear = isInteger(obj.year), + validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year)); + + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validOrdinal) { + return unitOutOfRange("ordinal", obj.ordinal); + } else return false; + } + function hasInvalidGregorianData(obj) { + var validYear = isInteger(obj.year), + validMonth = integerBetween(obj.month, 1, 12), + validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month)); + + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validMonth) { + return unitOutOfRange("month", obj.month); + } else if (!validDay) { + return unitOutOfRange("day", obj.day); + } else return false; + } + function hasInvalidTimeData(obj) { + var hour = obj.hour, + minute = obj.minute, + second = obj.second, + millisecond = obj.millisecond; + var validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0, + validMinute = integerBetween(minute, 0, 59), + validSecond = integerBetween(second, 0, 59), + validMillisecond = integerBetween(millisecond, 0, 999); + + if (!validHour) { + return unitOutOfRange("hour", hour); + } else if (!validMinute) { + return unitOutOfRange("minute", minute); + } else if (!validSecond) { + return unitOutOfRange("second", second); + } else if (!validMillisecond) { + return unitOutOfRange("millisecond", millisecond); + } else return false; + } + + var INVALID$2 = "Invalid DateTime"; + var MAX_DATE = 8.64e15; + + function unsupportedZone(zone) { + return new Invalid("unsupported zone", "the zone \"" + zone.name + "\" is not supported"); + } // we cache week data on the DT object and this intermediates the cache + + + function possiblyCachedWeekData(dt) { + if (dt.weekData === null) { + dt.weekData = gregorianToWeek(dt.c); + } + + return dt.weekData; + } // clone really means, "make a new object with these modifications". all "setters" really use this + // to create a new object while only changing some of the properties + + + function clone$1(inst, alts) { + var current = { + ts: inst.ts, + zone: inst.zone, + c: inst.c, + o: inst.o, + loc: inst.loc, + invalid: inst.invalid + }; + return new DateTime(Object.assign({}, current, alts, { + old: current + })); + } // find the right offset a given local time. The o input is our guess, which determines which + // offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST) + + + function fixOffset(localTS, o, tz) { + // Our UTC time is just a guess because our offset is just a guess + var utcGuess = localTS - o * 60 * 1000; // Test whether the zone matches the offset for this ts + + var o2 = tz.offset(utcGuess); // If so, offset didn't change and we're done + + if (o === o2) { + return [utcGuess, o]; + } // If not, change the ts by the difference in the offset + + + utcGuess -= (o2 - o) * 60 * 1000; // If that gives us the local time we want, we're done + + var o3 = tz.offset(utcGuess); + + if (o2 === o3) { + return [utcGuess, o2]; + } // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time + + + return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)]; + } // convert an epoch timestamp into a calendar object with the given offset + + + function tsToObj(ts, offset) { + ts += offset * 60 * 1000; + var d = new Date(ts); + return { + year: d.getUTCFullYear(), + month: d.getUTCMonth() + 1, + day: d.getUTCDate(), + hour: d.getUTCHours(), + minute: d.getUTCMinutes(), + second: d.getUTCSeconds(), + millisecond: d.getUTCMilliseconds() + }; + } // convert a calendar object to a epoch timestamp + + + function objToTS(obj, offset, zone) { + return fixOffset(objToLocalTS(obj), offset, zone); + } // create a new DT instance by adding a duration, adjusting for DSTs + + + function adjustTime(inst, dur) { + var _dur; + + var keys = Object.keys(dur.values); + + if (keys.indexOf("milliseconds") === -1) { + keys.push("milliseconds"); + } + + dur = (_dur = dur).shiftTo.apply(_dur, keys); + var oPre = inst.o, + year = inst.c.year + dur.years, + month = inst.c.month + dur.months + dur.quarters * 3, + c = Object.assign({}, inst.c, { + year: year, + month: month, + day: Math.min(inst.c.day, daysInMonth(year, month)) + dur.days + dur.weeks * 7 + }), + millisToAdd = Duration.fromObject({ + hours: dur.hours, + minutes: dur.minutes, + seconds: dur.seconds, + milliseconds: dur.milliseconds + }).as("milliseconds"), + localTS = objToLocalTS(c); + + var _fixOffset = fixOffset(localTS, oPre, inst.zone), + ts = _fixOffset[0], + o = _fixOffset[1]; + + if (millisToAdd !== 0) { + ts += millisToAdd; // that could have changed the offset by going over a DST, but we want to keep the ts the same + + o = inst.zone.offset(ts); + } + + return { + ts: ts, + o: o + }; + } // helper useful in turning the results of parsing into real dates + // by handling the zone options + + + function parseDataToDateTime(parsed, parsedZone, opts, format, text) { + var setZone = opts.setZone, + zone = opts.zone; + + if (parsed && Object.keys(parsed).length !== 0) { + var interpretationZone = parsedZone || zone, + inst = DateTime.fromObject(Object.assign(parsed, opts, { + zone: interpretationZone, + // setZone is a valid option in the calling methods, but not in fromObject + setZone: undefined + })); + return setZone ? inst : inst.setZone(zone); + } else { + return DateTime.invalid(new Invalid("unparsable", "the input \"" + text + "\" can't be parsed as " + format)); + } + } // if you want to output a technical format (e.g. RFC 2822), this helper + // helps handle the details + + + function toTechFormat(dt, format, allowZ) { + if (allowZ === void 0) { + allowZ = true; + } + + return dt.isValid ? Formatter.create(Locale.create("en-US"), { + allowZ: allowZ, + forceSimple: true + }).formatDateTimeFromString(dt, format) : null; + } // technical time formats (e.g. the time part of ISO 8601), take some options + // and this commonizes their handling + + + function toTechTimeFormat(dt, _ref) { + var _ref$suppressSeconds = _ref.suppressSeconds, + suppressSeconds = _ref$suppressSeconds === void 0 ? false : _ref$suppressSeconds, + _ref$suppressMillisec = _ref.suppressMilliseconds, + suppressMilliseconds = _ref$suppressMillisec === void 0 ? false : _ref$suppressMillisec, + includeOffset = _ref.includeOffset, + _ref$includeZone = _ref.includeZone, + includeZone = _ref$includeZone === void 0 ? false : _ref$includeZone, + _ref$spaceZone = _ref.spaceZone, + spaceZone = _ref$spaceZone === void 0 ? false : _ref$spaceZone, + _ref$format = _ref.format, + format = _ref$format === void 0 ? "extended" : _ref$format; + var fmt = format === "basic" ? "HHmm" : "HH:mm"; + + if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) { + fmt += format === "basic" ? "ss" : ":ss"; + + if (!suppressMilliseconds || dt.millisecond !== 0) { + fmt += ".SSS"; + } + } + + if ((includeZone || includeOffset) && spaceZone) { + fmt += " "; + } + + if (includeZone) { + fmt += "z"; + } else if (includeOffset) { + fmt += format === "basic" ? "ZZZ" : "ZZ"; + } + + return toTechFormat(dt, fmt); + } // defaults for unspecified units in the supported calendars + + + var defaultUnitValues = { + month: 1, + day: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }, + defaultWeekUnitValues = { + weekNumber: 1, + weekday: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }, + defaultOrdinalUnitValues = { + ordinal: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; // Units in the supported calendars, sorted by bigness + + var orderedUnits$1 = ["year", "month", "day", "hour", "minute", "second", "millisecond"], + orderedWeekUnits = ["weekYear", "weekNumber", "weekday", "hour", "minute", "second", "millisecond"], + orderedOrdinalUnits = ["year", "ordinal", "hour", "minute", "second", "millisecond"]; // standardize case and plurality in units + + function normalizeUnit(unit) { + var normalized = { + year: "year", + years: "year", + month: "month", + months: "month", + day: "day", + days: "day", + hour: "hour", + hours: "hour", + minute: "minute", + minutes: "minute", + quarter: "quarter", + quarters: "quarter", + second: "second", + seconds: "second", + millisecond: "millisecond", + milliseconds: "millisecond", + weekday: "weekday", + weekdays: "weekday", + weeknumber: "weekNumber", + weeksnumber: "weekNumber", + weeknumbers: "weekNumber", + weekyear: "weekYear", + weekyears: "weekYear", + ordinal: "ordinal" + }[unit.toLowerCase()]; + if (!normalized) throw new InvalidUnitError(unit); + return normalized; + } // this is a dumbed down version of fromObject() that runs about 60% faster + // but doesn't do any validation, makes a bunch of assumptions about what units + // are present, and so on. + + + function quickDT(obj, zone) { + // assume we have the higher-order units + for (var _iterator = _createForOfIteratorHelperLoose(orderedUnits$1), _step; !(_step = _iterator()).done;) { + var u = _step.value; + + if (isUndefined(obj[u])) { + obj[u] = defaultUnitValues[u]; + } + } + + var invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj); + + if (invalid) { + return DateTime.invalid(invalid); + } + + var tsNow = Settings.now(), + offsetProvis = zone.offset(tsNow), + _objToTS = objToTS(obj, offsetProvis, zone), + ts = _objToTS[0], + o = _objToTS[1]; + + return new DateTime({ + ts: ts, + zone: zone, + o: o + }); + } + + function diffRelative(start, end, opts) { + var round = isUndefined(opts.round) ? true : opts.round, + format = function format(c, unit) { + c = roundTo(c, round || opts.calendary ? 0 : 2, true); + var formatter = end.loc.clone(opts).relFormatter(opts); + return formatter.format(c, unit); + }, + differ = function differ(unit) { + if (opts.calendary) { + if (!end.hasSame(start, unit)) { + return end.startOf(unit).diff(start.startOf(unit), unit).get(unit); + } else return 0; + } else { + return end.diff(start, unit).get(unit); + } + }; + + if (opts.unit) { + return format(differ(opts.unit), opts.unit); + } + + for (var _iterator2 = _createForOfIteratorHelperLoose(opts.units), _step2; !(_step2 = _iterator2()).done;) { + var unit = _step2.value; + var count = differ(unit); + + if (Math.abs(count) >= 1) { + return format(count, unit); + } + } + + return format(0, opts.units[opts.units.length - 1]); + } + /** + * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them. + * + * A DateTime comprises of: + * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch. + * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone). + * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`. + * + * Here is a brief overview of the most commonly used functionality it provides: + * + * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}. + * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month}, + * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors. + * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors. + * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors. + * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}. + * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}. + * + * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation. + */ + + + var DateTime = /*#__PURE__*/function () { + /** + * @access private + */ + function DateTime(config) { + var zone = config.zone || Settings.defaultZone; + var invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid("invalid input") : null) || (!zone.isValid ? unsupportedZone(zone) : null); + /** + * @access private + */ + + this.ts = isUndefined(config.ts) ? Settings.now() : config.ts; + var c = null, + o = null; + + if (!invalid) { + var unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone); + + if (unchanged) { + var _ref2 = [config.old.c, config.old.o]; + c = _ref2[0]; + o = _ref2[1]; + } else { + var ot = zone.offset(this.ts); + c = tsToObj(this.ts, ot); + invalid = Number.isNaN(c.year) ? new Invalid("invalid input") : null; + c = invalid ? null : c; + o = invalid ? null : ot; + } + } + /** + * @access private + */ + + + this._zone = zone; + /** + * @access private + */ + + this.loc = config.loc || Locale.create(); + /** + * @access private + */ + + this.invalid = invalid; + /** + * @access private + */ + + this.weekData = null; + /** + * @access private + */ + + this.c = c; + /** + * @access private + */ + + this.o = o; + /** + * @access private + */ + + this.isLuxonDateTime = true; + } // CONSTRUCT + + /** + * Create a local DateTime + * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used + * @param {number} [month=1] - The month, 1-indexed + * @param {number} [day=1] - The day of the month + * @param {number} [hour=0] - The hour of the day, in 24-hour time + * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59 + * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59 + * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999 + * @example DateTime.local() //~> now + * @example DateTime.local(2017) //~> 2017-01-01T00:00:00 + * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00 + * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00 + * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00 + * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00 + * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10 + * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765 + * @return {DateTime} + */ + + + DateTime.local = function local(year, month, day, hour, minute, second, millisecond) { + if (isUndefined(year)) { + return new DateTime({ + ts: Settings.now() + }); + } else { + return quickDT({ + year: year, + month: month, + day: day, + hour: hour, + minute: minute, + second: second, + millisecond: millisecond + }, Settings.defaultZone); + } + } + /** + * Create a DateTime in UTC + * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used + * @param {number} [month=1] - The month, 1-indexed + * @param {number} [day=1] - The day of the month + * @param {number} [hour=0] - The hour of the day, in 24-hour time + * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59 + * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59 + * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999 + * @example DateTime.utc() //~> now + * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z + * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z + * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z + * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z + * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z + * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z + * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z + * @return {DateTime} + */ + ; + + DateTime.utc = function utc(year, month, day, hour, minute, second, millisecond) { + if (isUndefined(year)) { + return new DateTime({ + ts: Settings.now(), + zone: FixedOffsetZone.utcInstance + }); + } else { + return quickDT({ + year: year, + month: month, + day: day, + hour: hour, + minute: minute, + second: second, + millisecond: millisecond + }, FixedOffsetZone.utcInstance); + } + } + /** + * Create a DateTime from a Javascript Date object. Uses the default zone. + * @param {Date} date - a Javascript Date object + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @return {DateTime} + */ + ; + + DateTime.fromJSDate = function fromJSDate(date, options) { + if (options === void 0) { + options = {}; + } + + var ts = isDate(date) ? date.valueOf() : NaN; + + if (Number.isNaN(ts)) { + return DateTime.invalid("invalid input"); + } + + var zoneToUse = normalizeZone(options.zone, Settings.defaultZone); + + if (!zoneToUse.isValid) { + return DateTime.invalid(unsupportedZone(zoneToUse)); + } + + return new DateTime({ + ts: ts, + zone: zoneToUse, + loc: Locale.fromObject(options) + }); + } + /** + * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone. + * @param {number} milliseconds - a number of milliseconds since 1970 UTC + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance + * @return {DateTime} + */ + ; + + DateTime.fromMillis = function fromMillis(milliseconds, options) { + if (options === void 0) { + options = {}; + } + + if (!isNumber(milliseconds)) { + throw new InvalidArgumentError("fromMillis requires a numerical input, but received a " + typeof milliseconds + " with value " + milliseconds); + } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) { + // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start + return DateTime.invalid("Timestamp out of range"); + } else { + return new DateTime({ + ts: milliseconds, + zone: normalizeZone(options.zone, Settings.defaultZone), + loc: Locale.fromObject(options) + }); + } + } + /** + * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone. + * @param {number} seconds - a number of seconds since 1970 UTC + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance + * @return {DateTime} + */ + ; + + DateTime.fromSeconds = function fromSeconds(seconds, options) { + if (options === void 0) { + options = {}; + } + + if (!isNumber(seconds)) { + throw new InvalidArgumentError("fromSeconds requires a numerical input"); + } else { + return new DateTime({ + ts: seconds * 1000, + zone: normalizeZone(options.zone, Settings.defaultZone), + loc: Locale.fromObject(options) + }); + } + } + /** + * Create a DateTime from a Javascript object with keys like 'year' and 'hour' with reasonable defaults. + * @param {Object} obj - the object to create the DateTime from + * @param {number} obj.year - a year, such as 1987 + * @param {number} obj.month - a month, 1-12 + * @param {number} obj.day - a day of the month, 1-31, depending on the month + * @param {number} obj.ordinal - day of the year, 1-365 or 366 + * @param {number} obj.weekYear - an ISO week year + * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year + * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday + * @param {number} obj.hour - hour of the day, 0-23 + * @param {number} obj.minute - minute of the hour, 0-59 + * @param {number} obj.second - second of the minute, 0-59 + * @param {number} obj.millisecond - millisecond of the second, 0-999 + * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone() + * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25' + * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01' + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06 + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }), + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' }) + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' }) + * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13' + * @return {DateTime} + */ + ; + + DateTime.fromObject = function fromObject(obj) { + var zoneToUse = normalizeZone(obj.zone, Settings.defaultZone); + + if (!zoneToUse.isValid) { + return DateTime.invalid(unsupportedZone(zoneToUse)); + } + + var tsNow = Settings.now(), + offsetProvis = zoneToUse.offset(tsNow), + normalized = normalizeObject(obj, normalizeUnit, ["zone", "locale", "outputCalendar", "numberingSystem"]), + containsOrdinal = !isUndefined(normalized.ordinal), + containsGregorYear = !isUndefined(normalized.year), + containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), + containsGregor = containsGregorYear || containsGregorMD, + definiteWeekDef = normalized.weekYear || normalized.weekNumber, + loc = Locale.fromObject(obj); // cases: + // just a weekday -> this week's instance of that weekday, no worries + // (gregorian data or ordinal) + (weekYear or weekNumber) -> error + // (gregorian month or day) + ordinal -> error + // otherwise just use weeks or ordinals or gregorian, depending on what's specified + + if ((containsGregor || containsOrdinal) && definiteWeekDef) { + throw new ConflictingSpecificationError("Can't mix weekYear/weekNumber units with year/month/day or ordinals"); + } + + if (containsGregorMD && containsOrdinal) { + throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day"); + } + + var useWeekData = definiteWeekDef || normalized.weekday && !containsGregor; // configure ourselves to deal with gregorian dates or week stuff + + var units, + defaultValues, + objNow = tsToObj(tsNow, offsetProvis); + + if (useWeekData) { + units = orderedWeekUnits; + defaultValues = defaultWeekUnitValues; + objNow = gregorianToWeek(objNow); + } else if (containsOrdinal) { + units = orderedOrdinalUnits; + defaultValues = defaultOrdinalUnitValues; + objNow = gregorianToOrdinal(objNow); + } else { + units = orderedUnits$1; + defaultValues = defaultUnitValues; + } // set default values for missing stuff + + + var foundFirst = false; + + for (var _iterator3 = _createForOfIteratorHelperLoose(units), _step3; !(_step3 = _iterator3()).done;) { + var u = _step3.value; + var v = normalized[u]; + + if (!isUndefined(v)) { + foundFirst = true; + } else if (foundFirst) { + normalized[u] = defaultValues[u]; + } else { + normalized[u] = objNow[u]; + } + } // make sure the values we have are in range + + + var higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized), + invalid = higherOrderInvalid || hasInvalidTimeData(normalized); + + if (invalid) { + return DateTime.invalid(invalid); + } // compute the actual time + + + var gregorian = useWeekData ? weekToGregorian(normalized) : containsOrdinal ? ordinalToGregorian(normalized) : normalized, + _objToTS2 = objToTS(gregorian, offsetProvis, zoneToUse), + tsFinal = _objToTS2[0], + offsetFinal = _objToTS2[1], + inst = new DateTime({ + ts: tsFinal, + zone: zoneToUse, + o: offsetFinal, + loc: loc + }); // gregorian data + weekday serves only to validate + + + if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) { + return DateTime.invalid("mismatched weekday", "you can't specify both a weekday of " + normalized.weekday + " and a date of " + inst.toISO()); + } + + return inst; + } + /** + * Create a DateTime from an ISO 8601 string + * @param {string} text - the ISO string + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromISO('2016-05-25T09:08:34.123') + * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00') + * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true}) + * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'}) + * @example DateTime.fromISO('2016-W05-4') + * @return {DateTime} + */ + ; + + DateTime.fromISO = function fromISO(text, opts) { + if (opts === void 0) { + opts = {}; + } + + var _parseISODate = parseISODate(text), + vals = _parseISODate[0], + parsedZone = _parseISODate[1]; + + return parseDataToDateTime(vals, parsedZone, opts, "ISO 8601", text); + } + /** + * Create a DateTime from an RFC 2822 string + * @param {string} text - the RFC 2822 string + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in. + * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT') + * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600') + * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z') + * @return {DateTime} + */ + ; + + DateTime.fromRFC2822 = function fromRFC2822(text, opts) { + if (opts === void 0) { + opts = {}; + } + + var _parseRFC2822Date = parseRFC2822Date(text), + vals = _parseRFC2822Date[0], + parsedZone = _parseRFC2822Date[1]; + + return parseDataToDateTime(vals, parsedZone, opts, "RFC 2822", text); + } + /** + * Create a DateTime from an HTTP header date + * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + * @param {string} text - the HTTP header date + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in. + * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods. + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT') + * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT') + * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994') + * @return {DateTime} + */ + ; + + DateTime.fromHTTP = function fromHTTP(text, opts) { + if (opts === void 0) { + opts = {}; + } + + var _parseHTTPDate = parseHTTPDate(text), + vals = _parseHTTPDate[0], + parsedZone = _parseHTTPDate[1]; + + return parseDataToDateTime(vals, parsedZone, opts, "HTTP", opts); + } + /** + * Create a DateTime from an input string and format string. + * Defaults to en-US if no locale has been specified, regardless of the system's locale. + * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens + * @param {string} text - the string to parse + * @param {string} fmt - the format the string is expected to be in (see the link below for the formats) + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale + * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @return {DateTime} + */ + ; + + DateTime.fromFormat = function fromFormat(text, fmt, opts) { + if (opts === void 0) { + opts = {}; + } + + if (isUndefined(text) || isUndefined(fmt)) { + throw new InvalidArgumentError("fromFormat requires an input string and a format"); + } + + var _opts = opts, + _opts$locale = _opts.locale, + locale = _opts$locale === void 0 ? null : _opts$locale, + _opts$numberingSystem = _opts.numberingSystem, + numberingSystem = _opts$numberingSystem === void 0 ? null : _opts$numberingSystem, + localeToUse = Locale.fromOpts({ + locale: locale, + numberingSystem: numberingSystem, + defaultToEN: true + }), + _parseFromTokens = parseFromTokens(localeToUse, text, fmt), + vals = _parseFromTokens[0], + parsedZone = _parseFromTokens[1], + invalid = _parseFromTokens[2]; + + if (invalid) { + return DateTime.invalid(invalid); + } else { + return parseDataToDateTime(vals, parsedZone, opts, "format " + fmt, text); + } + } + /** + * @deprecated use fromFormat instead + */ + ; + + DateTime.fromString = function fromString(text, fmt, opts) { + if (opts === void 0) { + opts = {}; + } + + return DateTime.fromFormat(text, fmt, opts); + } + /** + * Create a DateTime from a SQL date, time, or datetime + * Defaults to en-US if no locale has been specified, regardless of the system's locale + * @param {string} text - the string to parse + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale + * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @example DateTime.fromSQL('2017-05-15') + * @example DateTime.fromSQL('2017-05-15 09:12:34') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true }) + * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' }) + * @example DateTime.fromSQL('09:12:34.342') + * @return {DateTime} + */ + ; + + DateTime.fromSQL = function fromSQL(text, opts) { + if (opts === void 0) { + opts = {}; + } + + var _parseSQL = parseSQL(text), + vals = _parseSQL[0], + parsedZone = _parseSQL[1]; + + return parseDataToDateTime(vals, parsedZone, opts, "SQL", text); + } + /** + * Create an invalid DateTime. + * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {DateTime} + */ + ; + + DateTime.invalid = function invalid(reason, explanation) { + if (explanation === void 0) { + explanation = null; + } + + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the DateTime is invalid"); + } + + var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + + if (Settings.throwOnInvalid) { + throw new InvalidDateTimeError(invalid); + } else { + return new DateTime({ + invalid: invalid + }); + } + } + /** + * Check if an object is a DateTime. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + ; + + DateTime.isDateTime = function isDateTime(o) { + return o && o.isLuxonDateTime || false; + } // INFO + + /** + * Get the value of unit. + * @param {string} unit - a unit such as 'minute' or 'day' + * @example DateTime.local(2017, 7, 4).get('month'); //=> 7 + * @example DateTime.local(2017, 7, 4).get('day'); //=> 4 + * @return {number} + */ + ; + + var _proto = DateTime.prototype; + + _proto.get = function get(unit) { + return this[unit]; + } + /** + * Returns whether the DateTime is valid. Invalid DateTimes occur when: + * * The DateTime was created from invalid calendar information, such as the 13th month or February 30 + * * The DateTime was created by an operation on another invalid date + * @type {boolean} + */ + ; + + /** + * Returns the resolved Intl options for this DateTime. + * This is useful in understanding the behavior of formatting methods + * @param {Object} opts - the same options as toLocaleString + * @return {Object} + */ + _proto.resolvedLocaleOpts = function resolvedLocaleOpts(opts) { + if (opts === void 0) { + opts = {}; + } + + var _Formatter$create$res = Formatter.create(this.loc.clone(opts), opts).resolvedOptions(this), + locale = _Formatter$create$res.locale, + numberingSystem = _Formatter$create$res.numberingSystem, + calendar = _Formatter$create$res.calendar; + + return { + locale: locale, + numberingSystem: numberingSystem, + outputCalendar: calendar + }; + } // TRANSFORM + + /** + * "Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime. + * + * Equivalent to {@link setZone}('utc') + * @param {number} [offset=0] - optionally, an offset from UTC in minutes + * @param {Object} [opts={}] - options to pass to `setZone()` + * @return {DateTime} + */ + ; + + _proto.toUTC = function toUTC(offset, opts) { + if (offset === void 0) { + offset = 0; + } + + if (opts === void 0) { + opts = {}; + } + + return this.setZone(FixedOffsetZone.instance(offset), opts); + } + /** + * "Set" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime. + * + * Equivalent to `setZone('local')` + * @return {DateTime} + */ + ; + + _proto.toLocal = function toLocal() { + return this.setZone(Settings.defaultZone); + } + /** + * "Set" the DateTime's zone to specified zone. Returns a newly-constructed DateTime. + * + * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones. + * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class. + * @param {Object} opts - options + * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this. + * @return {DateTime} + */ + ; + + _proto.setZone = function setZone(zone, _temp) { + var _ref3 = _temp === void 0 ? {} : _temp, + _ref3$keepLocalTime = _ref3.keepLocalTime, + keepLocalTime = _ref3$keepLocalTime === void 0 ? false : _ref3$keepLocalTime, + _ref3$keepCalendarTim = _ref3.keepCalendarTime, + keepCalendarTime = _ref3$keepCalendarTim === void 0 ? false : _ref3$keepCalendarTim; + + zone = normalizeZone(zone, Settings.defaultZone); + + if (zone.equals(this.zone)) { + return this; + } else if (!zone.isValid) { + return DateTime.invalid(unsupportedZone(zone)); + } else { + var newTS = this.ts; + + if (keepLocalTime || keepCalendarTime) { + var offsetGuess = zone.offset(this.ts); + var asObj = this.toObject(); + + var _objToTS3 = objToTS(asObj, offsetGuess, zone); + + newTS = _objToTS3[0]; + } + + return clone$1(this, { + ts: newTS, + zone: zone + }); + } + } + /** + * "Set" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime. + * @param {Object} properties - the properties to set + * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' }) + * @return {DateTime} + */ + ; + + _proto.reconfigure = function reconfigure(_temp2) { + var _ref4 = _temp2 === void 0 ? {} : _temp2, + locale = _ref4.locale, + numberingSystem = _ref4.numberingSystem, + outputCalendar = _ref4.outputCalendar; + + var loc = this.loc.clone({ + locale: locale, + numberingSystem: numberingSystem, + outputCalendar: outputCalendar + }); + return clone$1(this, { + loc: loc + }); + } + /** + * "Set" the locale. Returns a newly-constructed DateTime. + * Just a convenient alias for reconfigure({ locale }) + * @example DateTime.local(2017, 5, 25).setLocale('en-GB') + * @return {DateTime} + */ + ; + + _proto.setLocale = function setLocale(locale) { + return this.reconfigure({ + locale: locale + }); + } + /** + * "Set" the values of specified units. Returns a newly-constructed DateTime. + * You can only set units with this method; for "setting" metadata, see {@link reconfigure} and {@link setZone}. + * @param {Object} values - a mapping of units to numbers + * @example dt.set({ year: 2017 }) + * @example dt.set({ hour: 8, minute: 30 }) + * @example dt.set({ weekday: 5 }) + * @example dt.set({ year: 2005, ordinal: 234 }) + * @return {DateTime} + */ + ; + + _proto.set = function set(values) { + if (!this.isValid) return this; + var normalized = normalizeObject(values, normalizeUnit, []), + settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday); + var mixed; + + if (settingWeekStuff) { + mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized)); + } else if (!isUndefined(normalized.ordinal)) { + mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized)); + } else { + mixed = Object.assign(this.toObject(), normalized); // if we didn't set the day but we ended up on an overflow date, + // use the last day of the right month + + if (isUndefined(normalized.day)) { + mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day); + } + } + + var _objToTS4 = objToTS(mixed, this.o, this.zone), + ts = _objToTS4[0], + o = _objToTS4[1]; + + return clone$1(this, { + ts: ts, + o: o + }); + } + /** + * Add a period of time to this DateTime and return the resulting DateTime + * + * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between. + * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @example DateTime.local().plus(123) //~> in 123 milliseconds + * @example DateTime.local().plus({ minutes: 15 }) //~> in 15 minutes + * @example DateTime.local().plus({ days: 1 }) //~> this time tomorrow + * @example DateTime.local().plus({ days: -1 }) //~> this time yesterday + * @example DateTime.local().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min + * @example DateTime.local().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min + * @return {DateTime} + */ + ; + + _proto.plus = function plus(duration) { + if (!this.isValid) return this; + var dur = friendlyDuration(duration); + return clone$1(this, adjustTime(this, dur)); + } + /** + * Subtract a period of time to this DateTime and return the resulting DateTime + * See {@link plus} + * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + @return {DateTime} + */ + ; + + _proto.minus = function minus(duration) { + if (!this.isValid) return this; + var dur = friendlyDuration(duration).negate(); + return clone$1(this, adjustTime(this, dur)); + } + /** + * "Set" this DateTime to the beginning of a unit of time. + * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01' + * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01' + * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00' + * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00' + * @return {DateTime} + */ + ; + + _proto.startOf = function startOf(unit) { + if (!this.isValid) return this; + var o = {}, + normalizedUnit = Duration.normalizeUnit(unit); + + switch (normalizedUnit) { + case "years": + o.month = 1; + // falls through + + case "quarters": + case "months": + o.day = 1; + // falls through + + case "weeks": + case "days": + o.hour = 0; + // falls through + + case "hours": + o.minute = 0; + // falls through + + case "minutes": + o.second = 0; + // falls through + + case "seconds": + o.millisecond = 0; + break; + // no default, invalid units throw in normalizeUnit() + } + + if (normalizedUnit === "weeks") { + o.weekday = 1; + } + + if (normalizedUnit === "quarters") { + var q = Math.ceil(this.month / 3); + o.month = (q - 1) * 3 + 1; + } + + return this.set(o); + } + /** + * "Set" this DateTime to the end (meaning the last millisecond) of a unit of time + * @param {string} unit - The unit to go to the end of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00' + * @return {DateTime} + */ + ; + + _proto.endOf = function endOf(unit) { + var _this$plus; + + return this.isValid ? this.plus((_this$plus = {}, _this$plus[unit] = 1, _this$plus)).startOf(unit).minus(1) : this; + } // OUTPUT + + /** + * Returns a string representation of this DateTime formatted according to the specified format string. + * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens). + * Defaults to en-US if no locale has been specified, regardless of the system's locale. + * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens + * @param {string} fmt - the format string + * @param {Object} opts - opts to override the configuration options + * @example DateTime.local().toFormat('yyyy LLL dd') //=> '2017 Apr 22' + * @example DateTime.local().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22' + * @example DateTime.local().toFormat('yyyy LLL dd', { locale: "fr" }) //=> '2017 avr. 22' + * @example DateTime.local().toFormat("HH 'hours and' mm 'minutes'") //=> '20 hours and 55 minutes' + * @return {string} + */ + ; + + _proto.toFormat = function toFormat(fmt, opts) { + if (opts === void 0) { + opts = {}; + } + + return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID$2; + } + /** + * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`. + * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation + * of the DateTime in the assigned locale. + * Defaults to the system's locale if no locale has been specified + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options + * @example DateTime.local().toLocaleString(); //=> 4/20/2017 + * @example DateTime.local().setLocale('en-gb').toLocaleString(); //=> '20/04/2017' + * @example DateTime.local().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017' + * @example DateTime.local().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017' + * @example DateTime.local().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM' + * @example DateTime.local().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM' + * @example DateTime.local().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20' + * @example DateTime.local().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM' + * @example DateTime.local().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32' + * @return {string} + */ + ; + + _proto.toLocaleString = function toLocaleString(opts) { + if (opts === void 0) { + opts = DATE_SHORT; + } + + return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this) : INVALID$2; + } + /** + * Returns an array of format "parts", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output. + * Defaults to the system's locale if no locale has been specified + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts + * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`. + * @example DateTime.local().toLocaleParts(); //=> [ + * //=> { type: 'day', value: '25' }, + * //=> { type: 'literal', value: '/' }, + * //=> { type: 'month', value: '05' }, + * //=> { type: 'literal', value: '/' }, + * //=> { type: 'year', value: '1982' } + * //=> ] + */ + ; + + _proto.toLocaleParts = function toLocaleParts(opts) { + if (opts === void 0) { + opts = {}; + } + + return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : []; + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z' + * @example DateTime.local().toISO() //=> '2017-04-22T20:47:05.335-04:00' + * @example DateTime.local().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335' + * @example DateTime.local().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400' + * @return {string} + */ + ; + + _proto.toISO = function toISO(opts) { + if (opts === void 0) { + opts = {}; + } + + if (!this.isValid) { + return null; + } + + return this.toISODate(opts) + "T" + this.toISOTime(opts); + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's date component + * @param {Object} opts - options + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25' + * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525' + * @return {string} + */ + ; + + _proto.toISODate = function toISODate(_temp3) { + var _ref5 = _temp3 === void 0 ? {} : _temp3, + _ref5$format = _ref5.format, + format = _ref5$format === void 0 ? "extended" : _ref5$format; + + var fmt = format === "basic" ? "yyyyMMdd" : "yyyy-MM-dd"; + + if (this.year > 9999) { + fmt = "+" + fmt; + } + + return toTechFormat(this, fmt); + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's week date + * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2' + * @return {string} + */ + ; + + _proto.toISOWeekDate = function toISOWeekDate() { + return toTechFormat(this, "kkkk-'W'WW-c"); + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's time component + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z' + * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z' + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z' + * @return {string} + */ + ; + + _proto.toISOTime = function toISOTime(_temp4) { + var _ref6 = _temp4 === void 0 ? {} : _temp4, + _ref6$suppressMillise = _ref6.suppressMilliseconds, + suppressMilliseconds = _ref6$suppressMillise === void 0 ? false : _ref6$suppressMillise, + _ref6$suppressSeconds = _ref6.suppressSeconds, + suppressSeconds = _ref6$suppressSeconds === void 0 ? false : _ref6$suppressSeconds, + _ref6$includeOffset = _ref6.includeOffset, + includeOffset = _ref6$includeOffset === void 0 ? true : _ref6$includeOffset, + _ref6$format = _ref6.format, + format = _ref6$format === void 0 ? "extended" : _ref6$format; + + return toTechTimeFormat(this, { + suppressSeconds: suppressSeconds, + suppressMilliseconds: suppressMilliseconds, + includeOffset: includeOffset, + format: format + }); + } + /** + * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC + * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000' + * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400' + * @return {string} + */ + ; + + _proto.toRFC2822 = function toRFC2822() { + return toTechFormat(this, "EEE, dd LLL yyyy HH:mm:ss ZZZ", false); + } + /** + * Returns a string representation of this DateTime appropriate for use in HTTP headers. + * Specifically, the string conforms to RFC 1123. + * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT' + * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT' + * @return {string} + */ + ; + + _proto.toHTTP = function toHTTP() { + return toTechFormat(this.toUTC(), "EEE, dd LLL yyyy HH:mm:ss 'GMT'"); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL Date + * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13' + * @return {string} + */ + ; + + _proto.toSQLDate = function toSQLDate() { + return toTechFormat(this, "yyyy-MM-dd"); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL Time + * @param {Object} opts - options + * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset. + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @example DateTime.utc().toSQL() //=> '05:15:16.345' + * @example DateTime.local().toSQL() //=> '05:15:16.345 -04:00' + * @example DateTime.local().toSQL({ includeOffset: false }) //=> '05:15:16.345' + * @example DateTime.local().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York' + * @return {string} + */ + ; + + _proto.toSQLTime = function toSQLTime(_temp5) { + var _ref7 = _temp5 === void 0 ? {} : _temp5, + _ref7$includeOffset = _ref7.includeOffset, + includeOffset = _ref7$includeOffset === void 0 ? true : _ref7$includeOffset, + _ref7$includeZone = _ref7.includeZone, + includeZone = _ref7$includeZone === void 0 ? false : _ref7$includeZone; + + return toTechTimeFormat(this, { + includeOffset: includeOffset, + includeZone: includeZone, + spaceZone: true + }); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL DateTime + * @param {Object} opts - options + * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset. + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z' + * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00' + * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000' + * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York' + * @return {string} + */ + ; + + _proto.toSQL = function toSQL(opts) { + if (opts === void 0) { + opts = {}; + } + + if (!this.isValid) { + return null; + } + + return this.toSQLDate() + " " + this.toSQLTime(opts); + } + /** + * Returns a string representation of this DateTime appropriate for debugging + * @return {string} + */ + ; + + _proto.toString = function toString() { + return this.isValid ? this.toISO() : INVALID$2; + } + /** + * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis} + * @return {number} + */ + ; + + _proto.valueOf = function valueOf() { + return this.toMillis(); + } + /** + * Returns the epoch milliseconds of this DateTime. + * @return {number} + */ + ; + + _proto.toMillis = function toMillis() { + return this.isValid ? this.ts : NaN; + } + /** + * Returns the epoch seconds of this DateTime. + * @return {number} + */ + ; + + _proto.toSeconds = function toSeconds() { + return this.isValid ? this.ts / 1000 : NaN; + } + /** + * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON. + * @return {string} + */ + ; + + _proto.toJSON = function toJSON() { + return this.toISO(); + } + /** + * Returns a BSON serializable equivalent to this DateTime. + * @return {Date} + */ + ; + + _proto.toBSON = function toBSON() { + return this.toJSDate(); + } + /** + * Returns a Javascript object with this DateTime's year, month, day, and so on. + * @param opts - options for generating the object + * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output + * @example DateTime.local().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 } + * @return {Object} + */ + ; + + _proto.toObject = function toObject(opts) { + if (opts === void 0) { + opts = {}; + } + + if (!this.isValid) return {}; + var base = Object.assign({}, this.c); + + if (opts.includeConfig) { + base.outputCalendar = this.outputCalendar; + base.numberingSystem = this.loc.numberingSystem; + base.locale = this.loc.locale; + } + + return base; + } + /** + * Returns a Javascript Date equivalent to this DateTime. + * @return {Date} + */ + ; + + _proto.toJSDate = function toJSDate() { + return new Date(this.isValid ? this.ts : NaN); + } // COMPARE + + /** + * Return the difference between two DateTimes as a Duration. + * @param {DateTime} otherDateTime - the DateTime to compare this one to + * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration. + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @example + * var i1 = DateTime.fromISO('1982-05-25T09:45'), + * i2 = DateTime.fromISO('1983-10-14T10:30'); + * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 } + * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 } + * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 } + * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 } + * @return {Duration} + */ + ; + + _proto.diff = function diff(otherDateTime, unit, opts) { + if (unit === void 0) { + unit = "milliseconds"; + } + + if (opts === void 0) { + opts = {}; + } + + if (!this.isValid || !otherDateTime.isValid) { + return Duration.invalid(this.invalid || otherDateTime.invalid, "created by diffing an invalid DateTime"); + } + + var durOpts = Object.assign({ + locale: this.locale, + numberingSystem: this.numberingSystem + }, opts); + + var units = maybeArray(unit).map(Duration.normalizeUnit), + otherIsLater = otherDateTime.valueOf() > this.valueOf(), + earlier = otherIsLater ? this : otherDateTime, + later = otherIsLater ? otherDateTime : this, + diffed = _diff(earlier, later, units, durOpts); + + return otherIsLater ? diffed.negate() : diffed; + } + /** + * Return the difference between this DateTime and right now. + * See {@link diff} + * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @return {Duration} + */ + ; + + _proto.diffNow = function diffNow(unit, opts) { + if (unit === void 0) { + unit = "milliseconds"; + } + + if (opts === void 0) { + opts = {}; + } + + return this.diff(DateTime.local(), unit, opts); + } + /** + * Return an Interval spanning between this DateTime and another DateTime + * @param {DateTime} otherDateTime - the other end point of the Interval + * @return {Interval} + */ + ; + + _proto.until = function until(otherDateTime) { + return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this; + } + /** + * Return whether this DateTime is in the same unit of time as another DateTime + * @param {DateTime} otherDateTime - the other DateTime + * @param {string} unit - the unit of time to check sameness on + * @example DateTime.local().hasSame(otherDT, 'day'); //~> true if both the same calendar day + * @return {boolean} + */ + ; + + _proto.hasSame = function hasSame(otherDateTime, unit) { + if (!this.isValid) return false; + + if (unit === "millisecond") { + return this.valueOf() === otherDateTime.valueOf(); + } else { + var inputMs = otherDateTime.valueOf(); + return this.startOf(unit) <= inputMs && inputMs <= this.endOf(unit); + } + } + /** + * Equality check + * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid. + * To compare just the millisecond values, use `+dt1 === +dt2`. + * @param {DateTime} other - the other DateTime + * @return {boolean} + */ + ; + + _proto.equals = function equals(other) { + return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc); + } + /** + * Returns a string representation of a this time relative to now, such as "in two days". Can only internationalize if your + * platform supports Intl.RelativeTimeFormat. Rounds down by default. + * @param {Object} options - options that affect the output + * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now. + * @param {string} [options.style="long"] - the style of units, must be "long", "short", or "narrow" + * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of "years", "quarters", "months", "weeks", "days", "hours", "minutes", or "seconds" + * @param {boolean} [options.round=true] - whether to round the numbers in the output. + * @param {boolean} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding. + * @param {string} options.locale - override the locale of this DateTime + * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this + * @example DateTime.local().plus({ days: 1 }).toRelative() //=> "in 1 day" + * @example DateTime.local().setLocale("es").toRelative({ days: 1 }) //=> "dentro de 1 día" + * @example DateTime.local().plus({ days: 1 }).toRelative({ locale: "fr" }) //=> "dans 23 heures" + * @example DateTime.local().minus({ days: 2 }).toRelative() //=> "2 days ago" + * @example DateTime.local().minus({ days: 2 }).toRelative({ unit: "hours" }) //=> "48 hours ago" + * @example DateTime.local().minus({ hours: 36 }).toRelative({ round: false }) //=> "1.5 days ago" + */ + ; + + _proto.toRelative = function toRelative(options) { + if (options === void 0) { + options = {}; + } + + if (!this.isValid) return null; + var base = options.base || DateTime.fromObject({ + zone: this.zone + }), + padding = options.padding ? this < base ? -options.padding : options.padding : 0; + return diffRelative(base, this.plus(padding), Object.assign(options, { + numeric: "always", + units: ["years", "months", "days", "hours", "minutes", "seconds"] + })); + } + /** + * Returns a string representation of this date relative to today, such as "yesterday" or "next month". + * Only internationalizes on platforms that supports Intl.RelativeTimeFormat. + * @param {Object} options - options that affect the output + * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now. + * @param {string} options.locale - override the locale of this DateTime + * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of "years", "quarters", "months", "weeks", or "days" + * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this + * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar() //=> "tomorrow" + * @example DateTime.local().setLocale("es").plus({ days: 1 }).toRelative() //=> ""mañana" + * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar({ locale: "fr" }) //=> "demain" + * @example DateTime.local().minus({ days: 2 }).toRelativeCalendar() //=> "2 days ago" + */ + ; + + _proto.toRelativeCalendar = function toRelativeCalendar(options) { + if (options === void 0) { + options = {}; + } + + if (!this.isValid) return null; + return diffRelative(options.base || DateTime.fromObject({ + zone: this.zone + }), this, Object.assign(options, { + numeric: "auto", + units: ["years", "months", "days"], + calendary: true + })); + } + /** + * Return the min of several date times + * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum + * @return {DateTime} the min DateTime, or undefined if called with no argument + */ + ; + + DateTime.min = function min() { + for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) { + dateTimes[_key] = arguments[_key]; + } + + if (!dateTimes.every(DateTime.isDateTime)) { + throw new InvalidArgumentError("min requires all arguments be DateTimes"); + } + + return bestBy(dateTimes, function (i) { + return i.valueOf(); + }, Math.min); + } + /** + * Return the max of several date times + * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum + * @return {DateTime} the max DateTime, or undefined if called with no argument + */ + ; + + DateTime.max = function max() { + for (var _len2 = arguments.length, dateTimes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + dateTimes[_key2] = arguments[_key2]; + } + + if (!dateTimes.every(DateTime.isDateTime)) { + throw new InvalidArgumentError("max requires all arguments be DateTimes"); + } + + return bestBy(dateTimes, function (i) { + return i.valueOf(); + }, Math.max); + } // MISC + + /** + * Explain how a string would be parsed by fromFormat() + * @param {string} text - the string to parse + * @param {string} fmt - the format the string is expected to be in (see description) + * @param {Object} options - options taken by fromFormat() + * @return {Object} + */ + ; + + DateTime.fromFormatExplain = function fromFormatExplain(text, fmt, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$locale = _options.locale, + locale = _options$locale === void 0 ? null : _options$locale, + _options$numberingSys = _options.numberingSystem, + numberingSystem = _options$numberingSys === void 0 ? null : _options$numberingSys, + localeToUse = Locale.fromOpts({ + locale: locale, + numberingSystem: numberingSystem, + defaultToEN: true + }); + return explainFromTokens(localeToUse, text, fmt); + } + /** + * @deprecated use fromFormatExplain instead + */ + ; + + DateTime.fromStringExplain = function fromStringExplain(text, fmt, options) { + if (options === void 0) { + options = {}; + } + + return DateTime.fromFormatExplain(text, fmt, options); + } // FORMAT PRESETS + + /** + * {@link toLocaleString} format like 10/14/1983 + * @type {Object} + */ + ; + + _createClass(DateTime, [{ + key: "isValid", + get: function get() { + return this.invalid === null; + } + /** + * Returns an error code if this DateTime is invalid, or null if the DateTime is valid + * @type {string} + */ + + }, { + key: "invalidReason", + get: function get() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid + * @type {string} + */ + + }, { + key: "invalidExplanation", + get: function get() { + return this.invalid ? this.invalid.explanation : null; + } + /** + * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime + * + * @type {string} + */ + + }, { + key: "locale", + get: function get() { + return this.isValid ? this.loc.locale : null; + } + /** + * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime + * + * @type {string} + */ + + }, { + key: "numberingSystem", + get: function get() { + return this.isValid ? this.loc.numberingSystem : null; + } + /** + * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime + * + * @type {string} + */ + + }, { + key: "outputCalendar", + get: function get() { + return this.isValid ? this.loc.outputCalendar : null; + } + /** + * Get the time zone associated with this DateTime. + * @type {Zone} + */ + + }, { + key: "zone", + get: function get() { + return this._zone; + } + /** + * Get the name of the time zone. + * @type {string} + */ + + }, { + key: "zoneName", + get: function get() { + return this.isValid ? this.zone.name : null; + } + /** + * Get the year + * @example DateTime.local(2017, 5, 25).year //=> 2017 + * @type {number} + */ + + }, { + key: "year", + get: function get() { + return this.isValid ? this.c.year : NaN; + } + /** + * Get the quarter + * @example DateTime.local(2017, 5, 25).quarter //=> 2 + * @type {number} + */ + + }, { + key: "quarter", + get: function get() { + return this.isValid ? Math.ceil(this.c.month / 3) : NaN; + } + /** + * Get the month (1-12). + * @example DateTime.local(2017, 5, 25).month //=> 5 + * @type {number} + */ + + }, { + key: "month", + get: function get() { + return this.isValid ? this.c.month : NaN; + } + /** + * Get the day of the month (1-30ish). + * @example DateTime.local(2017, 5, 25).day //=> 25 + * @type {number} + */ + + }, { + key: "day", + get: function get() { + return this.isValid ? this.c.day : NaN; + } + /** + * Get the hour of the day (0-23). + * @example DateTime.local(2017, 5, 25, 9).hour //=> 9 + * @type {number} + */ + + }, { + key: "hour", + get: function get() { + return this.isValid ? this.c.hour : NaN; + } + /** + * Get the minute of the hour (0-59). + * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30 + * @type {number} + */ + + }, { + key: "minute", + get: function get() { + return this.isValid ? this.c.minute : NaN; + } + /** + * Get the second of the minute (0-59). + * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52 + * @type {number} + */ + + }, { + key: "second", + get: function get() { + return this.isValid ? this.c.second : NaN; + } + /** + * Get the millisecond of the second (0-999). + * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654 + * @type {number} + */ + + }, { + key: "millisecond", + get: function get() { + return this.isValid ? this.c.millisecond : NaN; + } + /** + * Get the week year + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2014, 11, 31).weekYear //=> 2015 + * @type {number} + */ + + }, { + key: "weekYear", + get: function get() { + return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN; + } + /** + * Get the week number of the week year (1-52ish). + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2017, 5, 25).weekNumber //=> 21 + * @type {number} + */ + + }, { + key: "weekNumber", + get: function get() { + return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN; + } + /** + * Get the day of the week. + * 1 is Monday and 7 is Sunday + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2014, 11, 31).weekday //=> 4 + * @type {number} + */ + + }, { + key: "weekday", + get: function get() { + return this.isValid ? possiblyCachedWeekData(this).weekday : NaN; + } + /** + * Get the ordinal (meaning the day of the year) + * @example DateTime.local(2017, 5, 25).ordinal //=> 145 + * @type {number|DateTime} + */ + + }, { + key: "ordinal", + get: function get() { + return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN; + } + /** + * Get the human readable short month name, such as 'Oct'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).monthShort //=> Oct + * @type {string} + */ + + }, { + key: "monthShort", + get: function get() { + return this.isValid ? Info.months("short", { + locale: this.locale + })[this.month - 1] : null; + } + /** + * Get the human readable long month name, such as 'October'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).monthLong //=> October + * @type {string} + */ + + }, { + key: "monthLong", + get: function get() { + return this.isValid ? Info.months("long", { + locale: this.locale + })[this.month - 1] : null; + } + /** + * Get the human readable short weekday, such as 'Mon'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon + * @type {string} + */ + + }, { + key: "weekdayShort", + get: function get() { + return this.isValid ? Info.weekdays("short", { + locale: this.locale + })[this.weekday - 1] : null; + } + /** + * Get the human readable long weekday, such as 'Monday'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday + * @type {string} + */ + + }, { + key: "weekdayLong", + get: function get() { + return this.isValid ? Info.weekdays("long", { + locale: this.locale + })[this.weekday - 1] : null; + } + /** + * Get the UTC offset of this DateTime in minutes + * @example DateTime.local().offset //=> -240 + * @example DateTime.utc().offset //=> 0 + * @type {number} + */ + + }, { + key: "offset", + get: function get() { + return this.isValid ? +this.o : NaN; + } + /** + * Get the short human name for the zone's current offset, for example "EST" or "EDT". + * Defaults to the system's locale if no locale has been specified + * @type {string} + */ + + }, { + key: "offsetNameShort", + get: function get() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "short", + locale: this.locale + }); + } else { + return null; + } + } + /** + * Get the long human name for the zone's current offset, for example "Eastern Standard Time" or "Eastern Daylight Time". + * Defaults to the system's locale if no locale has been specified + * @type {string} + */ + + }, { + key: "offsetNameLong", + get: function get() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "long", + locale: this.locale + }); + } else { + return null; + } + } + /** + * Get whether this zone's offset ever changes, as in a DST. + * @type {boolean} + */ + + }, { + key: "isOffsetFixed", + get: function get() { + return this.isValid ? this.zone.universal : null; + } + /** + * Get whether the DateTime is in a DST. + * @type {boolean} + */ + + }, { + key: "isInDST", + get: function get() { + if (this.isOffsetFixed) { + return false; + } else { + return this.offset > this.set({ + month: 1 + }).offset || this.offset > this.set({ + month: 5 + }).offset; + } + } + /** + * Returns true if this DateTime is in a leap year, false otherwise + * @example DateTime.local(2016).isInLeapYear //=> true + * @example DateTime.local(2013).isInLeapYear //=> false + * @type {boolean} + */ + + }, { + key: "isInLeapYear", + get: function get() { + return isLeapYear(this.year); + } + /** + * Returns the number of days in this DateTime's month + * @example DateTime.local(2016, 2).daysInMonth //=> 29 + * @example DateTime.local(2016, 3).daysInMonth //=> 31 + * @type {number} + */ + + }, { + key: "daysInMonth", + get: function get() { + return daysInMonth(this.year, this.month); + } + /** + * Returns the number of days in this DateTime's year + * @example DateTime.local(2016).daysInYear //=> 366 + * @example DateTime.local(2013).daysInYear //=> 365 + * @type {number} + */ + + }, { + key: "daysInYear", + get: function get() { + return this.isValid ? daysInYear(this.year) : NaN; + } + /** + * Returns the number of weeks in this DateTime's year + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2004).weeksInWeekYear //=> 53 + * @example DateTime.local(2013).weeksInWeekYear //=> 52 + * @type {number} + */ + + }, { + key: "weeksInWeekYear", + get: function get() { + return this.isValid ? weeksInWeekYear(this.weekYear) : NaN; + } + }], [{ + key: "DATE_SHORT", + get: function get() { + return DATE_SHORT; + } + /** + * {@link toLocaleString} format like 'Oct 14, 1983' + * @type {Object} + */ + + }, { + key: "DATE_MED", + get: function get() { + return DATE_MED; + } + /** + * {@link toLocaleString} format like 'October 14, 1983' + * @type {Object} + */ + + }, { + key: "DATE_FULL", + get: function get() { + return DATE_FULL; + } + /** + * {@link toLocaleString} format like 'Tuesday, October 14, 1983' + * @type {Object} + */ + + }, { + key: "DATE_HUGE", + get: function get() { + return DATE_HUGE; + } + /** + * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "TIME_SIMPLE", + get: function get() { + return TIME_SIMPLE; + } + /** + * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "TIME_WITH_SECONDS", + get: function get() { + return TIME_WITH_SECONDS; + } + /** + * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "TIME_WITH_SHORT_OFFSET", + get: function get() { + return TIME_WITH_SHORT_OFFSET; + } + /** + * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "TIME_WITH_LONG_OFFSET", + get: function get() { + return TIME_WITH_LONG_OFFSET; + } + /** + * {@link toLocaleString} format like '09:30', always 24-hour. + * @type {Object} + */ + + }, { + key: "TIME_24_SIMPLE", + get: function get() { + return TIME_24_SIMPLE; + } + /** + * {@link toLocaleString} format like '09:30:23', always 24-hour. + * @type {Object} + */ + + }, { + key: "TIME_24_WITH_SECONDS", + get: function get() { + return TIME_24_WITH_SECONDS; + } + /** + * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour. + * @type {Object} + */ + + }, { + key: "TIME_24_WITH_SHORT_OFFSET", + get: function get() { + return TIME_24_WITH_SHORT_OFFSET; + } + /** + * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour. + * @type {Object} + */ + + }, { + key: "TIME_24_WITH_LONG_OFFSET", + get: function get() { + return TIME_24_WITH_LONG_OFFSET; + } + /** + * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_SHORT", + get: function get() { + return DATETIME_SHORT; + } + /** + * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_SHORT_WITH_SECONDS", + get: function get() { + return DATETIME_SHORT_WITH_SECONDS; + } + /** + * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_MED", + get: function get() { + return DATETIME_MED; + } + /** + * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_MED_WITH_SECONDS", + get: function get() { + return DATETIME_MED_WITH_SECONDS; + } + /** + * {@link toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_MED_WITH_WEEKDAY", + get: function get() { + return DATETIME_MED_WITH_WEEKDAY; + } + /** + * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_FULL", + get: function get() { + return DATETIME_FULL; + } + /** + * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_FULL_WITH_SECONDS", + get: function get() { + return DATETIME_FULL_WITH_SECONDS; + } + /** + * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_HUGE", + get: function get() { + return DATETIME_HUGE; + } + /** + * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + + }, { + key: "DATETIME_HUGE_WITH_SECONDS", + get: function get() { + return DATETIME_HUGE_WITH_SECONDS; + } + }]); + + return DateTime; + }(); + function friendlyDateTime(dateTimeish) { + if (DateTime.isDateTime(dateTimeish)) { + return dateTimeish; + } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) { + return DateTime.fromJSDate(dateTimeish); + } else if (dateTimeish && typeof dateTimeish === "object") { + return DateTime.fromObject(dateTimeish); + } else { + throw new InvalidArgumentError("Unknown datetime argument: " + dateTimeish + ", of type " + typeof dateTimeish); + } + } + + exports.DateTime = DateTime; + exports.Duration = Duration; + exports.FixedOffsetZone = FixedOffsetZone; + exports.IANAZone = IANAZone; + exports.Info = Info; + exports.Interval = Interval; + exports.InvalidZone = InvalidZone; + exports.LocalZone = LocalZone; + exports.Settings = Settings; + exports.Zone = Zone; + + return exports; + +}({})); +//# sourceMappingURL=luxon.js.map diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js.map b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js.map new file mode 100644 index 0000000000..2b8f42a654 --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.js.map @@ -0,0 +1 @@ +{"version":3,"file":"luxon.js","sources":["../../src/errors.js","../../src/impl/formats.js","../../src/impl/util.js","../../src/impl/english.js","../../src/impl/formatter.js","../../src/impl/invalid.js","../../src/zone.js","../../src/zones/localZone.js","../../src/zones/IANAZone.js","../../src/zones/fixedOffsetZone.js","../../src/zones/invalidZone.js","../../src/impl/zoneUtil.js","../../src/settings.js","../../src/impl/locale.js","../../src/impl/regexParser.js","../../src/duration.js","../../src/interval.js","../../src/info.js","../../src/impl/diff.js","../../src/impl/digits.js","../../src/impl/tokenParser.js","../../src/impl/conversions.js","../../src/datetime.js"],"sourcesContent":["// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23', always 24-hour.\n */\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hour12: false\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour.\n */\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: s\n};\n\n/**\n * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour.\n */\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: l\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n\n};\n\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n */\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasIntl() {\n try {\n return typeof Intl !== \"undefined\" && Intl.DateTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasFormatToParts() {\n return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n}\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n if (input.toString().length < n) {\n return (\"0\".repeat(n) + input).slice(-n);\n } else {\n return input.toString();\n }\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hour12: false,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = Object.assign({ timeZoneName: offsetFormat }, intlOpts),\n intl = hasIntl();\n\n if (intl && hasFormatToParts()) {\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find(m => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n } else if (intl) {\n // this probably doesn't work for all locales\n const without = new Intl.DateTimeFormat(locale, intlOpts).format(date),\n included = new Intl.DateTimeFormat(locale, modified).format(date),\n diffed = included.substring(without.length),\n trimmed = diffed.replace(/^[, \\u200e]+/, \"\");\n return trimmed;\n } else {\n return null;\n }\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer, nonUnitKeys) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n if (nonUnitKeys.indexOf(u) >= 0) continue;\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(offset / 60),\n minutes = Math.abs(offset % 60),\n sign = hours >= 0 && !Object.is(hours, -0) ? \"+\" : \"-\",\n base = `${sign}${Math.abs(hours)}`;\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(Math.abs(hours), 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return minutes > 0 ? `${base}:${minutes}` : base;\n case \"techie\":\n return `${sign}${padStart(Math.abs(hours), 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n\nexport const ianaRegex = /[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?/;\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return monthsNarrow;\n case \"short\":\n return monthsShort;\n case \"long\":\n return monthsLong;\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\"\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return weekdaysNarrow;\n case \"short\":\n return weekdaysShort;\n case \"long\":\n return weekdaysLong;\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return erasNarrow;\n case \"short\":\n return erasShort;\n case \"long\":\n return erasLong;\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"]\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hour12\"\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { hasFormatToParts, padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = Object.assign({}, this.opts);\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter =\n this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\" && hasFormatToParts(),\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = opts => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hour12: true }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = token => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = length =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = token => {\n // Where possible: http://cldr.unicode.org/translation/date-time#TOC-Stand-Alone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = token => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = lildur => token => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter(t => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","/* eslint no-unused-vars: \"off\" */\nimport { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get universal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo, hasIntl } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this Javascript environment.\n * @implements {Zone}\n */\nexport default class LocalZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {LocalZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new LocalZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"local\";\n }\n\n /** @override **/\n get name() {\n if (hasIntl()) {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n } else return \"local\";\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"local\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, ianaRegex, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nconst matchingRegex = RegExp(`^${ianaRegex.source}$`);\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date),\n filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i],\n pos = typeToPos[type];\n\n if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Fantasia/Castle\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return !!(s && s.match(matchingRegex));\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n // Etc/GMT+8 -> -480\n /** @ignore */\n static parseGMTOffset(specifier) {\n if (specifier) {\n const match = specifier.match(/^Etc\\/GMT([+-]\\d{1,2})$/i);\n if (match) {\n return -60 * parseInt(match[1]);\n }\n }\n return null;\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts),\n dtf = makeDTF(this.name),\n [year, month, day, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date),\n // work around https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get universal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get universal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"local\") return defaultZone;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else if ((offset = IANAZone.parseGMTOffset(input)) != null) {\n // handle Etc/GMT-4, which V8 chokes on\n return FixedOffsetZone.instance(offset);\n } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);\n else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","import LocalZone from \"./zones/localZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nlet now = () => Date.now(),\n defaultZone = null, // not setting this directly to LocalZone.instance bc loading order issues\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid = false;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Get the default time zone to create DateTimes in.\n * @type {string}\n */\n static get defaultZoneName() {\n return Settings.defaultZone.name;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * @type {string}\n */\n static set defaultZoneName(z) {\n if (!z) {\n defaultZone = null;\n } else {\n defaultZone = normalizeZone(z);\n }\n }\n\n /**\n * Get the default time zone object to create DateTimes in. Does not affect existing instances.\n * @type {Zone}\n */\n static get defaultZone() {\n return defaultZone || LocalZone.instance;\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","import { hasFormatToParts, hasIntl, padStart, roundTo, hasRelative } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport Formatter from \"./formatter.js\";\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else if (hasIntl()) {\n const computedSys = new Intl.DateTimeFormat().resolvedOptions().locale;\n // node sometimes defaults to \"und\". Override that because that is dumb\n sysLocaleCache = !computedSys || computedSys === \"und\" ? \"en-US\" : computedSys;\n return sysLocaleCache;\n } else {\n sysLocaleCache = \"en-US\";\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (hasIntl()) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n } else {\n return [];\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n (hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\")\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n if (!forceSimple && hasIntl()) {\n const intlOpts = { useGrouping: false };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.hasIntl = hasIntl();\n\n let z;\n if (dt.zone.universal && this.hasIntl) {\n // Chromium doesn't support fixed-offset zones like Etc/GMT+8 in its formatter,\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=364374.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n // We can clean all this up when Chrome fixes this.\n z = \"UTC\";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n } else if (dt.zone.type === \"local\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n if (this.hasIntl) {\n const intlOpts = Object.assign({}, this.opts);\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n }\n\n format() {\n if (this.hasIntl) {\n return this.dtf.format(this.dt.toJSDate());\n } else {\n const tokenFormat = English.formatString(this.opts),\n loc = Locale.create(\"en-US\");\n return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat);\n }\n }\n\n formatToParts() {\n if (this.hasIntl && hasFormatToParts()) {\n return this.dtf.formatToParts(this.dt.toJSDate());\n } else {\n // This is kind of a cop out. We actually could do this for English. However, we couldn't do it for intl strings\n // and IMO it's too weird to have an uncanny valley like that\n return [];\n }\n }\n\n resolvedOptions() {\n if (this.hasIntl) {\n return this.dtf.resolvedOptions();\n } else {\n return {\n locale: \"en-US\",\n numberingSystem: \"latn\",\n outputCalendar: \"gregory\"\n };\n }\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = Object.assign({ style: \"long\" }, opts);\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale,\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale()),\n numberingSystemR = numberingSystem || Settings.defaultNumberingSystem,\n outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode(defaultOK = true) {\n const intl = hasIntl(),\n hasFTP = intl && hasFormatToParts(),\n isActuallyEn = this.isEnglish(),\n hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n\n if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) {\n return \"error\";\n } else if (!hasFTP || (isActuallyEn && hasNoWeirdness)) {\n return \"en\";\n } else {\n return \"intl\";\n }\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: true }));\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone(Object.assign({}, alts, { defaultToEN: false }));\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays(dt =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hour12: true };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n dt => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is utter bullshit. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(m => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n (hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\"))\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return m =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [Object.assign(mergedVals, val), mergedZone || zone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/,\n isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,9}))?)?)?/,\n isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${offsetRegex.source}?`),\n isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`),\n isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/,\n isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/,\n isoOrdinalRegex = /(\\d{4})-?(\\d{3})/,\n extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\"),\n extractISOOrdinalData = simpleParse(\"year\", \"ordinal\"),\n sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/, // dumbed-down version of the ISO one\n sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n ),\n sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1)\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hour: int(match, cursor, 0),\n minute: int(match, cursor + 1, 0),\n second: int(match, cursor + 2, 0),\n millisecond: parseMillis(match[cursor + 3])\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO duration parsing\n\nconst isoDuration = /^-?P(?:(?:(-?\\d{1,9})Y)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})W)?(?:(-?\\d{1,9})D)?(?:T(?:(-?\\d{1,9})H)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})(?:[.,](-?\\d{1,9}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [\n s,\n yearStr,\n monthStr,\n weekStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr,\n millisecondsStr\n ] = match;\n\n const hasNegativePrefix = s[0] === \"-\";\n\n const maybeNegate = num => (num && hasNegativePrefix ? -num : num);\n\n return [\n {\n years: maybeNegate(parseInteger(yearStr)),\n months: maybeNegate(parseInteger(monthStr)),\n weeks: maybeNegate(parseInteger(weekStr)),\n days: maybeNegate(parseInteger(dayStr)),\n hours: maybeNegate(parseInteger(hourStr)),\n minutes: maybeNegate(parseInteger(minuteStr)),\n seconds: maybeNegate(parseInteger(secondStr)),\n milliseconds: maybeNegate(parseMillis(millisecondsStr))\n }\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset\n);\nconst extractISOOrdinalDataAndTime = combineExtractors(extractISOOrdinalData, extractISOTime);\nconst extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);\n\n/**\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDataAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOYmdTimeOffsetAndIANAZone = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nconst lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 }\n },\n casualMatrix = Object.assign(\n {\n years: {\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n ),\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = Object.assign(\n {\n years: {\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n }\n },\n lowOrderMatrix\n );\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}),\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors.\n * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject(Object.assign({ milliseconds: count }, opts));\n }\n\n /**\n * Create a Duration from a Javascript object with keys like 'years' and 'hours.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {string} [obj.locale='en-US'] - the locale to use\n * @param {string} obj.numberingSystem - the numbering system to use\n * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit, [\n \"locale\",\n \"numberingSystem\",\n \"conversionAccuracy\",\n \"zone\" // a bit of debt; it's super inconvenient internally not to be able to blindly pass this\n ]),\n loc: Locale.fromObject(obj),\n conversionAccuracy: obj.conversionAccuracy\n });\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n const obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\"\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = Object.assign({}, opts, {\n floor: opts.round !== false && opts.floor !== false\n });\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a Javascript object with this Duration's values.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.values);\n\n if (opts.includeConfig) {\n base.conversionAccuracy = this.conversionAccuracy;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n valueOf() {\n return this.as(\"milliseconds\");\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = friendlyDuration(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit((x, u) => u === \"hour\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).years //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).months //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).days //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, []));\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map(u => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n normalizeValues(this.matrix, vals);\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = own - i; // we'd like to absorb these fractions in another unit\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n for (const u of orderedUnits) {\n if (this.values[u] !== other.values[u]) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDuration(durationish) {\n if (isNumber(durationish)) {\n return Duration.fromMillis(durationish);\n } else if (Duration.isDuration(durationish)) {\n return durationish;\n } else if (typeof durationish === \"object\") {\n return Duration.fromObject(durationish);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationish} of type ${typeof durationish}`\n );\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration, { friendlyDuration } from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}\n * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = friendlyDuration(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n const start = DateTime.fromISO(s, opts),\n end = DateTime.fromISO(e, opts);\n\n if (start.isValid && end.isValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (start.isValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (end.isValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...[DateTime]} dateTimes - the unit of time to count.\n * @return {[Interval]}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter(d => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {[Interval]}\n */\n splitBy(duration) {\n const dur = friendlyDuration(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n added,\n next;\n\n const results = [];\n while (s < this.e) {\n added = s.plus(dur);\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {[Interval]}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s > e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static merge(intervals) {\n const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map(i => [{ time: i.s, type: \"s\" }, { time: i.e, type: \"e\" }]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {[Interval]}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map(i => this.intersection(i))\n .filter(i => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasFormatToParts, hasIntl, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.local()\n .setZone(zone)\n .set({ month: 12 });\n\n return !zone.universal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone.isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {[string]}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, outputCalendar = \"gregory\" } = {}\n ) {\n return Locale.create(locale, numberingSystem, outputCalendar).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {[string]}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, outputCalendar = \"gregory\" } = {}\n ) {\n return Locale.create(locale, numberingSystem, outputCalendar).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {[string]}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null } = {}) {\n return Locale.create(locale, numberingSystem, null).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @return {[string]}\n */\n static weekdaysFormat(length = \"long\", { locale = null, numberingSystem = null } = {}) {\n return Locale.create(locale, numberingSystem, null).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {[string]}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {[string]}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `zones`: whether this environment supports IANA timezones\n * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n * * `intl`: whether this environment supports general internationalization\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false }\n * @return {Object}\n */\n static features() {\n let intl = false,\n intlTokens = false,\n zones = false,\n relative = false;\n\n if (hasIntl()) {\n intl = true;\n intlTokens = hasFormatToParts();\n relative = hasRelative();\n\n try {\n zones =\n new Intl.DateTimeFormat(\"en\", { timeZone: \"America/New_York\" }).resolvedOptions()\n .timeZone === \"America/New_York\";\n } catch (e) {\n zones = false;\n }\n }\n\n return { intl, intlTokens, zones, relative };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = dt =>\n dt\n .toUTC(0, { keepLocalTime: true })\n .startOf(\"day\")\n .valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n }\n ],\n [\"days\", dayDiff]\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function(earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n u => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(Object.assign(results, opts));\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\"\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n};\n\n// eslint-disable-next-line\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = i => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n return s.replace(/\\./, \"\\\\.?\");\n}\n\nfunction stripInsensitivities(s) {\n return s.replace(/\\./, \"\").toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex(i => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n // eslint-disable-next-line no-useless-escape\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = t => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = t => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\"\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\"\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\"\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\"\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\"\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\"\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\"\n }\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n return {\n literal: true,\n val: value\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map(u => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = token => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone;\n if (!isUndefined(matches.Z)) {\n zone = new FixedOffsetZone(matches.Z);\n } else if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n } else {\n zone = null;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map(p => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map(t => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map(t => unitForToken(t, locale)),\n disqualifyingUnit = units.find(t => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone] = matches ? dateTimeFromMatches(matches) : [null, null];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, invalidReason];\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(i => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return Object.assign({ weekYear, weekNumber, weekday }, timeObject(gregObj));\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(weekData));\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData,\n ordinal = computeOrdinal(year, month, day);\n\n return Object.assign({ year, ordinal }, timeObject(gregData));\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData,\n { month, day } = uncomputeOrdinal(year, ordinal);\n\n return Object.assign({ year, month, day }, timeObject(ordinalData));\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import Duration, { friendlyDuration } from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid\n };\n return new DateTime(Object.assign({}, current, alts, { old: current }));\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds()\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const keys = Object.keys(dur.values);\n if (keys.indexOf(\"milliseconds\") === -1) {\n keys.push(\"milliseconds\");\n }\n\n dur = dur.shiftTo(...keys);\n\n const oPre = inst.o,\n year = inst.c.year + dur.years,\n month = inst.c.month + dur.months + dur.quarters * 3,\n c = Object.assign({}, inst.c, {\n year,\n month,\n day: Math.min(inst.c.day, daysInMonth(year, month)) + dur.days + dur.weeks * 7\n }),\n millisToAdd = Duration.fromObject({\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(\n Object.assign(parsed, opts, {\n zone: interpretationZone,\n // setZone is a valid option in the calling methods, but not in fromObject\n setZone: undefined\n })\n );\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\n// technical time formats (e.g. the time part of ISO 8601), take some options\n// and this commonizes their handling\nfunction toTechTimeFormat(\n dt,\n {\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset,\n includeZone = false,\n spaceZone = false,\n format = \"extended\"\n }\n) {\n let fmt = format === \"basic\" ? \"HHmm\" : \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += format === \"basic\" ? \"ss\" : \":ss\";\n if (!suppressMilliseconds || dt.millisecond !== 0) {\n fmt += \".SSS\";\n }\n }\n\n if ((includeZone || includeOffset) && spaceZone) {\n fmt += \" \";\n }\n\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += format === \"basic\" ? \"ZZZ\" : \"ZZ\";\n }\n\n return toTechFormat(dt, fmt);\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\"\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\"\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, zone) {\n // assume we have the higher-order units\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zone.offset(tsNow),\n [ts, o] = objToTS(obj, offsetProvis, zone);\n\n return new DateTime({\n ts,\n zone,\n o\n });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = unit => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end\n .startOf(unit)\n .diff(start.startOf(unit), unit)\n .get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(0, opts.units[opts.units.length - 1]);\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({ ts: Settings.now() });\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n Settings.defaultZone\n );\n }\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z\n * @return {DateTime}\n */\n static utc(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now(),\n zone: FixedOffsetZone.utcInstance\n });\n } else {\n return quickDT(\n {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n },\n FixedOffsetZone.utcInstance\n );\n }\n }\n\n /**\n * Create a DateTime from a Javascript Date object. Uses the default zone.\n * @param {Date} date - a Javascript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options)\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n\n /**\n * Create a DateTime from a Javascript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj) {\n const zoneToUse = normalizeZone(obj.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit, [\n \"zone\",\n \"locale\",\n \"outputCalendar\",\n \"numberingSystem\"\n ]),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(obj);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n }),\n [vals, parsedZone, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is a DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locale: this.locale })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locale: this.locale })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locale: this.locale })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locale: this.locale })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.local().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.universal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1 }).offset || this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOpts(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link reconfigure} and {@link setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit, []),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday);\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized));\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized));\n } else {\n mixed = Object.assign(this.toObject(), normalized);\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.local().plus(123) //~> in 123 milliseconds\n * @example DateTime.local().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.local().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.local().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.local().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.local().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = friendlyDuration(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options\n * @example DateTime.local().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.local().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.local().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.local().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @example DateTime.local().toLocaleString(); //=> 4/20/2017\n * @example DateTime.local().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.local().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.local().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.local().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.local().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.local().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.local().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.local().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(opts = Formats.DATE_SHORT) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.local().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.local().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.local().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.local().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toISODate(opts)}T${this.toISOTime(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n let fmt = format === \"basic\" ? \"yyyyMMdd\" : \"yyyy-MM-dd\";\n if (this.year > 9999) {\n fmt = \"+\" + fmt;\n }\n\n return toTechFormat(this, fmt);\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n format = \"extended\"\n } = {}) {\n return toTechTimeFormat(this, {\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n format\n });\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n return toTechFormat(this, \"yyyy-MM-dd\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.local().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.local().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.local().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false } = {}) {\n return toTechTimeFormat(this, {\n includeOffset,\n includeZone,\n spaceZone: true\n });\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a Javascript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.local().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = Object.assign({}, this.c);\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a Javascript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\n this.invalid || otherDateTime.invalid,\n \"created by diffing an invalid DateTime\"\n );\n }\n\n const durOpts = Object.assign(\n { locale: this.locale, numberingSystem: this.numberingSystem },\n opts\n );\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.local(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.local().hasSame(otherDT, 'day'); //~> true if both the same calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n if (unit === \"millisecond\") {\n return this.valueOf() === otherDateTime.valueOf();\n } else {\n const inputMs = otherDateTime.valueOf();\n return this.startOf(unit) <= inputMs && inputMs <= this.endOf(unit);\n }\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {boolean} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.local().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.local().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.local().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.local().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.local().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.local().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({ zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n return diffRelative(\n base,\n this.plus(padding),\n Object.assign(options, {\n numeric: \"always\",\n units: [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"]\n })\n );\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.local().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.local().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(\n options.base || DateTime.fromObject({ zone: this.zone }),\n this,\n Object.assign(options, {\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true\n })\n );\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, i => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n"],"names":["LuxonError","Error","InvalidDateTimeError","reason","toMessage","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","unit","InvalidArgumentError","ZoneIsAbstractError","n","s","l","DATE_SHORT","year","month","day","DATE_MED","DATE_FULL","DATE_HUGE","weekday","TIME_SIMPLE","hour","minute","TIME_WITH_SECONDS","second","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hour12","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","isUndefined","o","isNumber","isInteger","isString","isDate","Object","prototype","toString","call","hasIntl","Intl","DateTimeFormat","e","hasFormatToParts","formatToParts","hasRelative","RelativeTimeFormat","maybeArray","thing","Array","isArray","bestBy","arr","by","compare","length","undefined","reduce","best","next","pair","pick","obj","keys","a","k","hasOwnProperty","prop","integerBetween","bottom","top","floorMod","x","Math","floor","padStart","input","repeat","slice","parseInteger","string","parseInt","parseMillis","fraction","f","parseFloat","roundTo","number","digits","towardZero","factor","rounder","trunc","round","isLeapYear","daysInYear","daysInMonth","modMonth","modYear","objToLocalTS","d","Date","UTC","millisecond","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","p1","last","p2","untruncateYear","parseZoneInfo","ts","offsetFormat","locale","timeZone","date","intlOpts","modified","assign","intl","parsed","find","m","type","toLowerCase","value","without","format","included","diffed","substring","trimmed","replace","signedOffset","offHourStr","offMinuteStr","offHour","Number","isNaN","offMin","offMinSigned","is","asNumber","numericValue","normalizeObject","normalizer","nonUnitKeys","normalized","u","indexOf","v","formatOffset","offset","hours","minutes","abs","sign","base","RangeError","timeObject","ianaRegex","stringify","JSON","sort","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","meridiemForDateTime","dt","weekdayForDateTime","monthForDateTime","eraForDateTime","formatRelativeTime","count","numeric","narrow","units","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatString","knownFormat","filtered","key","dateTimeHuge","Formats","stringifyTokens","splits","tokenToString","token","literal","val","macroTokenToFormatOpts","D","DD","DDD","DDDD","t","tt","ttt","tttt","T","TT","TTT","TTTT","ff","fff","ffff","F","FF","FFF","FFFF","Formatter","create","opts","parseFormat","fmt","current","currentFull","bracketed","i","c","charAt","push","formatOpts","loc","systemLoc","formatWithSystemDefault","redefaultToSystem","df","dtFormatter","formatDateTime","formatDateTimeParts","resolvedOptions","num","p","forceSimple","padTo","numberFormatter","formatDateTimeFromString","knownEnglish","listingMode","useDateTimeFormatter","outputCalendar","extract","isOffsetFixed","allowZ","isValid","zone","meridiem","English","standalone","maybeMacro","era","offsetName","zoneName","weekNumber","ordinal","quarter","formatDurationFromString","dur","tokenToField","lildur","mapped","get","tokens","realTokens","found","concat","collapsed","shiftTo","map","filter","Invalid","explanation","Zone","equals","otherZone","singleton","LocalZone","getTimezoneOffset","matchingRegex","RegExp","source","dtfCache","makeDTF","typeToPos","hackyOffset","dtf","formatted","exec","fMonth","fDay","fYear","fHour","fMinute","fSecond","partsOffset","filled","pos","ianaZoneCache","IANAZone","name","resetCache","isValidSpecifier","match","isValidZone","parseGMTOffset","specifier","valid","adjustedHour","asUTC","asTS","over","FixedOffsetZone","instance","utcInstance","parseSpecifier","r","fixed","InvalidZone","NaN","normalizeZone","defaultZone","lowered","now","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","z","numberingSystem","intlDTCache","getCachedDTF","locString","intlNumCache","getCachedINF","inf","NumberFormat","intlRelCache","getCachedRTF","cacheKeyOpts","sysLocaleCache","systemLocale","computedSys","parseLocaleString","localeStr","uIndex","options","smaller","calendar","intlConfigString","mapMonths","ms","DateTime","utc","mapWeekdays","listStuff","defaultOK","englishFn","intlFn","mode","supportsFastNumbers","startsWith","PolyNumberFormatter","useGrouping","minimumIntegerDigits","PolyDateFormatter","universal","fromMillis","toJSDate","tokenFormat","PolyRelFormatter","isEnglish","style","rtf","fromOpts","defaultToEN","specifiedLocale","localeR","numberingSystemR","outputCalendarR","fromObject","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","hasFTP","isActuallyEn","hasNoWeirdness","clone","alts","getOwnPropertyNames","redefaultToEN","formatStr","field","results","matching","fastNumbers","relFormatter","other","combineRegexes","regexes","full","combineExtractors","extractors","ex","mergedVals","mergedZone","cursor","parse","patterns","regex","extractor","simpleParse","ret","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","isoYmdRegex","isoWeekRegex","isoOrdinalRegex","extractISOWeekData","extractISOOrdinalData","sqlYmdRegex","sqlTimeRegex","sqlTimeExtensionRegex","int","fallback","extractISOYmd","item","extractISOTime","extractISOOffset","local","fullOffset","extractIANAZone","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","maybeNegate","milliseconds","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","result","rfc2822","extractRFC2822","obsOffset","milOffset","preprocessRFC2822","trim","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDataAndTime","extractISOTimeAndOffset","parseISODate","parseRFC2822Date","parseHTTPDate","parseISODuration","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOYmdTimeOffsetAndIANAZone","extractISOTimeOffsetAndIANAZone","parseSQL","INVALID","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","reverse","clear","conf","values","conversionAccuracy","Duration","antiTrunc","ceil","convert","matrix","fromMap","fromUnit","toMap","toUnit","conv","raw","sameSign","added","normalizeValues","vals","previous","config","accurate","invalid","isLuxonDuration","normalizeUnit","fromISO","text","week","isDuration","toFormat","fmtOpts","toObject","includeConfig","toISO","toJSON","valueOf","as","plus","duration","friendlyDuration","minus","negate","mapUnits","fn","set","mixed","reconfigure","normalize","built","accumulated","lastUnit","own","ak","down","negated","durationish","validateStartEnd","start","end","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","after","before","split","isInterval","toDuration","startOf","diff","hasSame","isEmpty","isAfter","dateTime","isBefore","contains","splitAt","dateTimes","sorted","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","merge","intervals","b","sofar","final","xor","currentCount","ends","time","flattened","difference","toISODate","toISOTime","dateFormat","separator","invalidReason","mapEndpoints","mapFn","Info","hasDST","proto","setZone","isValidIANAZone","monthsFormat","weekdaysFormat","features","intlTokens","zones","relative","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","highOrderDiffs","differs","lowestOrder","highWater","differ","delta","remainingMillis","lowerOrderUnits","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","parseDigits","str","code","charCodeAt","search","min","max","digitRegex","append","MISSING_FTP","intUnit","post","deser","fixListRegex","stripInsensitivities","oneOf","strings","startIndex","join","findIndex","groups","h","simple","escapeToken","unitForToken","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","tokenForPart","part","buildRegex","re","handlers","matches","all","matchIndex","dateTimeFromMatches","toField","Z","q","M","G","y","S","dummyDateTimeCache","getDummyDateTime","maybeExpandMacroToken","formatter","parts","includes","expandMacroTokens","explainFromTokens","disqualifyingUnit","regexString","rawMatches","parseFromTokens","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","getUTCDay","computeOrdinal","uncomputeOrdinal","table","month0","gregorianToWeek","gregObj","weekToGregorian","weekData","weekdayOfJan4","yearInDays","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","hasInvalidWeekData","validYear","validWeek","validWeekday","hasInvalidOrdinalData","validOrdinal","hasInvalidGregorianData","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","MAX_DATE","unsupportedZone","possiblyCachedWeekData","inst","old","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","toTechTimeFormat","suppressSeconds","suppressMilliseconds","includeOffset","includeZone","spaceZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","offsetProvis","diffRelative","calendary","unchanged","ot","_zone","isLuxonDateTime","fromJSDate","zoneToUse","fromSeconds","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","defaultValues","objNow","foundFirst","higherOrderInvalid","gregorian","tsFinal","offsetFinal","fromRFC2822","fromHTTP","fromFormat","localeToUse","fromString","fromSQL","isDateTime","resolvedLocaleOpts","toLocal","keepCalendarTime","newTS","offsetGuess","asObj","setLocale","settingWeekStuff","normalizedUnit","endOf","toLocaleString","toLocaleParts","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","toSQL","toMillis","toSeconds","toBSON","otherDateTime","durOpts","otherIsLater","diffNow","until","inputMs","toRelative","padding","toRelativeCalendar","every","fromFormatExplain","fromStringExplain","dateTimeish"],"mappings":"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"} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js new file mode 100644 index 0000000000..03f3699b4c --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js @@ -0,0 +1 @@ +var luxon=function(e){"use strict";function r(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[t++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n=function(e){function t(){return e.apply(this,arguments)||this}return o(t,e),t}(t(Error)),l=function(t){function e(e){return t.call(this,"Invalid DateTime: "+e.toMessage())||this}return o(e,t),e}(n),f=function(t){function e(e){return t.call(this,"Invalid Interval: "+e.toMessage())||this}return o(e,t),e}(n),d=function(t){function e(e){return t.call(this,"Invalid Duration: "+e.toMessage())||this}return o(e,t),e}(n),L=function(e){function t(){return e.apply(this,arguments)||this}return o(t,e),t}(n),h=function(t){function e(e){return t.call(this,"Invalid unit "+e)||this}return o(e,t),e}(n),m=function(e){function t(){return e.apply(this,arguments)||this}return o(t,e),t}(n),y=function(e){function t(){return e.call(this,"Zone is an abstract class")||this}return o(t,e),t}(n),v="numeric",g="short",p="long",w={year:v,month:v,day:v},k={year:v,month:g,day:v},b={year:v,month:p,day:v},O={year:v,month:p,day:v,weekday:p},S={hour:v,minute:v},T={hour:v,minute:v,second:v},M={hour:v,minute:v,second:v,timeZoneName:g},N={hour:v,minute:v,second:v,timeZoneName:p},D={hour:v,minute:v,hour12:!1},E={hour:v,minute:v,second:v,hour12:!1},x={hour:v,minute:v,second:v,hour12:!1,timeZoneName:g},F={hour:v,minute:v,second:v,hour12:!1,timeZoneName:p},Z={year:v,month:v,day:v,hour:v,minute:v},C={year:v,month:v,day:v,hour:v,minute:v,second:v},j={year:v,month:g,day:v,hour:v,minute:v},A={year:v,month:g,day:v,hour:v,minute:v,second:v},z={year:v,month:g,day:v,weekday:g,hour:v,minute:v},_={year:v,month:p,day:v,hour:v,minute:v,timeZoneName:g},q={year:v,month:p,day:v,hour:v,minute:v,second:v,timeZoneName:g},H={year:v,month:p,day:v,weekday:p,hour:v,minute:v,timeZoneName:p},U={year:v,month:p,day:v,weekday:p,hour:v,minute:v,second:v,timeZoneName:p};function R(e){return void 0===e}function W(e){return"number"==typeof e}function P(e){return"number"==typeof e&&e%1==0}function I(){try{return"undefined"!=typeof Intl&&Intl.DateTimeFormat}catch(e){return!1}}function J(){return!R(Intl.DateTimeFormat.prototype.formatToParts)}function Y(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function G(e,r,i){if(0!==e.length)return e.reduce(function(e,t){var n=[r(t),t];return e&&i(e[0],n[0])===e[0]?e:n},null)[1]}function $(n,e){return e.reduce(function(e,t){return e[t]=n[t],e},{})}function B(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Q(e,t,n){return P(e)&&t<=e&&e<=n}function K(e,t){return void 0===t&&(t=2),e.toString().lengthen.indexOf(c)&&rn(this.matrix,a,h,i,c)}else W(a[c])&&(o[c]=a[c])}for(var m in o)0!==o[m]&&(i[r]+=m===r?o[m]:o[m]/this.matrix[r][m]);return nn(this,{values:i},!0).normalize()},e.negate=function(){if(!this.isValid)return this;for(var e={},t=0,n=Object.keys(this.values);te},e.isBefore=function(e){return!!this.isValid&&this.e<=e},e.contains=function(e){return!!this.isValid&&(this.s<=e&&this.e>e)},e.set=function(e){var t=void 0===e?{}:e,n=t.start,r=t.end;return this.isValid?l.fromDateTimes(n||this.s,r||this.e):this},e.splitAt=function(){var t=this;if(!this.isValid)return[];for(var e=arguments.length,n=new Array(e),r=0;r+this.e?this.e:s;o.push(l.fromDateTimes(a,c)),a=c,u+=1}return o},e.splitBy=function(e){var t=un(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];for(var n,r,i=this.s,o=[];i+this.e?this.e:n,o.push(l.fromDateTimes(i,r)),i=r;return o},e.divideEqually=function(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]},e.overlaps=function(e){return this.e>e.s&&this.s=e.e)},e.equals=function(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))},e.intersection=function(e){if(!this.isValid)return this;var t=this.s>e.s?this.s:e.s,n=this.ee.e?this.e:e.e;return l.fromDateTimes(t,n)},l.merge=function(e){var t=e.sort(function(e,t){return e.s-t.s}).reduce(function(e,t){var n=e[0],r=e[1];return r?r.overlaps(t)||r.abutsStart(t)?[n,r.union(t)]:[n.concat([r]),t]:[n,t]},[[],null]),n=t[0],r=t[1];return r&&n.push(r),n},l.xor=function(e){for(var t,n,r=null,i=0,o=[],a=e.map(function(e){return[{time:e.s,type:"s"},{time:e.e,type:"e"}]}),u=V((t=Array.prototype).concat.apply(t,a).sort(function(e,t){return e.time-t.time}));!(n=u()).done;)var s=n.value,r=1===(i+="s"===s.type?1:-1)?s.time:(r&&+r!=+s.time&&o.push(l.fromDateTimes(r,s.time)),null);return l.merge(o)},e.difference=function(){for(var t=this,e=arguments.length,n=new Array(e),r=0;rae(n)?(t=n+1,u=1):t=n,Object.assign({weekYear:t,weekNumber:u,weekday:a},he(e))}function jn(e){var t,n=e.weekYear,r=e.weekNumber,i=e.weekday,o=xn(n,1,4),a=re(n),u=7*r+i-o-3;u<1?u+=re(t=n-1):athis.valueOf(),u=dn(a?this:e,a?e:this,o,i);return a?u.negate():u},e.diffNow=function(e,t){return void 0===e&&(e="milliseconds"),void 0===t&&(t={}),this.diff(I.local(),e,t)},e.until=function(e){return this.isValid?cn.fromDateTimes(this,e):this},e.hasSame=function(e,t){if(!this.isValid)return!1;if("millisecond"===t)return this.valueOf()===e.valueOf();var n=e.valueOf();return this.startOf(t)<=n&&n<=this.endOf(t)},e.equals=function(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)},e.toRelative=function(e){if(void 0===e&&(e={}),!this.isValid)return null;var t=e.base||I.fromObject({zone:this.zone}),n=e.padding?thisthis.set({month:1}).offset||this.offset>this.set({month:5}).offset)}},{key:"isInLeapYear",get:function(){return ne(this.year)}},{key:"daysInMonth",get:function(){return ie(this.year,this.month)}},{key:"daysInYear",get:function(){return this.isValid?re(this.year):NaN}},{key:"weeksInWeekYear",get:function(){return this.isValid?ae(this.weekYear):NaN}}],[{key:"DATE_SHORT",get:function(){return w}},{key:"DATE_MED",get:function(){return k}},{key:"DATE_FULL",get:function(){return b}},{key:"DATE_HUGE",get:function(){return O}},{key:"TIME_SIMPLE",get:function(){return S}},{key:"TIME_WITH_SECONDS",get:function(){return T}},{key:"TIME_WITH_SHORT_OFFSET",get:function(){return M}},{key:"TIME_WITH_LONG_OFFSET",get:function(){return N}},{key:"TIME_24_SIMPLE",get:function(){return D}},{key:"TIME_24_WITH_SECONDS",get:function(){return E}},{key:"TIME_24_WITH_SHORT_OFFSET",get:function(){return x}},{key:"TIME_24_WITH_LONG_OFFSET",get:function(){return F}},{key:"DATETIME_SHORT",get:function(){return Z}},{key:"DATETIME_SHORT_WITH_SECONDS",get:function(){return C}},{key:"DATETIME_MED",get:function(){return j}},{key:"DATETIME_MED_WITH_SECONDS",get:function(){return A}},{key:"DATETIME_MED_WITH_WEEKDAY",get:function(){return z}},{key:"DATETIME_FULL",get:function(){return _}},{key:"DATETIME_FULL_WITH_SECONDS",get:function(){return q}},{key:"DATETIME_HUGE",get:function(){return H}},{key:"DATETIME_HUGE_WITH_SECONDS",get:function(){return U}}]),I}();function sr(e){if(ur.isDateTime(e))return e;if(e&&e.valueOf&&W(e.valueOf()))return ur.fromJSDate(e);if(e&&"object"==typeof e)return ur.fromObject(e);throw new m("Unknown datetime argument: "+e+", of type "+typeof e)}return e.DateTime=ur,e.Duration=an,e.FixedOffsetZone=Ue,e.IANAZone=qe,e.Info=ln,e.Interval=cn,e.InvalidZone=Re,e.LocalZone=Ce,e.Settings=Qe,e.Zone=Fe,e}({}); \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js.map b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js.map new file mode 100644 index 0000000000..09ddafd1b2 --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/luxon/luxon.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"build/global/luxon.js","sources":["0"],"names":["luxon","exports","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_inheritsLoose","subClass","superClass","create","constructor","__proto__","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","_setPrototypeOf","p","_construct","Parent","args","Class","Reflect","construct","sham","Proxy","Date","toString","call","e","_isNativeReflectConstruct","a","push","apply","instance","Function","bind","arguments","_wrapNativeSuper","_cache","Map","undefined","fn","indexOf","TypeError","has","get","set","Wrapper","this","value","_arrayLikeToArray","arr","len","arr2","Array","_createForOfIteratorHelperLoose","Symbol","iterator","next","isArray","minLen","n","slice","name","from","test","_unsupportedIterableToArray","done","LuxonError","_Error","Error","InvalidDateTimeError","_LuxonError","reason","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","unit","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","s","l","DATE_SHORT","year","month","day","DATE_MED","DATE_FULL","DATE_HUGE","weekday","TIME_SIMPLE","hour","minute","TIME_WITH_SECONDS","second","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hour12","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","isUndefined","isNumber","isInteger","hasIntl","Intl","DateTimeFormat","hasFormatToParts","formatToParts","hasRelative","RelativeTimeFormat","bestBy","by","compare","reduce","best","pair","pick","obj","keys","k","hasOwnProperty","prop","integerBetween","thing","bottom","top","padStart","input","repeat","parseInteger","string","parseInt","parseMillis","fraction","f","parseFloat","Math","floor","roundTo","number","digits","towardZero","factor","pow","trunc","round","isLeapYear","daysInYear","daysInMonth","x","modMonth","objToLocalTS","d","UTC","millisecond","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","p1","last","p2","untruncateYear","parseZoneInfo","ts","offsetFormat","locale","timeZone","date","intlOpts","modified","assign","intl","parsed","find","m","type","toLowerCase","without","format","substring","replace","signedOffset","offHourStr","offMinuteStr","offHour","Number","isNaN","offMin","is","asNumber","numericValue","normalizeObject","normalizer","nonUnitKeys","normalized","u","v","formatOffset","offset","hours","minutes","abs","sign","base","RangeError","timeObject","ianaRegex","stringify","JSON","sort","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","stringifyTokens","splits","tokenToString","_step","_iterator","token","literal","val","_macroTokenToFormatOpts","D","DD","DDD","DDDD","t","tt","ttt","tttt","T","TT","TTT","TTTT","ff","fff","ffff","F","FF","FFF","FFFF","Formatter","formatOpts","opts","loc","systemLoc","parseFormat","fmt","current","currentFull","bracketed","c","charAt","macroTokenToFormatOpts","_proto","formatWithSystemDefault","dt","redefaultToSystem","dtFormatter","formatDateTime","formatDateTimeParts","resolvedOptions","num","forceSimple","padTo","numberFormatter","formatDateTimeFromString","extract","_this","isOffsetFixed","allowZ","isValid","zone","meridiem","knownEnglish","standalone","era","listingMode","useDateTimeFormatter","outputCalendar","offsetName","zoneName","weekNumber","ordinal","quarter","formatDurationFromString","dur","tokenToField","lildur","_this2","tokens","realTokens","found","_ref","concat","collapsed","shiftTo","map","filter","mapped","Invalid","explanation","Zone","equals","singleton","LocalZone","_Zone","getTimezoneOffset","otherZone","matchingRegex","RegExp","source","dtfCache","typeToPos","ianaZoneCache","IANAZone","valid","isValidZone","resetCache","isValidSpecifier","match","parseGMTOffset","specifier","formatted","fMonth","fDay","dtf","_ref2","filled","_formatted$i","pos","partsOffset","exec","asTS","over","singleton$1","FixedOffsetZone","fixed","utcInstance","parseSpecifier","r","InvalidZone","NaN","normalizeZone","defaultZone","lowered","now","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","z","numberingSystem","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","getCachedRTF","cacheKeyOpts","excluded","sourceKeys","_objectWithoutPropertiesLoose","inf","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","mode","PolyNumberFormatter","useGrouping","minimumIntegerDigits","NumberFormat","getCachedINF","PolyDateFormatter","universal","DateTime","fromMillis","_proto2","toJSDate","tokenFormat","knownFormat","dateTimeHuge","formatString","PolyRelFormatter","isEnglish","style","rtf","_proto3","count","numeric","narrow","units","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatRelativeTime","numbering","specifiedLocale","localeStr","_parseLocaleString","uIndex","options","smaller","calendar","parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","fromOpts","defaultToEN","computedSys","systemLocale","fromObject","_temp","_proto4","hasFTP","isActuallyEn","hasNoWeirdness","clone","alts","getOwnPropertyNames","redefaultToEN","formatStr","ms","utc","mapMonths","mapWeekdays","_this3","_this4","field","matching","fastNumbers","relFormatter","startsWith","other","combineRegexes","_len","regexes","_key","full","combineExtractors","_len2","extractors","_key2","ex","mergedVals","mergedZone","cursor","_ex","parse","_len3","patterns","_key3","_i","_patterns","_patterns$_i","regex","extractor","simpleParse","_len4","_key4","ret","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","int","fallback","extractISOYmd","extractISOTime","extractISOOffset","local","fullOffset","extractIANAZone","isoDuration","extractISODuration","maybeNegate","hasNegativePrefix","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","milliseconds","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","result","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDataAndTime","extractISOTimeAndOffset","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOYmdTimeOffsetAndIANAZone","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","reverse","clear","conf","values","conversionAccuracy","Duration","convert","matrix","fromMap","fromUnit","toMap","toUnit","conv","raw","added","ceil","normalizeValues","vals","previous","config","accurate","invalid","isLuxonDuration","normalizeUnit","fromISO","text","week","isDuration","toFormat","fmtOpts","toObject","includeConfig","toISO","toJSON","valueOf","as","plus","duration","friendlyDuration","minus","negate","mapUnits","_Object$keys","reconfigure","normalize","lastUnit","built","accumulated","_step2","_iterator2","own","ak","down","negated","_i2","_Object$keys2","_step3","_iterator3","durationish","INVALID$1","Interval","start","end","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","after","before","_split","split","_dur","isInterval","toDuration","startOf","diff","hasSame","isEmpty","isAfter","dateTime","isBefore","contains","splitAt","dateTimes","sorted","results","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","merge","intervals","_intervals$sort$reduc","b","item","sofar","final","xor","_Array$prototype","currentCount","ends","time","difference","toISODate","toISOTime","dateFormat","_temp2","_ref3$separator","separator","invalidReason","mapEndpoints","mapFn","Info","hasDST","proto","setZone","isValidIANAZone","_ref$locale","_ref$numberingSystem","_ref$outputCalendar","monthsFormat","_ref2$locale","_ref2$numberingSystem","_ref2$outputCalendar","_temp3","_ref3","_ref3$locale","_ref3$numberingSystem","weekdaysFormat","_temp4","_ref4","_ref4$locale","_ref4$numberingSystem","_temp5","_ref5$locale","_temp6","_ref6$locale","features","intlTokens","zones","relative","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","_diff","_cursor$plus3","_highOrderDiffs","_differs","_cursor$plus","lowestOrder","delta","_cursor$plus2","highWater","_differs$_i","differ","highOrderDiffs","remainingMillis","lowerOrderUnits","_Duration$fromMillis","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","append","MISSING_FTP","intUnit","post","deser","str","code","charCodeAt","search","_numberingSystemsUTF","min","max","parseDigits","fixListRegex","stripInsensitivities","oneOf","strings","startIndex","join","findIndex","groups","simple","unitForToken","_ref5","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","partTypeStyleToTokenVal","2-digit","short","long","dayperiod","dayPeriod","dummyDateTimeCache","maybeExpandMacroToken","part","tokenForPart","includes","explainFromTokens","disqualifyingUnit","matches","_buildRegex","handlers","_match","h","all","matchIndex","rawMatches","_ref6","Z","q","M","G","y","S","toField","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","getUTCDay","computeOrdinal","uncomputeOrdinal","table","month0","gregorianToWeek","gregObj","weekToGregorian","weekData","weekdayOfJan4","yearInDays","_uncomputeOrdinal","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","_uncomputeOrdinal2","hasInvalidGregorianData","validYear","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","INVALID$2","unsupportedZone","possiblyCachedWeekData","clone$1","inst","old","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","_fixOffset","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","toTechTimeFormat","_ref$suppressSeconds","suppressSeconds","_ref$suppressMillisec","suppressMilliseconds","includeOffset","_ref$includeZone","includeZone","_ref$spaceZone","spaceZone","_ref$format","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits$1","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","_objToTS","diffRelative","calendary","ot","_zone","isLuxonDateTime","fromJSDate","zoneToUse","fromSeconds","offsetProvis","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","foundFirst","validOrdinal","validWeek","validWeekday","_objToTS2","_parseISODate","fromRFC2822","_parseRFC2822Date","trim","fromHTTP","_parseHTTPDate","fromFormat","_explainFromTokens","_opts$locale","_opts$numberingSystem","localeToUse","_parseFromTokens","fromString","fromSQL","_parseSQL","isDateTime","resolvedLocaleOpts","_Formatter$create$res","toLocal","_ref3$keepLocalTime","_ref3$keepCalendarTim","keepCalendarTime","offsetGuess","newTS","setLocale","mixed","_objToTS4","normalizedUnit","endOf","_this$plus","toLocaleString","toLocaleParts","_ref5$format","toISOWeekDate","_ref6$suppressMillise","_ref6$suppressSeconds","_ref6$includeOffset","_ref6$format","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref7","_ref7$includeOffset","_ref7$includeZone","toSQL","toMillis","toSeconds","toBSON","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","toRelative","padding","toRelativeCalendar","every","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","dateTimeish"],"mappings":"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"} \ No newline at end of file From 3d17f53eac420f6477c98c3e794ab937af62440a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arma=C4=9Fan=20=C3=9Cnl=C3=BC?= <36102404+armgnunlu@users.noreply.github.com> Date: Thu, 24 Sep 2020 15:40:41 +0300 Subject: [PATCH 018/114] Resolved #3223 --- .../Pages/Index.cshtml | 162 ++++++++++++++++-- 1 file changed, 150 insertions(+), 12 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml index 532aa810c4..d01781f24b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml @@ -15,17 +15,155 @@ } -
    -

    @L["Welcome"]

    -
    -
    -

    @L["LongWelcomeMessage"]

    -
    +
    \ No newline at end of file +
    +

    Let's improve your application!

    +

    Here are some links to help you get started:

    +
    +
    +
    +
    +
    +
    +
    Learn Abp.io
    +

    The easiest way to start a new web application with the ABP Framework.

    + See Documents +
    +
    +
    +
    +
    Support
    +

    See answers to previously asked questions or ask a new one.

    + Questions +
    +
    +
    +
    +
    ABP Community
    +

    Get involved with a vibrant community and become a contributor.

    + Community + Contribute +
    +
    +
    +
    +
    +
    +
    ABP Blog
    +

    Take a look at our recently published articles.

    + See Blog +
    +
    +
    +
    +
    Github
    +

    Do you love Abp.io?

    +

    + Star + Issue + Fork +

    + Feature Requests +
    +
    +
    +
    +
    Stackoverflow
    +

    See answers to previously asked questions or ask a new one.

    + Questions + Ask a Question +
    +
    +
    +
    +
    + + +
    +

    Meet the Abp Commercial

    +

    A Complete Web Application Platform Built-on Abp Framework

    +
    + +
    +
    +

    + ABP Commercial is a platform based on the open source ABP framework. It provides pre-built application modules, + rapid application development tooling, professional UI themes, premium support and more. +

    + +
    +
    +
    +
    + Startup Templates + Details +
    +
    +
    +
    +
    +
    + Application Modules + Details +
    +
    +
    +
    +
    +
    + Developer
    Tools + Details +
    +
    +
    +
    +
    +
    + UI
    Themes + Details +
    +
    +
    +
    +
    +
    + Additional Services + Details +
    +
    +
    +
    +
    +
    + Premium Support + Details +
    +
    +
    +
    +
    +
    + +
    + \ No newline at end of file From 540dedb35e344b36b9352b7e5acb09992e4e0c38 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Fri, 25 Sep 2020 16:37:20 +0800 Subject: [PATCH 019/114] Introduce ITenantConfigurationProvider. --- .../MultiTenancy/MultiTenancyMiddleware.cs | 48 ++------------- .../ITenantConfigurationProvider.cs | 9 +++ .../TenantConfigurationProvider.cs | 58 +++++++++++++++++++ 3 files changed, 73 insertions(+), 42 deletions(-) create mode 100644 framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs create mode 100644 framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs index 2c82095dac..e0a5cfb498 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs @@ -1,5 +1,4 @@ -using System; -using System.Threading.Tasks; +using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; @@ -8,59 +7,24 @@ namespace Volo.Abp.AspNetCore.MultiTenancy { public class MultiTenancyMiddleware : IMiddleware, ITransientDependency { - private readonly ITenantResolver _tenantResolver; - private readonly ITenantStore _tenantStore; + private readonly ITenantConfigurationProvider _tenantConfigurationProvider; private readonly ICurrentTenant _currentTenant; - private readonly ITenantResolveResultAccessor _tenantResolveResultAccessor; public MultiTenancyMiddleware( - ITenantResolver tenantResolver, - ITenantStore tenantStore, - ICurrentTenant currentTenant, - ITenantResolveResultAccessor tenantResolveResultAccessor) + ITenantConfigurationProvider tenantConfigurationProvider, + ICurrentTenant currentTenant) { - _tenantResolver = tenantResolver; - _tenantStore = tenantStore; + _tenantConfigurationProvider = tenantConfigurationProvider; _currentTenant = currentTenant; - _tenantResolveResultAccessor = tenantResolveResultAccessor; } public async Task InvokeAsync(HttpContext context, RequestDelegate next) { - var resolveResult = _tenantResolver.ResolveTenantIdOrName(); - _tenantResolveResultAccessor.Result = resolveResult; - - TenantConfiguration tenant = null; - if (resolveResult.TenantIdOrName != null) - { - tenant = await FindTenantAsync(resolveResult.TenantIdOrName); - - if (tenant == null) - { - throw new BusinessException( - code: "Volo.AbpIo.MultiTenancy:010001", - message: "Tenant not found!", - details: "There is no tenant with the tenant id or name: " + resolveResult.TenantIdOrName - ); - } - } - + var tenant = await _tenantConfigurationProvider.ResolverAndGet(); using (_currentTenant.Change(tenant?.Id, tenant?.Name)) { await next(context); } } - - private async Task FindTenantAsync(string tenantIdOrName) - { - if (Guid.TryParse(tenantIdOrName, out var parsedTenantId)) - { - return await _tenantStore.FindAsync(parsedTenantId); - } - else - { - return await _tenantStore.FindAsync(tenantIdOrName); - } - } } } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs new file mode 100644 index 0000000000..6d573bac36 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.MultiTenancy +{ + public interface ITenantConfigurationProvider + { + Task ResolverAndGet(); + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs new file mode 100644 index 0000000000..c07ec3931d --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs @@ -0,0 +1,58 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.MultiTenancy +{ + public class TenantConfigurationProvider : ITenantConfigurationProvider, ITransientDependency + { + protected virtual ITenantResolver TenantResolver { get; } + protected virtual ITenantStore TenantStore { get; } + protected virtual ITenantResolveResultAccessor TenantResolveResultAccessor { get; } + + public TenantConfigurationProvider( + ITenantResolver tenantResolver, + ITenantStore tenantStore, + ITenantResolveResultAccessor tenantResolveResultAccessor) + { + TenantResolver = tenantResolver; + TenantStore = tenantStore; + TenantResolveResultAccessor = tenantResolveResultAccessor; + } + + public virtual async Task ResolverAndGet() + { + var resolveResult = TenantResolver.ResolveTenantIdOrName(); + TenantResolveResultAccessor.Result = resolveResult; + + TenantConfiguration tenant = null; + if (resolveResult.TenantIdOrName != null) + { + tenant = await FindTenantAsync(resolveResult.TenantIdOrName); + + if (tenant == null) + { + throw new BusinessException( + code: "Volo.AbpIo.MultiTenancy:010001", + message: "Tenant not found!", + details: "There is no tenant with the tenant id or name: " + resolveResult.TenantIdOrName + ); + } + } + + return tenant; + } + + protected virtual async Task FindTenantAsync(string tenantIdOrName) + { + if (Guid.TryParse(tenantIdOrName, out var parsedTenantId)) + { + return await TenantStore.FindAsync(parsedTenantId); + } + else + { + return await TenantStore.FindAsync(tenantIdOrName); + } + } + } +} From 31b24319be48a576cde3447265c851bd5826b09a Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Mon, 28 Sep 2020 10:15:28 +0800 Subject: [PATCH 020/114] Handle with case issues in json. Resolve #5618 --- .../Volo/Abp/Cli/Commands/TranslateCommand.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs index 39dbeafd3c..c3eeddc443 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs @@ -255,8 +255,8 @@ namespace Volo.Abp.Cli.Commands return null; } - var culture = jObject.GetValue("culture"); - var texts = jObject.GetValue("texts"); + var culture = jObject.GetValue("culture") ?? jObject.GetValue("Culture") ; + var texts = jObject.GetValue("texts") ?? jObject.GetValue("Texts") ; if (culture == null || texts == null) { return null; From 2b3fd091fcc6025de3b2d27aea9ebb2eaa412d56 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 28 Sep 2020 10:44:03 +0300 Subject: [PATCH 021/114] module template migrations --- ...ojectNameHttpApiHostMigrationsDbContext.cs | 8 +- .../20200928072851_Initial.Designer.cs | 370 ++++++++++++++++++ .../Migrations/20200928072851_Initial.cs | 212 ++++++++++ ...ApiHostMigrationsDbContextModelSnapshot.cs | 368 +++++++++++++++++ ....cs => 20200928073707_Initial.Designer.cs} | 2 +- ...1_Initial.cs => 20200928073707_Initial.cs} | 0 6 files changed, 958 insertions(+), 2 deletions(-) create mode 100644 templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.Designer.cs create mode 100644 templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.cs create mode 100644 templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/{20200903062011_Initial.Designer.cs => 20200928073707_Initial.Designer.cs} (99%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/{20200903062011_Initial.cs => 20200928073707_Initial.cs} (100%) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/EntityFrameworkCore/MyProjectNameHttpApiHostMigrationsDbContext.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/EntityFrameworkCore/MyProjectNameHttpApiHostMigrationsDbContext.cs index 64faa3f630..9156f1e3ac 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/EntityFrameworkCore/MyProjectNameHttpApiHostMigrationsDbContext.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/EntityFrameworkCore/MyProjectNameHttpApiHostMigrationsDbContext.cs @@ -1,5 +1,8 @@ using Microsoft.EntityFrameworkCore; +using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.EntityFrameworkCore { @@ -8,7 +11,7 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore public MyProjectNameHttpApiHostMigrationsDbContext(DbContextOptions options) : base(options) { - + } protected override void OnModelCreating(ModelBuilder modelBuilder) @@ -16,6 +19,9 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore base.OnModelCreating(modelBuilder); modelBuilder.ConfigureMyProjectName(); + modelBuilder.ConfigureAuditLogging(); + modelBuilder.ConfigurePermissionManagement(); + modelBuilder.ConfigureSettingManagement(); } } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.Designer.cs new file mode 100644 index 0000000000..2ad2035056 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.Designer.cs @@ -0,0 +1,370 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace MyCompanyName.MyProjectName.Migrations +{ + [DbContext(typeof(MyProjectNameHttpApiHostMigrationsDbContext))] + [Migration("20200928072851_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "3.1.6") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasColumnName("ApplicationName") + .HasColumnType("nvarchar(96)") + .HasMaxLength(96); + + b.Property("BrowserInfo") + .HasColumnName("BrowserInfo") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("ClientId") + .HasColumnName("ClientId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientIpAddress") + .HasColumnName("ClientIpAddress") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientName") + .HasColumnName("ClientName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Comments") + .HasColumnName("Comments") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnName("ConcurrencyStamp") + .HasColumnType("nvarchar(40)") + .HasMaxLength(40); + + b.Property("CorrelationId") + .HasColumnName("CorrelationId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Exceptions") + .HasColumnName("Exceptions") + .HasColumnType("nvarchar(4000)") + .HasMaxLength(4000); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("HttpMethod") + .HasColumnName("HttpMethod") + .HasColumnType("nvarchar(16)") + .HasMaxLength(16); + + b.Property("HttpStatusCode") + .HasColumnName("HttpStatusCode") + .HasColumnType("int"); + + b.Property("ImpersonatorTenantId") + .HasColumnName("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("ImpersonatorUserId") + .HasColumnName("ImpersonatorUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantName") + .HasColumnType("nvarchar(max)"); + + b.Property("Url") + .HasColumnName("Url") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("UserId") + .HasColumnName("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasColumnName("UserName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnName("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("MethodName") + .HasColumnName("MethodName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Parameters") + .HasColumnName("Parameters") + .HasColumnType("nvarchar(2000)") + .HasMaxLength(2000); + + b.Property("ServiceName") + .HasColumnName("ServiceName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ChangeTime") + .HasColumnName("ChangeTime") + .HasColumnType("datetime2"); + + b.Property("ChangeType") + .HasColumnName("ChangeType") + .HasColumnType("tinyint"); + + b.Property("EntityId") + .IsRequired() + .HasColumnName("EntityId") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasColumnName("EntityTypeFullName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasColumnName("NewValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("OriginalValue") + .HasColumnName("OriginalValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("PropertyName") + .IsRequired() + .HasColumnName("PropertyName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasColumnName("PropertyTypeFullName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpPermissionGrants"); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(2048)") + .HasMaxLength(2048); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpSettings"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.cs new file mode 100644 index 0000000000..91345ac0a7 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20200928072851_Initial.cs @@ -0,0 +1,212 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace MyCompanyName.MyProjectName.Migrations +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpAuditLogs", + columns: table => new + { + Id = table.Column(nullable: false), + ExtraProperties = table.Column(nullable: true), + ConcurrencyStamp = table.Column(maxLength: 40, nullable: true), + ApplicationName = table.Column(maxLength: 96, nullable: true), + UserId = table.Column(nullable: true), + UserName = table.Column(maxLength: 256, nullable: true), + TenantId = table.Column(nullable: true), + TenantName = table.Column(nullable: true), + ImpersonatorUserId = table.Column(nullable: true), + ImpersonatorTenantId = table.Column(nullable: true), + ExecutionTime = table.Column(nullable: false), + ExecutionDuration = table.Column(nullable: false), + ClientIpAddress = table.Column(maxLength: 64, nullable: true), + ClientName = table.Column(maxLength: 128, nullable: true), + ClientId = table.Column(maxLength: 64, nullable: true), + CorrelationId = table.Column(maxLength: 64, nullable: true), + BrowserInfo = table.Column(maxLength: 512, nullable: true), + HttpMethod = table.Column(maxLength: 16, nullable: true), + Url = table.Column(maxLength: 256, nullable: true), + Exceptions = table.Column(maxLength: 4000, nullable: true), + Comments = table.Column(maxLength: 256, nullable: true), + HttpStatusCode = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGrants", + columns: table => new + { + Id = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + Name = table.Column(maxLength: 128, nullable: false), + ProviderName = table.Column(maxLength: 64, nullable: false), + ProviderKey = table.Column(maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSettings", + columns: table => new + { + Id = table.Column(nullable: false), + Name = table.Column(maxLength: 128, nullable: false), + Value = table.Column(maxLength: 2048, nullable: false), + ProviderName = table.Column(maxLength: 64, nullable: true), + ProviderKey = table.Column(maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpAuditLogActions", + columns: table => new + { + Id = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + AuditLogId = table.Column(nullable: false), + ServiceName = table.Column(maxLength: 256, nullable: true), + MethodName = table.Column(maxLength: 128, nullable: true), + Parameters = table.Column(maxLength: 2000, nullable: true), + ExecutionTime = table.Column(nullable: false), + ExecutionDuration = table.Column(nullable: false), + ExtraProperties = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); + table.ForeignKey( + name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityChanges", + columns: table => new + { + Id = table.Column(nullable: false), + AuditLogId = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + ChangeTime = table.Column(nullable: false), + ChangeType = table.Column(nullable: false), + EntityTenantId = table.Column(nullable: true), + EntityId = table.Column(maxLength: 128, nullable: false), + EntityTypeFullName = table.Column(maxLength: 128, nullable: false), + ExtraProperties = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityPropertyChanges", + columns: table => new + { + Id = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + EntityChangeId = table.Column(nullable: false), + NewValue = table.Column(maxLength: 512, nullable: true), + OriginalValue = table.Column(maxLength: 512, nullable: true), + PropertyName = table.Column(maxLength: 128, nullable: false), + PropertyTypeFullName = table.Column(maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", + column: x => x.EntityChangeId, + principalTable: "AbpEntityChanges", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_AuditLogId", + table: "AbpAuditLogActions", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_ExecutionTime", + table: "AbpAuditLogActions", + columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "UserId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_AuditLogId", + table: "AbpEntityChanges", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", + table: "AbpEntityChanges", + columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityPropertyChanges_EntityChangeId", + table: "AbpEntityPropertyChanges", + column: "EntityChangeId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGrants_Name_ProviderName_ProviderKey", + table: "AbpPermissionGrants", + columns: new[] { "Name", "ProviderName", "ProviderKey" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSettings_Name_ProviderName_ProviderKey", + table: "AbpSettings", + columns: new[] { "Name", "ProviderName", "ProviderKey" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpAuditLogActions"); + + migrationBuilder.DropTable( + name: "AbpEntityPropertyChanges"); + + migrationBuilder.DropTable( + name: "AbpPermissionGrants"); + + migrationBuilder.DropTable( + name: "AbpSettings"); + + migrationBuilder.DropTable( + name: "AbpEntityChanges"); + + migrationBuilder.DropTable( + name: "AbpAuditLogs"); + } + } +} diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs new file mode 100644 index 0000000000..8a6bbe1a3c --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs @@ -0,0 +1,368 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace MyCompanyName.MyProjectName.Migrations +{ + [DbContext(typeof(MyProjectNameHttpApiHostMigrationsDbContext))] + partial class MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "3.1.6") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasColumnName("ApplicationName") + .HasColumnType("nvarchar(96)") + .HasMaxLength(96); + + b.Property("BrowserInfo") + .HasColumnName("BrowserInfo") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("ClientId") + .HasColumnName("ClientId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientIpAddress") + .HasColumnName("ClientIpAddress") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientName") + .HasColumnName("ClientName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Comments") + .HasColumnName("Comments") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnName("ConcurrencyStamp") + .HasColumnType("nvarchar(40)") + .HasMaxLength(40); + + b.Property("CorrelationId") + .HasColumnName("CorrelationId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Exceptions") + .HasColumnName("Exceptions") + .HasColumnType("nvarchar(4000)") + .HasMaxLength(4000); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("HttpMethod") + .HasColumnName("HttpMethod") + .HasColumnType("nvarchar(16)") + .HasMaxLength(16); + + b.Property("HttpStatusCode") + .HasColumnName("HttpStatusCode") + .HasColumnType("int"); + + b.Property("ImpersonatorTenantId") + .HasColumnName("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("ImpersonatorUserId") + .HasColumnName("ImpersonatorUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantName") + .HasColumnType("nvarchar(max)"); + + b.Property("Url") + .HasColumnName("Url") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("UserId") + .HasColumnName("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasColumnName("UserName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnName("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("MethodName") + .HasColumnName("MethodName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Parameters") + .HasColumnName("Parameters") + .HasColumnType("nvarchar(2000)") + .HasMaxLength(2000); + + b.Property("ServiceName") + .HasColumnName("ServiceName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ChangeTime") + .HasColumnName("ChangeTime") + .HasColumnType("datetime2"); + + b.Property("ChangeType") + .HasColumnName("ChangeType") + .HasColumnType("tinyint"); + + b.Property("EntityId") + .IsRequired() + .HasColumnName("EntityId") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasColumnName("EntityTypeFullName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasColumnName("NewValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("OriginalValue") + .HasColumnName("OriginalValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("PropertyName") + .IsRequired() + .HasColumnName("PropertyName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasColumnName("PropertyTypeFullName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpPermissionGrants"); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(2048)") + .HasMaxLength(2048); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpSettings"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200928073707_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200928073707_Initial.Designer.cs index 4b78f88590..4fd40e137e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200928073707_Initial.Designer.cs @@ -11,7 +11,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(IdentityServerHostMigrationsDbContext))] - [Migration("20200903062011_Initial")] + [Migration("20200928073707_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200928073707_Initial.cs similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200928073707_Initial.cs From b450dcf4d5690f1232c8459b8bd17603e0479ae5 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 28 Sep 2020 22:34:39 +0300 Subject: [PATCH 022/114] docs: first draft of devextreme angular blogpost --- ...ngularComponents-With-The-ABP-Framework.md | 337 ++++++++++++++++++ .../dev-extreme-page.png | Bin 0 -> 17720 bytes .../devextreme-final.gif | Bin 0 -> 847754 bytes .../devextreme-first.png | Bin 0 -> 27261 bytes .../devextreme-second.png | Bin 0 -> 22074 bytes .../localhost-running.png | Bin 0 -> 51085 bytes .../login-screen.png | Bin 0 -> 35251 bytes .../project-setup.png | Bin 0 -> 38374 bytes .../users-on-dev-extreme.png | Bin 0 -> 4413 bytes .../users.png | Bin 0 -> 43017 bytes 10 files changed, 337 insertions(+) create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/dev-extreme-page.png create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/devextreme-final.gif create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/devextreme-first.png create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/devextreme-second.png create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/localhost-running.png create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/login-screen.png create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/project-setup.png create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/users-on-dev-extreme.png create mode 100644 docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/users.png diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md new file mode 100644 index 0000000000..3a1b075d46 --- /dev/null +++ b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md @@ -0,0 +1,337 @@ +## Using DevExtreme Angular Components With the ABP Framework + +Hello, this is a follow up on the article [Using DevExtreme Components With the ABP Framework](https://community.abp.io/articles/using-devextreme-components-with-the-abp-framework-zb8z7yqv) + +We will create the same application using Angular as the UI framework and integrate [DevExpress Angular components](https://js.devexpress.com/Documentation/Guide/Angular_Components/DevExtreme_Angular_Components/). + +## Create the Project + +Let's create an application using [ABP CLI](https://docs.abp.io/en/abp/latest/CLI#new) + +```bash +abp new DevExtremeAngular -u angular +``` + +After the project is created, you should run following projects in order + +![A screenshot showing DevExtremeAngular.DbMigrator and DevExtremeAngular.HttpApi.Host](project-setup.png) + +Firstly, run `DevExtremeAngular.DbMigrator` for db migration and then run `DevExtremeAngular.HttpApi.Host` for backend APIs. + +After the backend is ready, navigate to `angular` folder and run `yarn` or `npm install` based on which package you are using. + +After installation process is done, you can start your angular project by running `yarn start` or `npm start` + +Everything should run smoothly and when you go to http://localhost:4200 in the browser, you should see your application up and running. + +![A screenshot showing localhost is running](localhost-running.png) + +You can login to the application by using following credentials + +> _Default admin username is **admin** and password is **1q2w3E\***_ + +![A screenshot showing login page](login-screen.png) + +After successful login, you should be redirected to home page. + +## Create a lazy Angular Module for DevExtreme Demo + +Let's create a module which will be loaded lazily. + +Open up a terminal and navigate to `angular` to run following commands. Following commands require `angular-cli` being installed globally. +If you do not have `angular-cli` installed or you do not want to install it, you can run the same commands by adding `npx` to the beginning. +E.g. `npx ng g m dev-extreme --routing` + +```bash +ng g m dev-extreme --routing +``` + +Following files should be created. + +```bash +CREATE src/app/dev-extreme/dev-extreme-routing.module.ts (253 bytes) +CREATE src/app/dev-extreme/dev-extreme.module.ts (297 bytes) +``` + +Let's create a component for `DevExtremeModule` by running following command + +```bash +ng g c dev-extreme +``` + +Following files should be created. + +```bash +CREATE src/app/dev-extreme/dev-extreme.component.scss (0 bytes) +CREATE src/app/dev-extreme/dev-extreme.component.html (26 bytes) +CREATE src/app/dev-extreme/dev-extreme.component.spec.ts (657 bytes) +CREATE src/app/dev-extreme/dev-extreme.component.ts (295 bytes) +UPDATE src/app/dev-extreme/dev-extreme.module.ts (379 bytes) +``` + +We should edit `dev-extreme-routing.module.ts` to load newly created `DevExtremeComponent` when `DevExtremeModule` is loaded. + +Open `dev-extreme-routing.module.ts` and import `DevExtremeComponent` change `routes` array to the following + +```typescript +// ... +import { DevExtremeComponent } from './dev-extreme.component'; + +const routes: Routes = [{ + path: '', + component: DevExtremeComponent +}]; + +// ... +``` + +We should also edit `app-routing.module.ts` to be able to load `DevExtremeModule` and `route.provider.ts` to show a link to this module. + +Open `app-routing.module.ts` and add following object to `routes` array + +```typescript +const routes: Routes = [ + // ... + { + path: 'dev-extreme', + loadChildren: () => import('./dev-extreme/dev-extreme.module').then((m) => m.DevExtremeModule), + }, + // ... +]; +``` + +The last step to be able to see our newly created module in the browser, open `route.provider.ts` and edit the array being added into the routes. + +```typescript + // ... + routes.add([ + { + path: '/', + name: '::Menu:Home', + iconClass: 'fas fa-home', + order: 1, + layout: eLayoutType.application, + }, + { + path: '/dev-extreme', + name: 'Dev Extreme', + order: 2, + layout: eLayoutType.application, + }, + ]); + // ... +``` + +After completing the steps above, you should be able to see `Dev Extreme` on the header and when you click on it, you should be redirected to `/dev-extreme` page and see the following message on the screen. + +![A screenshot showing a page that says dev-extreme works!](dev-extreme-page.png) + +## Display users on the dev-extreme page + +For this demo, we will list users on the screen. We already have `admin` as user. Let's add couple of more to the list in `Administration -> Identity Management -> Users` page. + +![A screenshot showing users page after adding couple of users](users.png) + +Firstly, let's create a service for our component. + +Navigate to the `dev-extreme` folder and run following command + +```bash +ng g s dev-extreme +``` + +Following files should be created + +```bash +CREATE src/app/dev-extreme/dev-extreme.service.spec.ts (378 bytes) +CREATE src/app/dev-extreme/dev-extreme.service.ts (139 bytes) +``` + +Let's import and inject `IdentityService` as dependency in `dev-extreme.service.ts`. After then, let's create a stream called `users$` to retrieve the users. + +`identityService.getUsers` returns `ABP.PagedResponse` which contains two fields, `items` and `totalCount`. We are only interested in `items` for now. + +When we apply the steps described above, the final version of `dev-extreme.service` should be as follows + +```typescript +import { Injectable } from '@angular/core'; +import { map } from 'rxjs/operators'; +import { IdentityService } from '@abp/ng.identity'; + +@Injectable({ + providedIn: 'root', +}) +export class DevExtremeService { + users$ = this.service.getUsers().pipe(map((result) => result.items)); + + constructor(private service: IdentityService) {} +} +``` + +Now we can simply inject `DevExtremeService` as public and utilize `users$` stream in `dev-extreme.component.ts` as follows. + +```typescript +import { Component } from '@angular/core'; +import { DevExtremeService } from './dev-extreme.service'; + +@Component({ + selector: 'app-dev-extreme', + templateUrl: './dev-extreme.component.html', + styleUrls: ['./dev-extreme.component.scss'], +}) +export class DevExtremeComponent { + constructor(public service: DevExtremeService) {} +} +``` + +And use it within `dev-extreme.component.html` as follows + +```html + +
      +
    • + {{ user.name }} +
    • +
    +
    +``` + +This should list names of the users on the screen + +![A screenshot showing list users on the dev extreme page](users-on-dev-extreme.png) + +## Install DevExtreme + +We've added new users and listed them on the `/dev-extreme`. Now, it is time to integrate **DevExtreme** components into our application. + +You can follow [the guide](https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Add_DevExtreme_to_an_Angular_CLI_Application/) provided by **DevExtreme** team or apply the following steps. + +* `npm install devextreme devextreme-angular` or `yarn add devextreme devextreme-angular` +* Import following two styles in `angular.json` + +```javascript + // ... + "styles": [ + // ... + "src/styles.scss", + "node_modules/devextreme/dist/css/dx.common.css", + "node_modules/devextreme/dist/css/dx.light.css" + ] +``` + +* Add `dx-viewport` to classes of `body` in `index.html` + +```html + + +
    +
    + +``` + +After completing these steps, you need to restart the angular application. + +## Use DxDataGrid to list the users + +You can take a look at [demo](https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/ColumnCustomization/Angular/Light/) provided by **DevExtreme** team or apply the following steps. + +At this point, our application is ready to use `dx-data-grid` in `dev-extreme.component.ts` + +Firstly, we need to import `DxDataGridModule` in our module as follows. + +```typescript +// ... + +import { DxDataGridModule } from 'devextreme-angular'; + +@NgModule({ + // ... + imports: [ + // ... + DxDataGridModule + ], +}) +export class DevExtremeModule {} +``` + +At this point `dx-data-grid` is avaliable within our module and we can use it in our template. + +Change `dev-extreme.component.html` to the following + +```html + + + +``` + +It should display a table on the screen + +![A screenshot displaying dev extreme data grid with lots of columns](devextreme-first.png) + +Since, we did not specify any columns, `dx-data-grid` displayed every column avaliable. Let's pick some columns to make it more readable. + +Change `dev-extreme.component.html` to the following + +```html + + + + + + + + + +``` + +which will display following table on the screen + +![A screenshot displaying dev extreme data grid with these columns: username, name, surname, email and phone number](devextreme-second.png) + +We can also utilize `abpLocalization` pipe to translate the headers of the table. To use `abpLocalization` pipe in our templates, we need to import `CoreModule` from `@abp/ng.core` into our module. + +```typescript +import { CoreModule } from '@abp/ng.core'; + +@NgModule({ + // ... + imports: [ + // ... + CoreModule + ], +}) +export class DevExtremeModule {} +``` + +And change the template to the following + +```html + + + + + + + + + +``` + +The headers should change when a new language is selected + +![A gif showing the headers of the table getting translated into the chosen language](devextreme-final.gif) \ No newline at end of file diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/dev-extreme-page.png b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/dev-extreme-page.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1b54eb3eb5f9731e603b860953a6746d6a5a94 GIT binary patch literal 17720 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

    +Ml>1Ojw?9R4Uc*97VEDDOz=;5H+ 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 Je9`m&KLCXqnS}rV literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/devextreme-final.gif b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/devextreme-final.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a39c443f0b87b2c7c3c10453244b59b6f677d72 GIT binary patch literal 847754 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%0D}t^eBkg4`4hm$`vop614x~< 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

    BQb#qUn)DNOdgRo6oqjy7!3~c4B`a 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

    ud#6>y9e& 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%0A!kn%Gql`XESV(fz_<`H0)G z1se1*NOO{zdLXKhBIYXL)Y}Jz2N{Y^$QR)ZiW$)~uZsCGC3Soy9-1Y~?j`jRCGHg^ zL;WSS&r94er8dH))vBckEisPxQdNb5!)~Q+3#IZD7i|d_-L)=;l$3JVUpx_W(V^c% zywAsG-F09!1($QwvCGHVqf9rxOt0!9>0TL|p;!gpxzej#xGVQWd~s(6Rljh#$$DY9 zRmCplis+mQ;joJM&4(5IJrzk+GLIjePCm)7uc17JJu5w@GB1Zd*NTAw!0aKyvmRE; z!h#bd^G`Jb>3~$3LUF-*RZ|zXQK7nx3TQo9-IP<^wYc*lyYJ<$^H-|auTlB-ScTrm zVZXWVbGr+BIHyLpv1Zp~4b_L59Rjr?2Wv+cIi_-a9(L7U9;+p+)=pb-%%1d_v#J}& zDOv22nfLHncvx5Xp-zCM{-ZYAvbN94$@xVs(-#>^cr=bR<(dpZn@m zPLey$yp{PUr>5ut8bAg4m!vXpUKAS57F#;%%@=hJFR@!bxv6w86KUH{JZ+hrk2TnE%uO3kL7L^5A>^9YrAB=1+XYoy6Pm(?g1_FGQsR+f` z7C7MBlVLu|rF%T>df51md$PxLj0lHms8)H?Xza>7!;YW*wu1T4{+4Gn8Cv0*b=?d~#VjqZ+@0@(E+g~Yc{AvVyBB)XwFUZD$rP?uMa6hYGN}M`K*TU?;CdH|k>gUIWn>jEqVaW`8$=3se|D1m6~9bYWh{ z0PI&JcKjqvpVJ6TQ;GsK_FD)(uMQo09)^OC-`ulma;a8uo12dBbe z5qxYMwaegL@~!ASJqaSoWS=$EQ1Skxt%^tt)KGEHD&XO<_O}7$N3THv)7NZ)PlD!a zSHl9|lQaL+6M@r_ES??45!`iavx)c8fuzUf)6Nzx_g}OANJN^gg0f1^I9#;A{JFX0RBn|i0>@8z?O2`SL?9*S#h&IYc;68-x} z^N%$b(w?o*;Sw2(SBffT93T%pMUznhZNA}FxGQd=kWZu)QPZu8kC zdl}@x_F;ARPWW1n+#Jp=70wJy>BR)5~hMiS{v={k5LLxKTuO@ zYhn?PGdQAYIi&Ha>4LMitGfKdQC^c~KoWIWZ}8zn*GlWwruyh%*~68#j^SF*z`;jP z*H_xRY3sH&)zuCi@#CGcI@p)IfhPt8GJR3IpUlsScRjE2^sm*CdlRp7>G9{>z*f}L zrN!fyABfZk*FW0*xvu@v+x>k3&jw|e9R{x~hvbITM?KqUJAQ3qvHr|G^t1?hDw$ooC#u>TPErvkB-;+Qy}eV%exJ%j zeid(9XLF*Mb1$<5sT@1QjvET}vh87^-xpbJF&);0pgg$psNH++Y67*+1zqzuw(W&I z1Njwl5-NEmLSL_(mVZBg6DfYs$>u}r4JCs@%{X|JL(yn=1htTd9Uj$rj+TpM4g9>l z5IRrIna|FHzKyL$5IwO=#tY7(;hWFCc{we9m}?ZO-?26mwt{8iKT(%whX8gESf`F` zbgaw(Tu~QJje`XserHW7o`ldCB_C0%WRs`&KVypAsb(3p)Qy0VuRPI&Vhyw;h7`wF zR#B`f_|kmVijuI@4MWsTjj_wVtazTJ2wizZl|B$*EI{R$2;k%}m#QnfK)&)^)IHR* zJDJJYrSb)2B7Bi~eSdVRHUikx4vMU~TeWjr7v;)%eKQLKK(*=ZmSg(W1@;a1 zM@5OUi{PhA-<=ttGr=3c=67ZX6jyn!q=mqofsy8sIv=+pIe zA(VPNITk8cS}LTFF#rKFG+xlB>#-nWN$bBgB5QL$UwOi=&3+R_UZFeib(v%R_D^T9 zk!QYr{)ee#$U!j`O%=M~dP@@i2$jyOGN$-DQDQcXG(B=RSc@y8pWY~4=a+`b4$vX+-~DO&^w-dGtT{$wOH9oEIDsC zKhH1O2wMHxV4@^zsPwmqlDlu>$W86pDdvgE=?y07ypC+QEbscnw_O&%`c~?2d;~vT z8v>GAgdzLzhOAr5_}%CGdz^P0M~s{nM3)HbQ5!Yq;4TZw3RDaqS82#Suj=&Kh@gLh z{bJrdzVf~G;ra`ezWJu^uFFp;?^O0No?NbRHF@`C^YZCMU*QeE3kNo{(@3%>3X%Kc zm9t|;Bbl9x29H*##=s3*-O)(3>I_$;=ZuG3v)0nma9S$!6r9i#p~cbX4}b(L`Xz6|wibt1X{+ zw>5Ws6>~f8I%rbr(4wVFDI#N!9Ji9lOeaMiy}kDlf-AnQt>Kcmr)~M8Crx$jS50?% zMI?01FiiU0GBy6C3ljr=GK7)u$)5}k081Dp5djQ%m+QmYBM|hM9moFsE~gWXW0fpi zY69TfSe%{%56+<(~ zghUk};C|RF&BexD#S;2tXia99)ILbgKha8AmIvW^$@TFdaGV@MBpU;uPlg6LWJ3-i zLcPmd+m6U0Xbd2SZ2olH+5Tie#sKoRL;hrFK*oTrZHH_^`u!(^yzP*E=YP2E{0G`u z{OX&nsth-cml?fX5VP1<+iGm7cJ%XvU5wrY+o83!)~VYU-ljY>Z92R1=xFCp z<&V84^+ca2RoS;U203ny%cY!=TOD{BN%vY~CRRFsZMJL22n4eH+qUzrX*^F3Cm)&5 zvc6ZP#CSmV$;EQ^F2Cx6{H`*{|01vqIh|IRf2W%8}+mo zK?2Ks>$gfJy(N&8)Yh7+bG;4GHk~{>0znt1igt_=P4VGPlA9ba)rVM3sE-foUH(n; z)IStLtSfAT9WiYXjvRenI}YX?6Y!N zXzpWW(r<7&g&4gG6_$a~XoVjW&RPo6HYzktKT{bbE&EhSsxwdx9BOn|VGz1+qvNP8 zt#)_Zrwsp0FA&;xmdlB>RR%xUc0w3MhQ~l3R^wv~QexmpA z+(FoqpXlu}>0dn2b>F>P_0O)65UwwTz`YYN;h%xT)~XwaQYY;TNi z)3F}O@&jQL)R%?CAn(@ddtJKN&A=Up1v4UWISLnQ;iS*liTXpMhp%4!=_?4Kl;{WE zpgM}hdO1L}uaq*3>djUs1U~R5*ir#sbBA-R@}^}>ArpY?Bf-rTw>u%M>Az91h-L4z zH#h}!gN>zB{A>3F+w!-jdOp=}J*`w?0!uAa&Z&AX*pU5(8TjA>8qgE1EgTiFAf+CK z<4y#qMWbxoGXxtfMpb!%h0LSlxVUbn_+#C`wY>0YI=gj|(??vvguUFe)9)H*BMOUd zZ7Nt%b4Hq(L^gpwQ8l8|=s^;tRTbbkVaYRC*T?YUaT$yFDRz(1-3j-bJG3v2R`k2P ze%?Sqb=2KC$wPFP-k|5)v6j&Q_2Zq4_WRyl;@>f7;qr6>^ZtrdWA0ezE32dTyU<@= zr+2S0+i-`YI4c@Z%r%SUJ=l^`35|{7>Rm02s&k&b|9i>-L#2fh|wJeYzJEq^=e$7F+@asi!^qRG@b&H1BQKDpV#- zA@QFmlb*d?Ov30E!a)e-xr%UCy;w`eoY5$Bd}%myq89Q>bWBoqk&6>>pOvPmhbE`N zlMhLxJoG9J5n4+1-p3wo+@Zp}TRmFlM$wR;1%dtHQVfx1_R}Vwr}vtaeYmMXZ{zaq z8@#jPOlbGwpKJ)~LL+ZUbS=MrqNf@~UfxNRuI6R$mrvcJ-{|V$K%;yqo+7xzoRuLahQBoSTVbEZT^ek1B0oRdLf;=u^*O&Mo_#s5boXNh zZIi&RKuazy0zW19n1Dn~TqbI*H|sio*=`P}A!h|+wf@s(GGAwJx#@q(iENsq>j$;NNjU6xV|V~(jH5d zZKh^>>u%`&@P1cQYn`*eF~{nG2N8EOS}U&{clWJ+Wb&}By>vs|OI`T!On6hrExkIQ z%)!Sm6;?Y(&(`_b%TnLhmpfl?fMTp0eDY44mb%2EIB;+F%?~~dOyQFCPWL%(sp@B3 zSvp&PdS2(*`oq<$Yg^WdZ|keqfE^7a0oV8prYskV!p02kF03?p%@Nb?t~1N2=oA(;Job@+;W~wV_C=o)^rqKkDr|Zhs%AQXuP00UbB8LhMA7dr2Pnr&c-WB=u>Nx zR;?_N^KUUspLZm+a8B-lvw(j zy;mR>=qXfkS~09QQx_!0qP! zgMik~oD^l<;@>=QA|?b`A-DWOyKoc=z{TEQzhCvB+3nu8Hlik>h}n1VdSnBtcd_-9 zoWx^r@CF~aj)s{Vk?$!>=`*UM_e65?T+r>@df+C$6aoN^jAakJTN`hV1JoL=1U#Cz z(QudAZqWl~5PWIu6$D@MKy~}}Tx#0_kodMyBz^nr!PCy&P`x|K)F4FWy6~MF;3XJp zGqYa^}RAOc+%_j_(}@R;0u>-sFT+$wPTRG_weK}hqu z_H2~gyI*S~zq$k;k+>?q(DqZ<`r={u?D}g`#mM?!yacbz+=aA}uEn#zY_7$K7aCBs zmK;(#_EMT(Q*$i?ul zX(MZjd}eeMejB!5Kf3Mv)L)3K^D5@Oo(TYMVdr9XfA_%sSWf@J;Ju}dEKnhKT?y#2 zUH_PAzY!Tt`n#xMN=0L!JGXc@O8&-|VZ*rd?oT(66}mTr|1MQ%F+Cq4O}?}}TbI%aoh(yRR2U2*#%Bs15^cSUk~jND4O)w}!q zyW;;pC%rsxx037{pJ+n;n~zcA*TkA5rGCN4yv&1F`l}=+b6c$`rvn1YzXA!L^&Rk; zJihwGXYB0i)6=WgZ&#m@D0ZzumKbo-6M`%;fBF#q&Jr`y_Oyv?iJ{*2@ImM5yGw>G zo1y+oZRlSN9?CqCM0{#3FFI0^!0^6#M|EO?(Yw!R&RG2R`@7~eP@bx3u zaZn&(dC=!gF`#H5X|F9f1-27DBSFdV!;+P5z5T+1_D>vT$~O*z;BIu^u>3PcvIPx<0sZ~o z8->pGUk)B_?Hk&V1x?m+%Yp{|-XIGa_VG zrSFO#T45;+`#Ts=g@0iL9_&nvxwY@vFV_q(pAEPn-;jUp9RFy^)X%ORC>r@6`?a6l z!62%Cx??+=J>>PlVF1!mhB`m#BWZ~VE4t)tw(%h6eydjUnvrz8y9t5Z!OrQ14Rbg_ zvx67&-ZnW%1tEVn;mz5+FK^ne#PJDLJSHv8UN%0=!kRz(4t=lk(KoJ> zyGFY{hWFh!KKHEgt8d37?W@cJrBjhFDL#~^hK@Z596cqe-oWaaXe-0%_0qfjNtm?o zY5{4dW#AFpWgh-%FU&4Eu9M96@;LBcTQ~~ad6LyZ2kjX&<;OUI<04UBnPQ0d?Utg5 zCx)AkAsK-sK2E}VEI)vii5rFKsbGyy5aD*S8Yac8C5g`TEHHov0|r>l;$5+^4_hcZtx3jYo9NZq0bkb9{Wo$XBB3d!W*>Hnd!5&iU^AcfZmW735%B` zy-fA@gijM<6&#iYM6DJpCo=U7q;6yq*pa2)l>zI9CpaTFv2$w3VnTH-V8L2+7Lez0 z%|~7o!BhC2oFZ0XqPpk-&JGa~3;NTNDi}VKg*QatG>MeK%thU;YvmDyuaa80O#q@A zt`8J5TS$h%nbrE|N|^yL@;U#KdJaTNOiNt-X`PzH69ZoY;@K1pl#4dFPAhlQQanC! zbwg=L@+y&er~=LzIP{@?6J<$AQNK`4><2g{!!C&;y1i5442fY^+V?+789v3GC&)N)Tc=1JQlBhlohD+cCY0!I!Vw2!#L z+EN=(be!&j-yPeMpx(O_k|fTAGd>3m900ss*FxY!8k2Mrr~Ez1J_kZNX8{W-7>yD3 zFd^)5f8dkwc&Xkzn1ieS$^Fi72CwhN#i9cHZwV=v9~%cB8*m_ z>QsohrzhXNM}30)N}nt79a2vmNPCovrVL!15^|`IQ;=A7iGhUK^Img|7j6R6vYlFo zPG8OFd}#;-6C5s#SCq-*?LB%xW+1k+%84{GOk=X^C=0MoDwa^22H3rLVBFoLGqx}~ zz@XsTWfCvu^MqX7%N`(+s`wsS^3WwtyNL=jkg1uW<(oYnKyX>4j|Yme@1D$`06Q5N@} zziYYQ{kDedq7KCss?4aXY{pl_@9+RiJx?vB#!l;nmF`b~(dRWpIxr3UOXY|0Mtv!` z7FSFntcz4wgkfCuXRC43rL^jlB%|))5IHwg#l(^suCbVE7m2@Q2P(mm|2l%;p)RZ# zR(!QslX>1KtjMgWaeZNsszx*N@C^YOL!uF`)&>X2Tx#SE6M;uJi;0@SL=IXMx}HY~ z>Ba4qLuYln61(8&1blh%W_|*dmbJ)ULnjpPQX5KoIK`{9QBG!rCZAX}|3D@_?0uzO z!NV4Y1C`U(z%g-j%~8jqCKttbRrh$%HFt@=vU^096RAQRiCDi=yUxB$fUEVf2i%S< z<}|=lG3EE*PIp(7dzes|jlyV>B%?0$Q)+6uU0{NX++oG}UL^#bQ;ib5r&yaIBs)h) zuCcpIoT$?@)3lAj!?7D_UN@~ z27r`qK53K_oLM`oJ2h*(BJu1AIs)$v7C;ij$PY5%VHq%z9uI&Y zv@H{GGB-2>IANQqC^w(XL+DE<8)pwPPfNh*_E8hgO)cC)IiWC%BH@AtYXUDMz&W$v zbfZ(&q_X&on{z@BtookWWJ+TsYZw?Z4n9KD%$PsJWfEVS*%J#enn?ldi0CWUeqC?< zvwi5PG!ms}f?r>e=5YHYv$06z5q8MLe<$hvt?^^@h-Ziuz29|G`IH)&RIRr9_=Dr6SLNKFKPjJt$F<%Kb~BySF3Js8 zbec8n?$gu|OfIXTGX&B}5r7d#)v_d=MREO!T2i;dTQ8sjjw2{!@nZKaH(Acqz7@$< znjn#yn2Uhx;{~qgztkPpR;FvPL!E))<8^7W--*=Yj~&@%jlVg6;C3pb+g0b4`h?La z>rBB-)yTtNWmtYnykx4Nnv5XflX0FAqSlEo*bHVZC*OT>S{xElu;)5`HE&jRpBA4G ztd+}$mz$bFW3*kt#@AT;p8Z@eqEEoluz|ZrfUC6!pV=6yoG!6n)$MfP8E3~m&z1v_ zV?0ysrT{Vcy-P5ooh7h@YG|M;o+jk@5N#U7b4?Uhjg(lYCCsr-r|l%GV@@=XoZZ^O zQ8H33=ArXVCTQYr(_+g6H63;eexiU?>1WgP*Qr7qb`P|X6nkVEqm=7EOItGT{Lm;e z1?Sfvm7Xb+=WY$^^Og1R3sattqzeoUC=ZHqKww%!pP31ud*zMH3D%4%YTdxWWd94B zX0l((&j8(LSf~Bx8B}(SE9%=FBa%XN@U)l;){Dl{#eC6wd18zL11~wl2OLq7UXGy@ zK$t7mAEy!TEly8F&E4L!xDv8{SBAeLgktx82K!x@aX=j|K;d`dkrT?w4rNVpw2kI8 zdoJkdVA&tTdyv9g#~CFi>7nq6ySY5(5Jn_(Rq9f^c=0r1pqEfZ^f&d1T1JX6QSdiR zBfM9rxGsj4vEn8^n-EaP>s5C?DzmzB7a(}q0S(A7*AQASWOth_d)pqZ=f`Oq5;T(! z(I;z}Ngg$n5#(1-dJq+tXmqG-0z15>5JkbQ!U%tKJ=90V+Nsz?-R`J?+HsT382@Zl zm`O5Xl`r*+gM)<}r+zYm`N6q;GlHh30!=EY#1-E;8HAi=W!Jfosa6SV!33MeWOC4(dZ0Sg2q zTjZpG5+rAkAW9Mu0m(V%AX4NYSwK*7&Vm8S6hQ?fCjmo!h27KLGqb%tv%9@#cfaum zhvPY(gVdAW=e_UiT9Ub;e?_4~u&pZwK*y>FCSAUEe%vO!P8(+`0f=O|xDkBnD9%dl z#K0mJ1f3s#vWP5NDwFG0WU4k*mFc-I@`5P4X(b!cAkx468Ap&AgzV`+X)`LRN*^$4X4HXae z6n`Vqx5U-qNue924)~GA?F+q6a8IT-EbWkDh>K&4GzBSq*yPCd{7PkuXv!iMu* zPS8wa+Tp7-v%Ar`NCIwc?qs^ykU*5y2O<7W@Lfd^>{-H6dQvfkmV}lf_w^J!A*M(| z`Y-+&DQ5zzmP7>9&NN&*ur$MrGuDe8t!!%aXnQxnulDKPK2jX>rp(1NF+qdLq!gQ(C%Hg_kTCuL+CZd44-hh=m@%$l;Z) zs+q}LGe{`rZeuL={^cx*b_v&kvgk}YO%(nW=&H}!28V0NF9f_^{PgS>I~HD z;DRWNPjzn7Wfp@CZi5XMuw8ZMY8zyqBWxuR#`Mhy2(u$J@YMn z_UTQNh%Tpv8{nso3Q~^@VQ4{6wP+i)g7_5fWss*57G-z(Rt};zxvZHJFKl;kvtE}l zlM5NXm~JD_5qK;_RE3=DWCJkIuZI;U=!k-~@J!f)9}h}{bdY(HG7yXaqc#w-CzSH# zxgJf+$)~0((=4wtRjxm2K6Guq;n*56SYh<3dHF#DXuW93@!8Nc;^U`=f|c4&nGG8Z zB3qv>Z7{U%P1nD=`D`$-^%X&D;yYO_DCwoG>g(RLotBSdC-z`h}20JTo=~*`7^H@Nfh z<{#mQ`?dGs(cj7#-e!EcJA)uWo7;{P=)NKXP-=URDDv&Zm@)WK9Ef*M+rD{^l4K1Z z7)uV`;A|X~CFQ5Mdj6uqA_uw87_HA3S+qc~7UwrSZsZ${ zZ*Pn#-Xywa5XAwmD76C2m3gAK6lWRNZbrhKyN#vCt;^{(uD`T10fZ2w<)RmDn8;0? z9+~rx-!XaT5lwfqd6WbV5LE$$Ri5{lCIX}RuQ ziLBYF=GmFq**WaDSq#(MqV(Ld$=nB@xs|NBwdT3?*}2VcxbH7SBj@)`<_~@5kFw@Z zn&-dH&VT&iv7E^P}a+M+bqG zTN*33Z?8CGV^&-rfAoT_=xwgpRIEG{SoI%Sxd&UldwbPKV>NbUHNIjs5VjU9uoi0i zAk%rR`0-jP%z3$Xts-Xa#lc!7^QW4YwOZ3pCBB~;eAk}0d}@yQ)N1;vUEouv%%}2} zPgTC_eIskNwd+k4>wTu{6#^Ueu#J}68*MQg9Tgj0BO5()>mwQ)r2?Ccn;WlhZ@z_X z4r*-nS8R^OY%amJ-fwQc)7YB4y)}Ki@T6ty>)h7&?^^)NHvZ*pLbGkq!)=o6ZE)*0 zWPTfl-A1tNP+Z=jGTWhfxI>%0L*Kf?IKRV;-CaQO<>6ckD@TFjS)t>0#_^WSiD0K@Wq@$&a&v+o}seqYJ{zSjDEeg69<_WL#qb{F?wG{YV~#2#g1 zPg=2G=ds_h|Ns5jy-ap;ggqG{MCHcPo?toWtGtS1v8~(LTHGfMJ6lIso2MjOv^#(x z82}&&pv($kTIO;gP$rom+G~pn5!C#qwMS};9ijAszJzqwmsJvIGg0&_)yrxr{3b0y zbWhop(?y)-y3+S@2O^((t`XAfEVJcYx;e&|p|g6u@M;!~A}KJ~7NA*f+D%VM_PE5L z*_Vi{S~XFWH9kafutsev!iMOZHN%bDoi%P7_|oB3{U$9w>@o)KNz0Ug%U5Pw`ViH2 zz6T$DU8D4C+WQQiL9DNj3C{FqVVNkT)vt}URXo1h*)*eN{{D4&y1?QLGOCMDQ+T)k zli@vWIg)-rERk-BQn#9iz?s_X-s@Mu<9xNg6I2^Z8WI6J0bq#LvyC@l& zP_9tMM_lPknjlOFdgrf2$31T3hOakag_TsBw8;)W7`pF2FM?2&LR zfA-X>(*NaL>t&^FnW zY6AFi#EcWLQGl?Qc0wEgzaXf2M3Rev3&2V+c!OrU+eM@Tf`ktl3=Zb%DB21-nJ+rofw~h1d8>o9=t%nYHJL z*|Mx0ge#zZ?yqj;-&rQo#+uIWT%LLn=7c@H>ms&Dw+%iUWoUx2b|{c&+}XVs>AU+MQDD8%fHPg@Adv=Hn8#=!3!w#xqL>^- z%4pCz1q-k)E+Jk&8hjzh0%9X3Pd`2ya;eJ#cDF&E`EWG!GNC0RSWJP9W-Lru!IC1m zL4iwjEL=0llBz&Vkymdl;zpMxOTB?iF66oDC-nMk{(25wfIW&FDKp zOY$84qWm-MFqa@z6H%miT7R31rxe84wze(Yjx>%#)sMWXD~?EOh0ubPW-zTvCD%ez zfL+b6xi+z14!=#CBHoYCgOyxE=9ZeYB7Vd6{z zAySt0?St1{heDAyLKL~o-8_vnxvkl0_!QrV?6q9C zW=ZIl>b)(!(e0pD_guHaw`DgK9Sz?;*Q>98TYe|l(fGZ@jpyTU zEADkWnjSpA(Q=4=Tlo2`!XF|9^%B8bd6Axgk!ZZjo9gu9;I`*v0f+9o zb`uwYohQ=+Q#XgMhBcl1qeclV#w23>-5{ z%V3N5+9lx%t9?~h81XGGt2DI`D6+zmLz3z#y$%56l-u>I`H>4+KeJVo5%T>;I+Hm` z(MR@xNJ6lNi-t0)MVKK;_SK-^anHW3MamG)%rGSo>r4~4wy7sMWh-G8I()Zh&-Hr7 z$AI^u6{XxI!@tco(c<2|E)cBz6IqK}v^my6@qf)s_{-Z@($~wXkN*ZtyNb&-{Dqlt z+OAro;{DHLE&dYn{EPn=m$i6aYu^E-r$x589IU;rlD;Hnj>c=xuDAL$=c9FZ?O6qp zUu=>XeKVGP@!81iMRzE>Toe{lWs-Y@SS0$eIl}Dh z`kqlH>5gW$O!5h?U3D7r#F4RoWSekV3mop}G~2|c$OK3T|Hw9}j0Tb$o@Sfy!z@B^ zS&Q7eEHSu{XP8M28*s)LXrqSrC@Ds9kK0-K@tU^hM&6jYw-k#4snR0w-?RRbZMvVU zX)6AsT}4!&s{0Ew;s0{B=|+a|Nd(G7OJt{$)-j*tnz_pUK)0CSjzSNIm2i!gA!-=} z1P)zyMN^-n-y3unJlp?B;B`~!u$x{E2oUeJ@1eW7a*Oh%(z$Pw!$bw`wxeqQg&!$)-;enCvgP+baOl8xKcdNmPv#%RW}RFwc@T5Fns2n}wVu(b@nz}h{NJY7 zzwY#%tNgk<^!vD<*4N#Qk(cW?K4kh-6R$osQT;+!`?8*P_lZf%`oYK36ubKUu)!5c zEz%R^!fetm5@-Udmt;khv@FJ7ge_Y^2TwL{cIzxqhVH=Uj)ypmI-L26Ci!a(3C+K2 znKS#n6ni(X;lFK}`=b=QZ8^ay?uWQv0H$~0H_mZV+?u0I_|L34%M)npz~5PO`k&rZ zNj&HCcQ9-d{OBK?mLHAI(|p&ZqJSST>|cZB&cEgVw8b`u0RipU|#&%TTJV7A+Xrp(--p8|dKl)BH z_=SvtqKS!NKCb<%{X~}7XOrmrpZ8YIG0$(*i&Ka8#)CCqie37$yyWhntq})T3XA6`5ub)C6S6} zwQ`GJS>pju5ZK)|B1qKKTDeYE#Cc26b%{iL`;)ctOn>t8xYE64zHN=8K|Al$QKi8& zx+;|~6e;riZD#@bDh1hCjkjQccs#}N_La&d$mDMfpC*E7@NNWgYT=lQLqVHMk!RV-DG|?&GyiHN&|cr*JGc|tI@kZVp90lC{r{>=?lK|JHk~Sh|*T}%5d~Rjcf$O{)-YgPe~oGP6pAO+U_YILjl6x%rQlym8+@(nkC_ zMQ6-i^@D| zUqB{Hy-LX_oM51u@?7$1icZ`T0_f0$Y+iXTJj7k7{S(NfO~&+RfhG=Q@>6COX%GAi zGU3V97-?#Bdz6=rJ6kqC-+F0KqVViTOCIx=vQA>?%TvRNv=j06Qs+I*R$NQI_x)h+ zzj==P|2(5^b63`sa>C<@J_A6q8}V#;q(QNfQf@cz{7QW!g5wsUxIl?*+QMzkwYevE zV%J;;mzutSj2GA*lH5W@Utv5IXkId=YJ>eM(7ajp1KWtx$(;%`e_$KAPi?_`rvgpn zKeDDWt>Ob53qP=p&h1QAQ0gwdd&4Ot-@W(`-&v(@(7dxPD)+c=SGjRG?R@c_$Bg@L zGP7;}cxKkx?I8}^`0yUeYdPT&4%>J&xZP_h=OR>Hp0w!)wsFK|{U{#&Ajh7OL%~lA zD{zco$MBMCYvALsx5CRyX7~1AJ-O<0Fmbc;w`HAQ*;jwiMnr{0sXGuYr}I**Jawt| z^OvA(KhU854U3fy*T5SjnEWRm&aO;VTNg33SE1vwQ82@-U zt2jeTCG7nCG#Y!+tYMq=CvDMBlNtxK`+GXk>7+jR*@}xpU;Hwu_kLJ$Pm3p~LHHk& z`gb4B{>M-1lXls{NhDWSGWFo??1)e#t8plQy(yXgv(>X!XSn;v z?QtyDh+D1Fw~Jf`e+|OB{Nt1QKg(j3-Y#j%a6|pNwf-~&#`& zvZNQ*e-M#(elfNFL$k0^Bx(<5YW21S{aXKWWMYdO=@*Q~nOfDw!&n785h9+dVm^S8+t-qVmJjItp%U?L8$T|7L5o`SWIBs{w6~=5fR%EAelNU;rLH z@C-lxcV}Ld%7UCMA?5E_vpCfu5WeR>S+oAMYRHe`<-c`N@HaE>FU8CMnKRFJUoGkf zVneL{NFnCyaK}=t)iKF(oB~aFMx4^0SiC&pOi0jkSoKaa{rBm7a=gE@|EX~)Rg>FB z;H>bcbiTr5z$t*@ienBTnZ8j%%@nAwTw&g0+N`1H=f=^GJ}(|_Se5)c!|E0-he`|? zgzI-?Z0d=$JWc-^R)5gv4NGJb_)VXe){phM(Xx~LM+NKS?$jmL}6Swa;S}J8+SsC zjKgwt0*$JDL7MHqzc$JKI*3k{qNkpOHrMB}RaB2rKa)c{O$OGVj;1K~v0iXTZ1|3t zK1t%iZ_dTRrU#NXJb&wn#K)rr>hY6)cT~BPSpS2b$bXHhKOR-5P$?X0AkXLO`ij*x z!>`_Cu$Bo#-$A&y5&XEVqj)aAus{L@PHk8O8i)++GdU#Zj+Ap*jlzZhNq z4vYV90W|+}b^71DZuwtziu%oVcSKHOzk|psv)z?` zN@iF;U8#QA?wEsd+Z}`403U9Jm2Ue<5o z9db?13;wT8`R4!gKenG3UVrnkoxT?M6K@bp(&*)A=-yJ|o}k{)sQs+O_^(FS@FXc{ zOj#AAY>KHDO5GkfwK@G;d~=Pz-cNpaJteW+ zsGpe%;s8S3Ba=AZMmTOZ(k4d=ggh?I{O$JghX>(4jGQ9q_a4%JtG52vk>wAMEXZcL zrD!wKfTb8ik@lrn-5mTs>BxdR2y+{d@p)P2#n9MWCBNb9- zb$Vjqu)hrZWwZGcR;>U<8Jv}2Tk$_Oq}o7^DYPAOcJ@D883Od=o|32mPQes>NPg8` zQ!?{<3YRDR59jEAJEZ<~=kwn_qmj)8t~uiqzR(zfNQ&oY+^wIySD<1$4f@}8S;{haC z0Pi2>DRzMXHevnAHorC!2s^D^BL$!qcl$=vhPzhK)FXy%3thSEZbKwv8UDpmuWFDaGZJPojh z`HiGNsq7Fr!U^Ia9g6+)&V^S~3ig;!)AbuTrJdsy$jzWT^R!5n9`yYVoBkwDx5Ha( zeap$@uwtF-H{I=1i4S2z{RuV>vpgnxEM?!o z1!m@Tp0WnYszXxLxSuISX7Ts>!M2!oWMfR#LO_pPTddozK-uDp9{c^Iv{OS6GAMmm zBh>Q5+T#)0HQ}L{5SE8_sb=-8egL;;P8uUSqeU;lnJZQHkMc)^6V-U{7OkBs?aG5F zn|724aE+RFztpj*5Ii^ZPFhNwSBX4Hx#u=MaAp}93fCX)f>GxTkT$MDEsyN zb{k{KipMxlC0@9oo&4R9qhLw_)z`l*(X7G zbH3(^ETHX({oxL(r$>Z*w$=E@biKOAk!ZqmN9RZw(EzQTAHE8uKRyY7hmPy!v=$_z zD3&99ifI3$fWiS++jPhC(2$!d@*LtAcceas&w9b%zz;=pStl64LfUHBEXzYqm3DV2 z@rV$tfV*G!dA|t()*eepJu4eQR7015my4VdE?plx5hs`t9|aL#qCK0dBv?}&ZLFX| z;C0RqPuP;0XDE+^klYV1YJ=1MOD-#MI)hlx*x3-iMFz@76?svL7}D@ID~->7iX7Y2 z*(w+?p_X4#e!g(oSzNk4ojS#dJOQrCF~~frq*pqYe6x#WkXZ%5vjb>q!n(;6oWZ0V ztn31$ABt3P>H3(iFo;T_P-^;+rubg^=vS(XMg2o|hOg7#3~>=u+`sB{Ju!29|ATP5 zs>UrjE+JyiT(B`J03gKqisMk?gZ4vSQ`#JhLq#&5`~TugvJ)w%OSc{$3G61Asf3}2 zdjvOgU`~&wx?EpI7$&g^76)?bwMWEw?dP#VOMay5GxqbjPkl)Puaei~sXlWnoQ1@P zUzs5wXQW>J;(=4zwZu~AdMYqkIs*}=`^75!!!#G118E-p4QJ%CHje?x;$Rb!r3y<;U}h_2i~=u98^BlI!}soDNpww zRCVj{5-^*S7D-T7#YLA{pHrV~0(;P;BDpOusjGF%n3p9(%k7lar&=m3sjI_?`1Eps z2G_&7fPFqYb@k~f?9_ODfDem&DCzVZ@3s18rvh(=$(atzXG#aJP%*;1GI z7c*-@m+7FSEa{!m~OQ=;V9~lvS-6zMG2mMcpmmN>+UE_Ql)@IHh@W zqrx|bY`$0qgV*oAde@To)m~2sCrZREO_mEK+~bujTh`i?rgi zqGvd^0abh=RItzmUG@llp!>vu=j#%0s9t9!Y8)wle_7xKggk^*A)sV!S!cbS%9C{= zvDGU=vFt9E`gVQIqjN@!>GT~4(~+lxvNVNmUgB#&n&wzM!W}Gb)~!#%3Mz zH7!ILNCv)Zh21kVI~%TMyh!nArK|C!)4B&s3FUUov!(?fQZ+5P-s{QruxX=@L!DZwz(PccObwbaKG@ z4WFq`upwLLx7%axEe8fIkAiesH?}hZ52%xI1$vK7(#S7g7wLNM>4;Z^+vIoBvpo#v zt;a+VMaYtWYgp&2$$`*@vA>#*JLa>yy;tET^6@fUa&*f{SHB^*`NUHhncxD6A7o?h z+76W2#e=%ndQr245^+CnCo`3jr>qy55*h7ex5PTgr;kAA&385oaa!@Hds55y zDjBXHegE9{xp|p<-u$TEvU~vux!_SvW{P}x{JO7~PwWKtVNZ^>?4~cWsy)KjIgc6J z(u_UI$@qdv4EVfqIqG=$@>fQAk-A-#UXdO_n47WH_oXmpnYkjk2gefq1}l8G3burN zxG@U;rUk#C?7eiu?fn_=)ieI}E?}Sy{&<@-LyOd0#ED6StZbX4Y!oa>MfM2^*{TAU zSAnmknwD@{KqmZB#?2f>NYh3=DLexkWc_Kv{OMP8$rOlnSwUAuN!&+S16e^1ZG@dD zXl@(0=&h-Mz8O;AO^BOJ*e*~kE%<3p;F&ak1`_y~vwIok#xq+4VI_qKz7N`xP`fltigyJ&cUveO-sP}6gvA}XOC*rPB< z|4`Gu8=G}{wl`fNwhtm!oTI{mS9I4`Vh&X( z3gco=(qd=AT-b$UffC(HG-<{*X?9iYv1crJlKciIqND&U{mc?T#El)0mY~6oAYHP? zc)GDT071s_E`n@97g4QCDNe>Ysms%^d)__)E}L*cT$d(1UZ*==)PS5BdmQ)JFF~+B zK{{NQl8zj?ijbc~DE1?i#S^Z**SVM;FLggrE1bL%0Mt^!*?!cT;^J57l8yVxwGEPQ z+^06+5jUDlw!KeoRsz-wPj1vsxp|yI5uf77lj3wgUYj)4^BCbum!c<_LLZ)B#e?v_ zPvv)?=5~5&SUTcCe+prHB0bN=(DbwfRYas}DmXqlR+Tz1ojP7TJ<%ZD#{lt=M>l{@ zHzPgWYApS6dK#LC{KS?b(?Iv!aav|N!hbb2S{zZwlNKGG4wB7$Za`Jqm~nqHgM250 zlROi(n%Z!jDcheJd>>J_npx1FIo_DrVV~O7n9TJxqGnqxUlLa6iO9(zLu-AQBqWjH0WBLAL;Q8aPtB>*3GA6_0ckOT8 z>S68OUJ(=hCgkEBoj2fGssg3HjBM9r{yY?XEG~BXMutPBgw8uKsE-%Xovuh1eL#z4}sXn1iPn0o?TJqk{m0)wix zpE!HuA#$#My!L1f9MGW0RHv6aS!5)U%dCn9916}F<^`)3fl3RMEx=Pe#oemKBsq6Z z^hjO(pl>mtqfvOVvtgoP33oAfITGYm1+GGaXWzj+wuy^J-K&rfDv;%9i3c^v(t_uu zMG>V8YiXrZdA^2^iBBF|8dBAkqU$449U>3`cMVT4#4Q-I{x--93>hBb<05Xvi8)Er zDC9K?&e#q4FzV8WffkR#zdCqm9LbP7ltUad8||~2SJRkyD_Bk*(R?a!9jNA{Pm%^x ze^M*la7fwmLhOKnBY>a>;kS!{b+AHD5cb(v-pVrbhkJ4GT!5@s3-*~5zVGa@_1cu> zuE%TMY8Crx&(dnf%uG*kO*>uIl`pl`lLb;4RGbfLoYQMS{@L1%&?Y45Q)03cH0(71 z2S&l~&7p75u-q!}F&g#;16f4E4_IMMagdcb`0_UF1WEjU8}Vn*c}#$N_s zK|qGLp=+4dQs++mCAV2~Tfin0sPR)jfn?8b$ zBf?HbI}XvXWpBuG8>G{mv4#CKI_+yV7EB^$wjaTaZ~K|4U*GgcyJi&W`MfoIo1i6< zc*F2@8wrUy(>Q)R@dGrm29I7^m>ClZSstdLnZ^n6HGo;aUU@_2YE~qby^&WNvG+Fd zL(JPlZW2B);9XA4kU9>R_IVl?P@?6nql+p^i_*UP=52=gRi}viOvV~@?|iTI5IKz>3+PbMo0CF)kg+q26Lmjx5-UmWM6sn zo(@l0eP58*NGF@Alxx<8;C&G5UvOjgzX}8H-|D=7JKHekqX~BNfgGEh9|Wc&JMPRGJGg)S&QvmI!gCOPQykJkOI~l^~>vG?ZspOI>CldS>}A2j^P5B3rRSx1D$Y(w|8U~l}OedetPZLn4tu!e?}v65|X zLr1EhUt}s5C6Yn+$ia7nYlB^GgIH)W?+ys#3%s3I{o13 ztS>-CkXe+>0211}z1cT9crXgh|12|Z4#ic#yRZOs4mmP_hC8Dn$D=OG&X5i;^i`Xa z;5Mv+m8cT~opy%kY0Xla?O5L1nMT2;F%Y~=_zDu@Fb(%zC*F3p%RrEEm$e>`LQkgq zlcbjLT?A5J(8u%h8-g~GDGK7LI`StVM zg4bZcyH$fGcVH}ZhhGMvC+F9CuE6{o!0$#6*PS7UTCNMo&$CsKc@)Tc6!P#ZbU^E# z4-n>^J>$FOb|%{qeuw_(MITXM;a{rFT+VE5;J24;KY=*Ifjtyt4c))Vib$x$t=K*Q z8r+A19#%o}Qw@iZpYH;QuI2s&MSgu5m%io6ryoa*3PtwT`x%t^OfCa-A~+Y?*phPG zS;ZI*gI65=nk70V5|gjqtEUOtjN}`<{&4k?_}$Ir$=4q>(UN8*Y6tz+V&>_V{rD&? zv$LizKOFOL@oDE+YzwU|)ekYrxONT=f1%N3ku=9(e5T*4XS0}2e<+#ejH1@Lr5&t0 zc#n@>%4<2y9%?wTJ(zSJe!+HTV#lg4o>Q~X*ns<59%nqSjapo?j9Z5#_xbwGRpdRR zc_s!?ILk%zfimd_g%?<`4dz{iCX|Jm^H0qO@=f--)pSfqS7;s=Sg9Vy6ny*PTVGlBj7tE6)*KGxObgO^+&+Um(wnR^;idvDw{Gkc<< z(7vS{#q2z!Z;M$J1o5%0(Mf&J*fqTCmXMW*oZegAbf-hZ+XdzOhF;GOXy$G$ ze5)Uc5#s)A=0`xIpYPVLEvjwTXreb~e<%8$sr}B?BZDyboIo|Zq?(O+jO5|byMR_n zeM^TuMX@=fjq=pRWc9;($*7lKJ#8}_A78ZIQW|+?6LQTr=_cA>?!Hl)?tqv# zJ=A4W<72k&c=z$M))uAEPY0DhmVA#6^)Pa%JWKfEP9J-!cVTN?prIZ5o(b(< z*ZsqE)8QQtZ`W7qmuB+^p1x?>djVHA-tIQBZN9l-Df7)^=Hgd{1cUV<=?R_|H z2DuI!tX%&ZAFn6lBezsh=j-u;W!47(IUDchLB6v+lfmQC^3P_&SVKs}2?ewQC?VPe zoO^98ig5u9%dByHv{*XG?$tmh4hzx?3T03I;l^Cn7G#Zqa&0AXW&-&Z(C$6iz98p2 z=W8wCK6bRUh8iIe#}?$#BuT8Lx5HW_Eh)2T*%)P%LcNw2D9b$+<2eL9)w?XuG}BV> z>%~TzaahqMPVfo$bVyf+b@S?73_2WDhHSFF;uUcPCk*E8Zzs)hbc5u8B(~3@5ribvD+c zHjl0yNp$W&1uc!8qeyktv3`OdeD%s=6-8nn5*<5pxgz>AzSzFet_)FoX!&P$BWk4@-u^Pg=lE+da1`;>S3AV5! zVCV(p&I^qN+T04H?-C;bYAm4o+>5lh8ysoS>sU2JAg$M^vSuYA)DoR@bwz!()J~*( zpscpQk;t6Qh&0M6&Wd3Oqj+&d2;zk~cYc#LL_#4a_H6?JV;eFEM@ND@(CMVx5epI7 zt&Vtr24T;3V-!^aufcrYw4dofgvyxjlxFHf9zGvPFr4%<+-|HhP_gI{PLqvxDO)A) z@1(kRQDQ0FMJt;HPH+4I}DRGzbW6NR%utbv&7B<=ny>XH4l|(B8LD?W7GteJr~z6 zqFrPH&-7q|ebXZ8ZFS_CyQ*%9)%!yppz@yL-i19g73F^?TWX!zNk6_HJdTdqZeoX- zd70IjnoH%XIU5rr2V^0l(FC;NfZuu07=fG)LF=dcILGF-Xxlz^I?=Sy^K4I|&HDnG zyRa*PG6DWj^D=f8iV@{t{wuYePPc80Bbh!H*H>cW^@ljQUPikHEncY#;AsfzPP*?8 zEgZEf-E{61E`A7Z#5v8ELw@v4Me)a;^6V^X|8^YQjeU&?E+PT}@CCD#eg zk-H(CHG37q&S{str`Z=Ov?s`;ZlYgg-gOTSaOk&nah=g^lG5d>j@tFo<#(tYL=M(^ zZ(qH%X(w28GC|)rTX@8Em3GIobXQFEb3^>_(wj?{`ZvM3FK#|Me@Xmn&!AMteT_{L z&4$mVzV`|h#{?TPW)pxt zkgNZlPZ^^}$u{BqmruQvM`Y~2Mh0fJdhD%xf-il)KIDn|z+m z0(@vZJ`~YV0)ac4&=^JXH6B#fvc*$L($uz`W3H?T{>scNEji3+At~Y*JCI#!YAW``YoCRYWa;NCA)PMqi=TSfS-w#dbt8 z_G)MIF~fz~K$iE@&DpEcw;H98GxAvo`P;nmLQ?WZYVwl!9Gs-OIn0zXMxKU$0PkL`-|yCky6@(O@XhoUygOE-|9~5>r$BP z(%A31D3z=QscdgeDOPR0Dyi zb!MZR#Bg<$Y5wJhUoQ1gURVQ^T^N-F6{yU;I4v;2!xV*AJc%qz@W4`UePY_;Sc~S<7Xf_z(PDkRqY`#g!4qnfKE37Iemw7*>y@r}L!bZLkc34Y#*zs)wtkrgCW#Tgrz zhF%wn&KE6|><&K)Wob~omen9E)FO?*$Bqa<5}VT&IS&%&j|%u8Lb3MF#E&S6 z^qh&!tFE?5fZD;JD}KQks!Ip7!`GYCTfQj!SZ7`Ts+c#UJ^@i~WdwPctLcwk)o~8? zHV?JhzG_}fJdFsoVg;G%6BqIkn`6qYpAz3hfrMBIT>3zk+(J4o>Sjq&d!JOAyr1U; zN!1Uk_p|nG5z0@xt4({e(`mb-K35O!y@0V z(L+cLjs`D96FnFW`G^W}s?v^XQ}t;JwQA$PrypX$8e*45Y@i-$r4?e~9Aca~qS*Xc z{a9LC;qukI~xB)0+4Z^_wRV}8*|vT{F5Iu^G~=*>&H)U+~|MjUx4!|4Y&L9lZIcVim;i; zYtrW)(&wE~O_n_0>-H`|aWavURM_y125ZD)!bvu3Zr~_Lb2Lb8LNROB;PHk*_BR7G zQASEMks5|DGuePofk+z}tcfIg1T`#9$Ds7adm}d}2RQA>|Q+ldmxLuo-==ye$28K{gU#E7~sAXfi*~y@OBS>RAsIkE4 zd9)Gk>x*uq<^!W%ALG9F25kj|?VQG)(#BoM?b>}|-NVy;-;770v&rc*1G6(j-(+8J z%=A#3j62Qta?ZAk%)TCOzs^nMTV-?wVf1d+WKPj2AdKq3AdT?KO3)-{2Trh|(KlPY zVe-Lg4*ku$ z!l7Mi-2ZQyWmC^x`_8ELH%z?m5Z=1dw@-d$;$>Zjs@MOs9%&bH!h|byH9vc#8?D|C zWSx4Xactuv7$V=4|Cr5jyy$0ePi&>`v-&j2gN^x9a8HYYUEoq511*wu6h#p6GLa>; zK?<>#{;vGu!_5Rqm!`3+GT1ZpXCJUG%h@njwz!BtC>TtRRX&>WzLvDwx)qI{X?F9U z<9GMFiw{*nxE)XaKgQm~8_GY7|DJuuK9($H8Qa)K#=dK2jD43q%h1@V31x|z8G}*M zgo+Yl357yJQs1#J5us8kqlA! zK}~O2>tDaNJ|**sH%|k9kC6Qxq?QtI#_#!hmn5U1d0dAL&&4pC<;W!h6NfFw&fF5%63gPZPBa1;Y${;#o=xwoXk0OZ-B-lw{or| zTi@8Q?1VEWI3)i~z@TW3&wMB@d+bo7zDZv;@Cvdb=1o0mdY1Y}2d6-I#f}0I5d5%AON9~}w(ugQG0NxU% z=ZbZW&KHOD_WzzY#ka_XUq1TiBY~y$+*)Pwa6G^5#Kr_v9D6dozi1PEQ5dx*eJJ03 z_A!nh(#4sAe~fr0Io-}S)lVBvP_^8L36~*+e@zP_um=uAmV`?2A5@8 za2X#k4{7Tm+;luIoIn#X$#Log1`AmryP)Q^ZFahwPq{z?jhLN|(|C|Bn7x&k$lP5ng#-c^ofkx&RT-3vnKslJwy- z*cfzpnKl;^GP#VC@OSONCH-srv)T*mS{cPvn9@4Zyxf40A=r||ce@8qS4U}MQ{YTk z^S<)s09ftK&P!*__zQDmV{5%pvSSZH{!~7&Z^kF)FU5DULSVt1w-8=-<#YfW1oIi; z`Edy08xsSP(HOYuQ+))Y6zSYxc`1Qa0hD!>M@l1l`1k9uP>o?!a{Z1xo(jkad0g-R z_sg61sA@o^jAka>*AFboN>>#lo?gUXohdd{tQVLA({Lw|Jmqa20hd5fD*Gb~ZD?Gj ziHu7}Kz@oNByn8hu={=+H*io<+uVe_BLl)6{kDzr56(l*aB+DHbwuacE8TpMd0UAV zm7*Hw=@b5T8z)uY$SgV-r(S}?%V}9@{H~yDT#d6^Sk%g?;Pmrvq@OQ5b3Nx`CeS&W zvz@M8doRY_Yl8e)%)71o*Lcx0qAa*C-7+)hs?VO~{$p(Vl=1zv!ty)2vBv4vJn}ssz z61l*pfv;52aND!O@seE-=mr&T6e4b;+O016>RB8wStP&sElvclq{oRv`SSJ1EV=fI zH_iGAA7RQ*15||`0ELY?A?kPXnwA|qVc^aas5%l@iB~Bc30mTAj zSi$6x?uA^4H4dUChR@$|KTP$i0xP45*^)^`bJzx3kaoDc1VA39+GfkYb{XOOjE*B= zArh!EIOrN(jLxOyrXAvSAEV*eREBWO9TA_nHn3jEXNTzv!ZLxn{ni0VvG3;>R=r(J>VP`|a=AWiupJTEF<$1f~P>zQ=& zjBm@^hhQ0Ms9E=XB`>)wBy_fMJxNnn(?e6|xi5kY5|Ct#cnLdf)`yTX0R@UaG}zht z7s7`%{108|1H6ybK$f%D`XjJd{RWVWSSJ0nz$>^LSB+WMuznf*Y6$1=<7OZ`WdL5U zeo@91##do?B&)P(ddX=tEF(8D2e=%NghB~g{YNOfgew>a*1KBy1tc|U?b(s2yTTc| z_&JnE{(k#0JE>1KV<6h%Ig~y2I~hXAkX&4``6t5^D$$3kp*$Ncsd%rQ)HgT`9*QB_ zM(0}6q&a6PL{=?s&!5%c282q6Tq}3L(nVtU8}J<67yD4LlMcmBNuM5jJ~5>o_l5oUA7exWk8Qfd5u zl|U`2(`2^@eq~Kth{pB~@K6Itymp|0m&@Tj6GDPn&U{30EU+g6eNk7by+_rIE?eYq zz<#f%c(ifwo?jh7^!K1^GV(0tI(nDr1)WRYo%1|X@j8n6{FuHDZT`gyd$GNVhCm>n zIYL@}9FH$TpJ0uRc%u+Fp0}&#g97+YfOm#yhsN3t&aZ|+s#9zc0|!Xhz3Vu!F`!Yl zgrA_lJPd`QkxpWvdR>ljZ;R=q{l9hJwk{jfzurW`D_hTBC#B!qyS6Vz<^H*o@jLCX zr^ruxk#8LV!SDKvK zY@1(S+@803`59s`Mg^4X3y^HRvAU)GV((Rua@Bx0pHGN$j%OVY9o>N4KItI3MyV0= z8=(PDH^2l*Worp<6hkd2i?g6+GeVItdL(vU3=Z9UYj&I(Y%btE6w0!Qr*wU^E*}3S)tC z4NjTOM;|uv9@6I%>%)jQ1poaESe}D_%m*%gA<6v0)Uv?z{SasaJ5-zk@Sp_CBekR6 zXo2Mkl4I~&TS?bck_-B^E-BcV_k%@out!)vZ%T;FfS3T?5Ep@b&>IV*879R;+}Qvk z5;ExJ_vfeYJCIid8Hz_jECId`3av)ujl2474JsgL3e=UFL!&@#ALDH~VAV5DG*=Ls z6eUZtc$);3ZP0$p%muyD=6FH+BmCwRpx7~sr>!2P`VjjD-CCj?jO7Iu_R?T62JuKU zmVfFSTdEagCeug@Y{zQ$1I=Fi9T9$O8)N%R57uBiQGn!DvJhUhI6BS15-hiU$+lA~ zZVdFuAX=R5IT`|tSc8qmL6$@jW}d;W`)FkNV@F}CVBow%zap4629cmj%lFHUV-JuT zs5~3&>?+%@Z7$4(luekAR5HXG@Gs|No>!Wcenz@8Z9I$=C6K(2)*uFK-g3ZMaPY|o zU*XbTI`jcdqzckd&1I<^ShNesPnNqm1dpm-g4t`|JL z!a`rtzFSmAUPXnA_I3PL;3EnQ3jw5g8F{dckBJ?4kf~aTf}p%gKH(dthKc|%pFR@t z2*7s$9yW2aK(o+M5MMq8pv>VdT03Ux4V3`{_kciUYrW%Cl{8nK4}BVlci(4OO*cymeU6Ar|5Qsi+0;-KE?wCm{yA zpygw5ng5Ou)UIJw9W;6(2Ac4ahx?23#FWqUF`b7#MkA!OCa$Ahl9JnT~ zgV%3$>$q{j&>ObhaIf#8Uf(vZMopx_Szvb(Dv=2OSA!I$0Cwb|hdnJkCo}{W{Wi*h zDWagi>PS5GG?Zp2HpXIFLdt!S1&T;{fRkvEA#l<98%@NDq}xKagX5ZR>|4^JJ|7wK zQ^zal49J^yFNQKt>YQd(Sa4y9H3wik(17Y1xM>QS1=uY(@U!HGXYV?*!8LJe#}cFu zn}P+nkm43|epIZzDpKFF{6vabWw*{(VDTF=t)UViL;>0X`0jIocqI1tb*KjkDp?77 z2jWdqaF1R)mX_z*D}1`yHgRLcPiiZ%OqhTo=QJ|1$RF2^06Q_W&)Ki~3P)jc5D zp`gwKNp(BQ6%>6RaT$r=zkBwE6rzDwRVF>bq7OWur^F0BD6>5NK33b0PC6Ul^%|TQ zTxb)IDw(PxfU5Y@_K0{*Hdz0H3>56jCIZV9TF3x2*UN363Q-kyfw@9(Bx~a@ULI<# zdxa<*7eZV^TTvmIa}m$G^@sHx_kuy&hcq72MQqnF`QrdZcBwo{z@DlfuB@SKs2}n| z&Y%GzfJyrvVnWE%0m?q3qX})bElp|As#GNoxa*>!bM>u#EL3{r)meE zm$fH>kKc2XCOHVZa&8Hly5M%-4k1_g!v;7f2Y7po zJYotTJMzqXMKs6#S;#LCcMgIkJ>D}Nb^E2P-9U11l(z&xlyx||oRojV&*Ac7#*`rc zc(1BGAdwREhOTch_E^lJK6PF{Uxy>i0S_=B`E(9b1VJQ0o!OE0uKIv3X@@mAhi?!I zTygV;v_Q8++7 z8zIYuo#Nc^fdV6N>AP{rcz$8kGh@eb(6um4RW?M~2COTsAd)H_aH3myEPUeCV`fhL zC@ldd>Rj6fQc2(m@WLc0AD|^}yr_bkkvfNvLsBTD6l+*&?Y&=bMwJ~xS=6p*TbG{K zmU0#XPB$#U$_xYB=?d-QNRWNl?T#nf>@nWGO$+;R-V(OOV?KwAareYpjuQKLZ&OBy zXl>bj4&ts~YvT?em7OTb0(v*_KH`EUTw#qQcz@Z2-~chtlMZ+mxLC2Bq=S6xrc%<= z2Gg-Vxv8XrAA_IKU)JU>1Bt;(@_RI{z-L2AfWkeM?)^@sT#=}5J$-<4u}^*-&pJx` zPXA>EWpsdoD$R_kiz=)zn$ksj@+tBhl||9jPivrUhg3_tWR}!q(X$P5B*zjxeg5Fy zp8}$73R3l706H-R^+0f*Hp(?iT59be?t^GT0%TAiGj#yCK~wMrfV%h=YbCSt$|x_M z{>wz4Noch8vOtp=03UTWt~TuwX^iLTX6hn!PA?@zOr%pic1I z<}4l~RXt*N&^JQJNXx_B2nblugmm`v;^auiTxyXdvBcg5!Izzkgth@&?3R=De(3B zmo_D$({5SRLM2RrqZwU0F7Eq8rwsoBO682ck+b4*wM@5|oU7fJ)9#MTo%1Irul|*n zdq(GOm2mrC87}0iF4Ddn5xmYXFLr4jxZ$p^-Ze{dm+h~>t`iKd6}U$}R~?K0@@nGh z=iq{u@gi&g%+hon*B<=$HdhW@jy@Ck9RvIv;3w-O>xrep5c;yPeF~w40&4_-&b#sg zkUW=>fEE%T9KfutGYgd!e%D!oJf*KEYmIbPK2tKlgYSKa{dHUpafxL;`WbLq1RP`V z6kiLw^ci?2wFvyG_Ss=X;RA$BrNvtTa2j1jeT}S0)Qy0BQ3QNM3zyfk!N>Bl`*fgw zeRm`|a4|37cM(+y?4qXSL02=8Kg&W2#>WT;N^z4vVvzGoBo#3nNdjw&;&T$`OCWJo ze~1p~79(gPK!PlZuKuA`=kRFVn`SS{QR~L5Y($X9?+5=0J-56t@uypjtJd|W(nSt2 zr09^RBF|5WIYmpaC|+NkH!oRV|HMV?&k8)Be^^n;yMJcm?n6<*7cR6h*rYCMR0jY= z0d&|)sYpH*z^(|32hBPzl(`odDBSSh?AwRjQ-VkVhyfEjhGXLdkVnY_Sb`-}SXm); z8*9nFETILth3upPuL_%Cnz5a843LVGS78I|>kD3O<(|~YP7sWrSB%t<9ZY|DLrD{I z_!2Vw6`zDGdU}9O1yzWPHS@UA*)RIt&IB)plQ~Q~pUYPT1T_Z?*ymQSvy|p

    RRAbgjEYm~=+OBIEIG=-jZ`k_su8z87sNZ8EH{fP3^`k(x-<3S zYw!z4iL3aj97Pv}*NBw;Shm$!-3P4`QM%uaze@*vcXyD`v^DzvQnwBWA&UyU%0O;o zClQ2REl*c1nbZc>h}-@uEx12r0NEKl^z=LLEBi(`8`FodTmcoMuqWI{3yh z2oibyg2lZzhrB!_xn=p*v1{5a!pHpACxX+&j9z0s9`;Bb1ARw9kccxb5MC})zUG2X zUIi|2$=eDl8BqhsP)Jgrxsg&QQdVHp-c*+n)nTs%SFlyDQM~FH_XV!Lm^8?1kThP! z*hz~9J=+eA5OgCB62VZX-3{xSwcVv*mDi~N5TcTv@54?PPg(5U=!h8|mfU;u=oO^? zfcbXQz`SynvfAHrvyQxceSDe>){1g^c*Oa6x1agQiLdtN*HNC|^luy1#Kt!pSe3<3 zdi`j7;n`t%{YH&{##go=NgmiX!X*55>Ky35t3?$~QI9MGHs zh4>WO^osL6)>Xy@mT{2Llgiq2&&X^Z-SW#g}C9y1V4x0 zCtADb~ z*O`vf-NNNQz3TH2dvDnB!fvH7?JK_hzDm}(7vwNqXu++M*2iy6REFu-N7|A01CQVS zFc)U{Y-fa{o$tX_3O61}c220$)o!3>V946eXZwzq{HzQ&e^}&ne*SprpSkd3Cz&o6 zVIFL-as>V~+%+BTQN|YrC$<c5SOyOv!iDZeZ^Xt&?Do>#Oo zr)23n;4Y|hofh*|?&Q0Ezg6v<$tz!F(tQWBgX8iC{ll~uj7Gw&9g9pG=M77D2IF#d z?o`JtsDIfRN_iPa&gsaOd<5#CHJm{mr6FC6`bH?fd(dXrcx)_F#`3G0E%9d}U6IKm z4U!3E@AjU$GW;gX9wgjzGIwK(L~jxYGV{q6V*jcxqq zY)F3d-=njQ4vo=dl|RML{^?hD{)x)u|B%?%@;JoyOl(Z}i4Ta{D)cb z#FoK;Qxp~0$M+V7?FX+u@v`ZsnUdDlW%E;KA0GLz6_)t?*GTNe<=Zp!g4_G;@aI41 zPfcgn0^2%{IRD7{VETDGlm8LzZ%pv9`I&Fl!+m!6?|yQ{U$WNQ27sT|uiW@4S#l@domgl$&=R0H4%ms&SncdGjhD%2UF7&`%7>4E-ySL|t(+O}#}tn^ zhg;}=XI?lz^Y`D!Hh9SDT9MVU;v z89B|{TO9OvZtKFIkEIrC>E3(G-WPYjUHrGT5VZg2rlay${KdU5$AHo}5K$=Nd`^c0 z?y&|A7K4KqFu@7@(BY@>IvgLFgNVuDNvPsm!3hl?^W4S>OXEd~nMe#?%n>hShCdX8 zmr%lqC!hd!El{(^{4vj@>N+L(Z%8Jvk4)oFk9XRO5>WglvShZLp1y(y0ZkNoJn>Ws z(`95#fcZf-Kj=F#yYOGqaolu`VmA?9i2i)uN`}Qo^I@jemp@q2vBEy?#4xca6ZfD?LHO z-A)Od;~u3E1?yj2ezF*9i(tf(5f-R)$ArN&GBd%^T12{k^WA_S*@h88*O$~XOz6*y0O_g@;iz(k z#ZYbAevGY^A)tr+-ddAuM*)?aCko>Q-`+2T3h)biWm-r^A4Fc z^!2W8hCSL=66`>xV|;qDr~38}r|Q2d=pNyRSTU_N3%l!b5VdA1p4`C{$ARv)!Hg+T zrewPJqai#F!6h=)0p+-c5oqd&F&R7v84<1=-bl{S%3-!KY#EdNXw?yZ$9||I+LZGG zSLn=K1TAz7yf&*c1@wF&GY`7BQ>h>?29ql0nqiOjOw#uRFmmf&WV1(t#JakP%m6ae z0KvG-pZ;W11@WtQY0eq~9nNm((@7Y_7CJAJnYSF%@v6Nbvdc!}a3+a;;;muOBRJW;)Kt^^s%76=|!?-65$| z=eA1gtNiKv$P9jIt7_3u#ABtL+rv0x4qZrqA&ME1xWa^(kK=5?-eayf52(lXpj1Go zRLT&J1OCO&Z~?F`#2jak@O%C_FNb>`5}DxF1DTS2I1UJ#Ho2}hfm`%QAL6(eOA`%_D$b^aH-8VnzwqBt*t7L=@nR(WViEZ=pzoMd$ z`XZn>qq`W2WjZkmy{rnHsIdrKgdLh<=VstAJ2~6u!B4S_T)rN1zz9S_Q zHwEzmSa?nOcuP+DL}et>GrW8<2G1N|$WZTy3?HmnV$(BjwDom!uV|3xBL+%WvhO%% z%JKU|1OtNGJjO((3&}9z9G#Yk)gB}pTNY##GX&Gj!HiUEgud#LOvh3U9AeUM#&}Pp z(&Yk}lskS=DH--ehvp23Hq(jVYWG+-{me-3HAj!f`TdVNK6tFSW=Pv*yJqa9(t~8| zFs#?>XCOv3nYg5MC!86>7V1rf#sousNnis>XwjZf!AK8Y^5IQoQ||3&i6X44U(vUf zKXC8if0CIl+pnY;la{Z$MIF2BkzI#9Og(ELu0)lH%Q*R*_jTi)`-UTZ-n9(Ly-we; zvG?^V?*8Z?G1in7Q!CZQiT?#@xQFNLdy9IA2LOprB~HJ7>VY^xF!d<&EDf`T1r{R4 zo@U`}GjR=Y^DCJ+Nv*IcSpVZ^>pC4*GoW5bR`-Xh@hd1D&sQo1mNsUcgYwNLIdTz? z`eyg6<8R?T1^Nv21J0*ZaRc6b)XV|?uC^}DK(2gJm1glbH+rY`yvaD)-O#6(^Zv~U zcP0`Z6wx=TZw3s8ruo1b4O!q7xHly$X))_*x_`mh2mRk?x|XW|EoIYpNN0zwL8rJn z&7|0kK5x39uG1QJxcoG6~2Eow6A>t8?BS!Z7CI+TYEi-Xr@Kc4bvAr)ipL7%s;iG!;blw6q zWj@7X#M)rq)6ws&-@JuovYniw;Xpk+$ z(tsQ<2=V1MhYx(&v|?sB&qn)wK1_%#_KG~2Yvn?=PNqkmZ>cHz6v=9eBn>a*kAJ)U ztUTC?*?0uTKxAgHv*HH6;8^fv%E2>(@qF+{x=S%QX0;%rCX9Ld+^bumky7JP?x8D) z%_z*-ZwVsN4=k4Z*xxR;grCM()viXF@@7(~S-2?}2?b~Rgr}0239RT$tm)NUIiHBk za1J~K!8o{i1R(Rww$T1~=!#_AiV-9_qJ;GMLgXXatCumVVF($vDy^8yC3Mjk}4`w^`5qc=QpVok4 zENyYt`$wieJ{ccgEC#^7?wo}}g4VmjRJ@ST?tJCmqaScMDBmYeSi9=HK(Exo8e`YF z8xSWKey3q&%4aPWBxE6<>%YKjk=WjG^RAh2X|c+WEJYU;+(4Y>Ox#h4jjqKw?Ay4^ zsSWubDtM##eLa_W{bN6wKJj{5@gIt$-Ebj`aZnG{knV2N@c1}i>PGdAxG``=_n)sG zw>rUp!I|4&tDpqy(+NZuew(YCRxX=%S@8~8@r3^poMsZ7ekcDc!HpJ}f`=M7+-YcZ*f^OnTArTtRx=K9}|D6-`;^G`X*{%e# zhPb1v3*8Nrr2p2Es@G^Gi777p=l@IW8A#;0`TVFsw{+_76D$2T;V(pCtNi`eaTl)& z;1Day>7q>LzT#b<%tDuIQQPk_5K+}`-6&e7){9@2;y&lJ)?QGOIbjrO43+keryW9n`$&sy8$-yip zmr0Z^(h$}ALx_T1oDcQu^uYbrbD3ki8Ak5MnO#E4KtSp4fNByG5uCZbi(3SGr~P0O z67X&KgdhaZA}~~>CNkFa>BYyVTq0$r&-W$mB0AFVoMwumdLV@}$_WOI@DlbGr>=CS z{=(zTt97|#V5891U@22>EjeZPeCu*5qs?i|Cg+t9r1BvUo%C2t5`0uC=PRS-eh^iX z?7Gif8yr%(HDl8W)(!oBM~RllDMy+HLVqy#c=>^?a-{7g`5VsK-|x zAZn*qKl1z&6dT2D)AmPtMlPOL_+G1-lp5+1*?oBR&DQzW=!?eEdsgQXU)eBIAxsQS z38Jn_cI?DG5YZ{_UGv0S2uisZ`-~~{<{UPRTUlH`NytIjn)XXbTN4L<5*L8g`VRdgVkv< zo0}GYg(+QcXn}D0lvKrK7LUdsX~DBu9~dK|M<+*g8h@?4Z_Ua~xE6fh$|n5TB`5Dn z%b(M4C%ind%YSgI#(CbO|Ng~%*xvdXZY+1<%*HcvY0~;#ch-59Pr`ue{etQ~=j)V& zo0hjWTi<0!MYYM>igkqt#e9R-xVaI}Bz<;J05WH-=F;9?OH&;(%DbTZo>_Vce_axF z4taec#O^E9=XC<+lI`2fsgG?+`B!=iU*)eiPAOeStKEAW;O6y2*-AfdM>#j;TH!wH zhHP)4Ptn$|{8!gW?K|ik#mLCO+Y}w&1*Y%&$m*Ntch!zqyZ9B%Gsx~fs+XewJyESV zENl{Pb>%{KxMzyJUufygC_gXu=CvmxL=%M+g_7I1)W1}OS*I-J71$dq)ar&E)~MG! z+y08pR(PWE&~+%{)vdp(ej1H?!n;e>bn)7<+ERt5F&7^ZOuyTvAM(5Zu%jh; zAI-#R!X=Hi;2|}1>(?Q4ef#&-U2;u()Q8}5F&Txdr#mL-2lwZeZU;PiSoKHi;yEzC3;Y`9g_VTPxtn9 zhQC)0*5_%C77nU+^>*lXoBi3-9h-dV?>>?fCZad4s`5;4!s)58o}HDcxqgMg@ihH6 zzCRpJPyRj1d*u!Ogp9$v(Axr{9jbQEYAnKkn6-R3^TIr_MX|KGrPOBPna=e2KYtV7 zM9zHwRcZqMcX}pEWsPqn>Z}S6|rGGd5S~@QfVk`e#*jjt2^xy8` zS91HzMA{~YrGXBS&$nGn{LS}iOVH;SG|)yFiXlC;zb*mRaZT_X#6j(vfZ=XrKB;#A z*rQhZibb2wH_n7K{Qx6h>@G3K*O>toINzboHtEN{d zT3Y9DU{@wd9vnqHUa*;}R7X?r7(aZ^5uE&4P^JXQfbPtI8d!DSH9GQ~qPcg|k_hKhmHT|lFG{T3 zweRqANk)c^p|Ehb9zF3nHPdyraHJF>aCh7-j|Gseibv7J$aLs8We;o-%ZRLDEwT-^ z3^VG#$JvN^V$T#-vb*N(h16g4P~rQYC7f7wJdf(Hyj8XElFrdBS${VKGMl0?h}9_1 z2xpVv*V0_2OhHPSJp8NA%O>S8aesbSCy<&5qbK;NnOb;E+aOZD**b?lX=}rm=XM1v z50tg-a&BtK!Yu{^MGH89lRi$~h5fgn?|@cJPEcE$r?waaN}o{Xb8VZM7R7>&GAe!P(jy!Aa$i0p@ZQHdGEhw8i|%q{5wRhk_(Wx zadkr;+c+M4V#fiGt&y#e)sN=GE?Md4vVyH7ZQn^TkK&IT zr(1jUJuKqS8+>|@Yi1dIbVYi6;JtBTlS9#iwSwp;b5X5N&;5MhZ~+py9o(8W6!5B= z5UQX^NTj6LEmQKNr`N|@pZi5WO#4|o^VcNrzkdgv(%GyTfM^>BX8oQjRL6yi@;~FZ zC`p&Y%uZV+b%`B)n4#;~${Q_tPI?u~)Y_Uw=AY_OvRL1ram)#^2}$Zb8hGnc&~TgN zi?%+WipDF)r$0;oEIe(xs{NY6KPUgwaex@Odi81@c}O{VFeJJuzrr7*=&;l0`atJ~ zlhs#@Y3vLCe;WlCV*;=)!!N|@Z0Un_VPgSO9kGIOc~73s4?cT0q;X?)Y1k}$>CH}5 zO5b($&HEp53#XsjiKA_%8y48Jr@fPMPp37Rn(xlOYhBhH_~Q}m2&%)~ZaLoTFPO=DLXj2s8}V~dJIBbVMAAb*}wcDKeNNU zq9h-g{rYm4R380vN%>e4EUEtE#rx%#6pMy~e_mS}r0m-)v3iydt!3EqOnF3bo|q`U zlg%%=#azYB$qNyjm`4`Z#Ox&gn2R?mr;6%)PnJ=8zp?)PQ7B}_zN1{ALy!?5H4eLG zi~4-CH$WNV4mPj+d?*0W39`km%LSSyeKzX^=zi{m7LYDhO@fK5xZ@XeAAFQOlg=wI zC@d86D~mQ31`z!$W7Yt@WS8WCA`8CcucJQZd3Q-8_oXnQr4uhA0z_DtFhy1U?oK&w zUt#%xv?2bABCZgEGZL0^Q9&d6SV^EVsqZVPY}rK_D1XzB)oOY^%2fs&D=N~DQ~g{n zqLcAKG1~aH=rv8}tV`X7TKv#utY4`yh&Otx@nL*iQ!6ye{ij_xs{AaH6-#QrWdG?ppBUdXPvJ~@B4!+V8 z$Pe5;%oK!JY_*Ttilzm?S9;!GzoTaRaeV+1&gBS@So&YD3H`Dc%9&YKz1^ow6mT5l zOX!rBw%vLs_~qUSRNz#xp2VaZR26m~in(;&^`pWKK9 zDH;;xx0y|{t?bwE=)^rk$e~MxKiPJZdQuZ62^a!=nsq=n5%p-+YaS>M>c%U!O8W^s z#qIFgq(Tfwro|S;#97B4`Kk8uh_js+WzxTfu2h&;z|1=D(JP=y<=G)RkxL4u?&uVi z{^a-Ys_EjXn@*Mnk^H@mIG3NA!#f>feERk>ppvdhyDoQ1RB50XwS+f(^IFAU@r@Gh z2$CQ}%ZI4m@^CxU6S~g`vyTr!4iwneWN~houP|k{AMnb*ITm zB;Ux2?Ey_QtS`(6j(`|3ZqB*c3)7#iZK;SHnx#^RiuoZAS8GvNDFb_F^xJEVq+9-~ zUa0LaTRdHuz0RP}o?Ub4b~^xmj;4+PktnbK)=%2SWyfE+N;ZE>M7+NkL09mx_3}Ub zu(GI>$Ir^C)b+wkO%W@L&`COl@RL&>=h#EzC#WAFg`OD-?5-NT9mmewB9ozEYuhoP zTrOpQqJ4ibrSZ#a?u{qrho21I{Vx_4dDO|3V^eo0f541yo_{`f+g2q{gffB-n9EP` zeZemHNG>|kXzYC%fY>VVi*UE=sk^<*&zq58|7iVgX_=j7-oZ~AH1>0tN+4vHD7Jb~ z8;!1h!KlQSI7Yh*BOvUn=P7E8>R#P(||;E#&Bhr#O$K zh{L*)q8CbtKH=vB0qYS)g1NlXoGUNEgB zCvASTesQ7Ke{B6Wy8guc}*y1e89rdmz$Ni<-x5XK*>iO?AGusi<$Zwwjkua%y zEW-ZfyjxEBLjrkTWBErT>m4Jfe7?OSs)2*mu9xuM{8V@@@*XHH@@5oo5zMzR_ifRQ z$cnnin|IZco~YgamtCymbjSTlq3qb5mukf;YV^)~i92eg^lUcBsqCmz33{A;W29`? zu|mPAoOh}`Z=~Y60Q;QxU1xRW--~ynysM&?a#ELGFx5wi>VH`3HF1dh_lNIy<=i{! zdf&jQc0=GcB`1|WnoN9eGZxaOUvoF`Ez`(0OmMJCK>oq@{j&pf43^Q<1;QX+6koRw zJQ|eYb=l&*^IgW!%5ay(6X)d)g8Fu743chpy~fKp9D5_6LRI6@5d9HBqi{Xf26#1@ zvOgRu?c#Su+HTTMLLKUR0p5Q1h${~bZ4A*5$Y!A?st}i()N9=&dv8je$W;%rS5n33 zU+cY}D{1bJVopAn0cq1{2+HLh&6s0)br`d{K(C@SqhpB_)^>6q1+vF=7ZZwyP8h>Cp<$39VgaEb`L!-0LLS;o-dfO>wsm?eV- zsi8BbJO7bC@+;%t!00kHAfrP)hqqlpFG2ofvrNVpMUQ}y=B`w$7wUhgQ3 zjWmL?9fC4DHFpWe%fREIAQg0vI1WORzH{W8tCQX;ms;NwrMI83Hv#c1E zIku4{%@i{;lOm^heJv*M?ngDbpT`Ay{zsUF# zpB{~orSgL6jP1akl82Q$3`s6dItI|N4x|icz3dkz4T+X@(o8ZB)!T=<4U*<0!lE3Q~SQjK=`?~?YL+L($sUD)5yfFEeZAQyI#>-GTA1en!Bwz%Qr_v zWAI&4nWqpPW@TYG9#?8U3EO%uIoC9StU3Z~HyEmf); zd5P}!XjB3th2@`obq4A6J8@#IeFi$*AFCE5kNxxWgJXGrzG)rcT`(6@6G0y~X%HK{`mE_0HAV9h=Z zsYg+RC7S4tVb`VV zblP4R8D&{s&f2<>dTuK#-iCQIslGVr(joZSYN1P}i{qI%jmamCi}2J#r;o;M~&4A>33#~OBSA}jTx8rKPma} zHz~Q;Uh~kTwza+XKa;xt_PSA%`nT=%GbRrf+8_KddAQa7aNnc>{El0F?!DMii!p6YeA-${XzAZ+y=vMT zZQ2Tl{Ld8l|J0ZW0RRAD$R^lia_E9N`>R5Ej~?Ol1#~?5S%*cMm0s{l z1`EntGqyR!?OQ+0)Fk&oE*I(!<}Xjw28}*{_GfGD%ZpN%|8E5K!3vTe7m39h+~We>~fsul@0S@AvYL{{V2zfe%9>W~~#UQn%K{Z@9A7jkLk6 z_lSANtoKTW*RA(SC$6mbqp~m?14=hzHU?Fz>o$fktt%TZu>F{y!+LLHblq=!s{47> z_{U2874vzT>WO2o!0l}45wq7kJH^;V$ae&gX;BZzNf$cx)^X#v*kkY z)!1`sp{4Z(sgV!A|4xbhPt!2@%xLV^$E1b&txu_2``@=_sPLoPT!zG{?OCSEgYC~b zhO66OSO-3gxdQJ~J6{XKAMDH*C$8=+u(OWtE>_+=wfn86`oZo}U2Cr2#|Ql{MOT{M zeiHrOvT#&%wS8;#PxvE<*4|oAYrx)mmnFk&V@N9~_2)~W{ioBfM1|6R^_`U4`}I0r z?(Zfye)#h|8`eefBgHi)~~g{x4Ccp@6V0-)c@WG|9F`CS8{L$w-?^> z?=geAAkZ0Hk45_gWR8FBDAu{<6HFa-dkUPRxn7+Y*lxL;Ee5)a|eaCkH2X}A%7S;ZR4etqt8em8%WoQ@%1Vlgt&k)ieT_O%h zi;9YfJ*2dBi$gaIjfhG&iXbT}(qVuCV)E`m^mxwk`*x-LZrs zJUQ%n=@RqymW4%z*+=s8&ZleDwnfFLB?;_$C!$-{7M%iT6dBmnY2cU}GpC#-npV|m zR{J`Z6q-c(Pw&Ydt9tP)|gm&F*>G>?}gx#mb@4H#b zWN9V26n7^L6*{7-MLFHFyOW^jg z`0+iAxZ0I0$*??KC++?-mKE9YH(eY(f{idJl;2dPqEOsJef*>yao0j%$Co7U4(U5OSonhMMai+lgT|Rq5KDtz*wa|W=)~Y{YaKD{%(Xq!zOed|- zH9K01J+f$R-h8=-L7*$dQ|b&ia;}jA^$P8_bq%*Ftd(xv!|1eHbBM=1wAq6+)A7bC*xtr!phz+wR;0Ea*PCj;PtEeyu9H~9Cb%lR+6p~|;Tmur=IA4pRC zbpY5Y0)2$O%^TRG4}`zQfE;Z}v}pndKpcN>nR9>sp{^?N1_b38H~`+}M%Dg00M0(4 z)2$&r`)32dxWJ~TwsLWZ^d$!5SS_!NNKMZzZ~)Y|Ndzv+)GSZ7M~j`H-meM)Sfx!Y z^l#U$E)JI;efod%^k*j(Ef&7oe*hc+x#MAbUd~NMsF4Q%co1nSO7|yRlg)@w2d~M- zn7RJ_f#MC!VqwLg>ta#OO#WhV-S2K-3l%&EZ(uJzFYi?sdqF;k^pggF*zLwre*$q& zR~u`9?&}Wu#L(BBl6l>)yTooH-*gLg=)URMJ`(!o9{YTEcAMgx+0(shsxlrAGDJ(&rUrrD?YDM zT)_2V5z!M~{Gx)v@7B#*vrqQkynA;?T}@MtjbcsPjnum8uJ|X4)%UOMxLwtM)kdjm z=t}DC%139Pd=ks|xWA)!;*HsznF+2`^yC7_I?uckX1{yv%|V;Xm~3?5FXvZhUv6vw zNFqR~Sr6r00lDYZ=Kx;^H%sok$b@0V&{aEie6rtfuWR^RMpfW$@VKuz zL12TR0%!nf_}Z5SA&=5@M-zOhm@(Gvq%RjZQ#4D{TSC}(xsJ7$X0%;HtNx)u9O)F; zLlSC8{Luw-N00gnQ7BwHLmNbhn06{gK!)U6>OE9s&Fe^!>>)Nna_(Pqi!goBmQA19 zdS(+LVtP_ry5iFyz_G}r7dkbP8YKY?pDEnYn+Wj=fU-Mbf6Ed^n}vfs!-u**v)OSh zrrf3fQiH1y*dUH(m;n7PNhm1-Bd_}SzT6RMkns~MKF-nbwxPU<)logcTDGMyrTo-7 z-r8<1yQF;ac?!y(dS+a>Y-2TrbWW?Mep~j?OE#4wYfFn~-;<#<)xViYC7rXxU^RdLRjM(-`@Z7YEDa@cnXex65nS@?$PxMGew1N5_PR29) z3H9MdG#&JS2zNW$T^DMg78hV?fWX>kpPLGl7tfhV#^{eD0FUMshm*qoa}n3v!|j!C z5D*GRu=6yob7@x7?BnVoQGw3dx=I*Pd&wEU*~|pQXc}ZP@?jh^({iGyMr62a{y}}U zXV&`usSB70B-@5Yt`=h`UO+9~$KIbZ_RhkhvpGQGfx+`>o)t7;AQUPMvduUrT)kIw z$-}5PR#s)SX}$k|=RpgSG29lQkkmEoOSmgbThD5qu-IF!34c&fy~4@nEmI9ewbUtT zMS4S55pL#Hs(_?jLxtVBT#AnYNd@&N^Zgkr?26cE5k@EOL6?->>_!=!SFvTyW#PI} zSfPVr8P0;xrq?XH%yiP1|bRy zhLI6sxHG)yJQ*Pt1QBMk$O!TE$H}A6|q%2>8^~N11g#t-pP>G4f>n20$qy{aG)Q6%ICttbnk~Sg=7Lhqtq*haIcoBR7aVWFYD= z`DEQgB9(?0=5&oOtAK7A4I>4uOwp3RWM~?AF|CPnbSXge8JhlVdsExWN0j*NN7`f{~+Mf#|-olcFo!OCG=HpfdfpUEh_J) zB0^cL1>VYP?bq&!RLjd0lpEQj%U43pw5N$#UaRw(S6NK%$ETuu(>qLRqs|sw%)&m} z)@3=$bg8m#diyj$Fl16^6Y0;AocBbSf((^EWJWT+quWuzSiC&YQ7l@%$BCvSDYrR$ z_k|oiBhS;xH6OAg2!VzaJPvk-2V$g+;NX(2l-+eMg$k} z?PA(@2r+4NC0o8HPycMEF=1^b=SjYZ!By>@X-uoRp1T%kV}l=NE3D>`FQ!HM_~(Ha z)1<<Sk|4n*LrZm$Pd zr}vcX1^52CkzK;~(n)bJw_W{tvMmw=#SwI__QC}Qois*?*H0HZ_y&&jxOkTDe*S!J zAMGedu$f1uc#$hz^yonCS|#avJ4P~6w0WboDyJ&e==h1F{ew}C)pc2U95xhV<9!vJ z58az{gO85Qd>*{nTgiAjL+5d$Zgs85Z8%_EWBvTR+`get#a<7Xo-8NDW2Ti#CO8+H zSMuN9RzJD(;w%@-yS}$~6iZ*J$yG!8vH;)#-1^G0Seprey9?KM*U8Kq7os07^1C2u ze(@2$TAKZoYwi-OXyG$@Re>-n5cVoFjWZ@E5V-f12Ag-=UC*p(kqj>lb<&;We6-#w zf3GyWhihVcbxqqo8>tB2ixa%e=bF{`m0gW4w5Qv3vxDxkbPO|gT6A(}!o`BJ*!hBK z@uuo7o9u}YW|(7V_(;ecswJ`L!o+U#nvHJT9XnGdk^8azmVwd$$$QarbnhF3#>?~- z;$i4Hp{u0c`7RACew(>k^!*-Z-)4kg{UMEm@B0$&Rb9xv%;u%cgkxK)X{pa(m?wm0>U9_0lN}5<+eh}iULMVu60tsTv(x$qDVr#%e!gT}Dac+Zb#as#dJ z@m9Z4I^W2gNmbi>meQz|_0lPg8%Kl*5-Y@}l!EK1_xG=S_9#3LWyxx<9W1y!P;m6p zqV$~4_8Xd8fMatdMFt#r`0^&;;G*IdK@t8om{6-Mvm^TZl@zyD#CUh| z4*9!xp;vXU~>8X`hqO#Cu# zgotIeHYG+LzwQVr`_3>?D~ZAf60;4&U!-Nd8~qx)nCWn4iiv^_-HBKDs2{)C1)gZ- zQO6&X^f3-Za!dt9>g)Er8SCAtZ_(aF^!FVS)HgUTS))orKGC}EKEY@I z6Ciw-$+g~F-HHH4?XJs(JD)zB3vxU2lKbw4e}9L}6T)O71?@%1XJKQ$y~LbxU)1re z!+tDgR5)+Mh%F_+Wi$80g2bLl@R#6Fo(K}*V^s^rs!&h@m^zu%vz(^_;a)sdx#MgK zYwOIcz?4NFg~E2q` zf;~Rlh1YuqvZRK17B&(=2Vm2BZCTFbIT}&FoS)UUOPASiukqPs?$|CN*J(9XP5z!Z z&iQk529yy}^I7~9=Z#nptfNs52?3m(-qXsW!m0>v$|>b2WzNVOhZmv`v)t2}8OkayY^>gVa{=3N74nKdB zEbQIY$!aO(!pAWM5SbP~Oizy*xR)g!X?*ji41{~|$T@L!`l zzvL^Bv>&3Z*~s)>1ALLB(U`Y4veo_uaL9M3kpah!_e)oCWWaG%vzc!Ta2!qp0S6=XjU-}gZsvo1C+hIrkLIHG zl=X&t$i!hX2Lm`Jq^{Z69Z~HDG%tTDjlgsID#L@?FKsW2)G`tP*r_|tEA@HAe@qe( zwbb%(D2v993W$g&stHNk#vHuRf{yT^FiG-57UTTIs$~O(!Dm5EVIx-Ob;lw4u%MDT z2Oax)ohYjE1ZCKaflXTQ5kBxlYiPDij#iJW)tjVYwai_&YkJ&lij%G2IdY=H_r&5( zr$p|ZWf|a5^-OaxUm*1D)SRc#5QEK=4aIO%k^m0|U zb@m1*tfZmBa@B;j9|T*iq_g+@x{@ji+^eeH7xnE#t5JDq#g~=TLPLBX2spMA^>S|Z zr|9SB?4!#!xVoUA2xU#u5X?7<@7x3&F7q01iP{4@wJP&1z&s)Kgn{C0Dt{Zg0*f~7 zLGp=KXT1Weq0Ygo+SMZWta*iqZ9}!S6dayCi&lYYLw8d5Gq0``e7}-viF??hu*M&o zJ8?w#Ad{BI6e^<|aFFX7xp#i8yw$bvzN@5RpU+x_sutjC-ZeT10*+oS3OA=)%nvsD z;>xRT7ac#__2|j_wd#8EiB_Gl3C_1Q?Rv$h;=9IX$R}FEiam049xqtE<;UNC=~`a! z_@&WQ{u3o}uciy5sK~ebZeHT!Tw!c@b5Hp8+T=^!lqs96&gwfJemgJc)wX>yT7zF$ zdUa$!P;qfewLV;l=V?7*{O#`H@**#ipRn#TnuF_&?Dt3ka^279FRVAA=}QAObSIdS z*PBK3$$(>m?biD50ms?y$sHfo+i>({5uX&E@II|*SEt8BML&<1L`%`1!k5M5=uTq} zzUu^qe{t2_(-Ifnb>ZpD6PCroHA44f&M2K$UM-lBz4dN;k9&A|%B=3J!qbN=mQA~c zSGZ>nc=X)2hIwefpug_$NZ=078}{m-?C^f~ME40Lev9%ocJNL5-Nc-0O;(S_9O|sd z>)+hreVLd!ob8>J1w$p96LSsiU(O;aNdyRuqaw0n(jwnToDkHpM-|9HqlDLIC7y2W z@T59K%+di1E<37N5e0Y|1+KYt_C67e@>OD^wx!ca?`C&ylAQmt!#g-VgMvNIPhg5C z)k~9HX?gVPYLRSUOzyK_?1Tq}KTLU@aqKV=CIhaStP68+v}4!X$h)F3!G_W!h?Qx}Zg(Ta`;( zg1hYeOp4(3j?9FkeR(-?C)dtRr+V(M?>pp~?IK7FR5-_MB)6J4cgSbLR3zoxKG*r+ z5SoY1De;~Q^Et!-%tCJFm!szS3;Bgr3kwCL)<50hb;^XC0l3GlO2Hjop<0`(XMH)i z!xLADl_5Q^9P{LIs{lkuMb%Sr7sP5hlRy%uJbkYONaE<^-+DcG^hEB;lfNc$6b%F- z)a;g9n4Aiw4n-SGEVsqDVNd0jg@PoGO)R*>+az)5)_k#K66Z~i{Oq4hOkKGbn-g>O zp^5oVo|wOqI45MvaRm&I&Myd6e|}$0D#ufJ4at5lo{4{+%rG%2|Q|E@@Z}C?5j_2fA~b-ByonwN6lwTHa>rRd%v2K*5%0u zc+EaQs96DS%>!MG$8EHfoTCH76n@>|A>`T{=)sAJMy63|fDr{rW^-4t3Ve;2dgim91S4a}Ukn zp4Dtq7=2(|i1+V&DN>{OGV&S$nTe*VMG?0~G(V zAv*uKA(nN2*AVf(RE+mHYew)z%$$r!_U{{__`!-({R$8uq2w#6k;#nl9lDI3XbzI` zW`xtbbl)r|H^gh=((J0!>@XKJYKzpkrS{$ye~{$_KQitMsbTvFAgK}QgYGtIigyeb=l9%V_R)QkP^6vf2X2GW1%x zuVPQB-=b;`Zs5-;Jf-%c0*X@-16gh5Qmi6v%dVf*5al%VK8pWaR(scV8sJ9e%k!o; z>R#8LxYB+6mLXxPcrUuL>oz4&_EZ97wYQ!4?ap%NrC(~)5|K$ zXAj?9Ybd#U=`;26-MgRv390cX4RPxU(ZA66)_#sDAw#T3r6EVZHW0tWAA)rwfmj30i1N0L$HIi zapJ6w<6?kAu#1pRQtDQd+uW191yP>@EcM@`K5BK%A0KeIf%}!Y{T21~xZuAXa5$<< zgBQi)aS(u_%+M{xVZ3rnx81n=~eLS}A%AuMzYmI47;@gVARVT`tx&J)x&=-llPrfc(VI?-9^;dGL6cE?zPDHKF~r)2@c z^|Mb}1h4lrbYvx7L4aay`taUJ&)M^r+B-(w*nMm`Be1V3T8p)9xAQj#_Gh?1k3L72^J} zbmym`zKR!bbLlt4*Y&*_j@Rh<^AvmO2JQSN-MK}r`B&1N@Af1gUewGMlZly^AnLpD z#EabIR+d`7BWC`l$^AyUvx)i+hN`~)F#GBob8E(1LilAb{vq_c=i3Tc$V#vq|Dlj& z|5YI?)t>sbkh>9#e1zSkGKi(H3?IAXw?f`4<2FJ%+M)m<#20UA@Yo5=mdp5GRwLx(UQfP|GBB&ttzmP(?-956uY6;)a$o4B^Wu}AV_)g z)V4_o0a)GKlwj;^X9HLlp3C(VQmfE0eDA1{6XVLd)6@b#gl z7$29&_@@MVLvM?V_+`?N*DB-OxUZs~@>87l^WDuhGd)0>zH+;u4NNSO6#|X))*K8F z$(CoP0Gt7U0&7QP3&iJHFhk{OJO~FJBd0ThJR?nG!_?TQnL>98br8JlytCpWMfZ&3 z@JdMzf?+~FRMT2I6xzuO?0Css;cZJ3_6|_DZ#fLK zo5nH_Yz@XQKxF68mgaMEC>9eDM?A}hQf`{EyGtyqnbmUKaDYHuV2sZWz}?%2(|sT% zNUUg`-9ngmEHOz7*Q{svA4u@zPGt=4Bi+n6OxYJf6 zvqV2OP*3r{9@}o#vO^=_vgU(D*#U*W7F>yO%NDn%gNj=lHGNQVOZxzv)4M`$e_T6= z!cLi#m)wOvT5OknN-|n%Tz<)i68j{HEv?;reK0%e9>6k7RDadXliID30Y{LT-h{0RzGN&$V1V6BU*fct*jl%85$FIN_=5YX-Pof; zm75j3-p|{Y+4K0=K>oK1UX51F!wv1&Mu_I1OHtdntG|z*h9x)>zjTL{;0XkFb=`P6 ztj6+!Gn?h(`|EeE1e(BGZA=xrvxcpgKjn=39MM~Tg46Ea-E94=r=F;r{f^ZfX5|2m z>fnJElmw+h( zEMla6AX+k5^GKA5*}JI76AfOb2aT=XJ&4i^Se*(td^raK?_fW{cvFWFhopf$K}TW? z8eL|uZ#y%{0bH-_5K4X6LG6%u0t!|z<-DlDje~YUKNooaQ8Qm0D%saw`#crgF6`VR z-BGuq58c$v?@Sq3DS!1%Gf&bl^>2L-y#I7w z|HXFUHx35% z&MlA2G%UPZs{%0EqtvgM;^VcTcg(=g5ur6*Zpc`=1ox|yAY#u1vkIoYY8#Q zW?VTYJM;0aS~9*qE!P79q<|fUcP3)>8meECCC-PBM}cI>1#e&RRCb*6%%;To5dN^( zV8gWy3Y>qylf}nJ)zkRQH%D*1hAx{Tp>6)nVs-H5=>4b>LC3DE+;n-@14KOQRS0Rw zd>=Z%+xIQ6^D}?VL%icS1CmCwuOW9Jug|&2-EkK7)Z0b^u~ozUe&FnF@Z(I_eLdt| zp2HCvB%U}CERPVi*I~CtPeyKAk-u)KdOT;+LeMAHJle!ev@gm+!bR}(fzg_&n1cbL zj{7a+sHYN`_M^PrV=`}a&TuIIsW$(_xo+2 z)o{I)Xc-$QaaPzZessX`j~++5awtJ6=^aafB=+v`Bh-YqX0;<;b&lTw~Q`ICHlc(}JJ zV#|vr7c$pEl5fRvQb}%JB%SX^m_pYjN!Z|W#+CHc&3CZDF~EY);A%9<)wZiu52P_C z+s)}Ch4e~Jknjw!rIfl&E5bHwT0*DCE5wey8;K96aYB93}(Lgk_C}Dy}&jgP=Ej|&@tBP@q5r?J&~og`x3YPe3wqI>*taWzH0A+tYro}1 zD|!T=x^AruK8lnrZMOrxXzBtwb)OJelFApk3$l>ZSm^eKPK;KATT*b;Z4!J3KUxgI zk*rge+g{efq?FL{DH2!`fDXAM^t~7Dr`2iAf2h-MUbNpK<8KSCtvXeFQNj%>jV*=m zlaK{4GdEfgm~gUoW+oL~}C<-Vh3a#ag|TF&fhOdllbY zN35i!w7ZtAwo$VBrfpzrsinP}JV&j!=IBoF3Hx>EUe_^~V9Mc)Q%jTrFMQMzV6;0n zeMM&d0qpF?Ei6g;j9-nV(=!0T23!-t#P7@Q-Ltiw?y=$pH_s`TZL}1yz@4Jgi%&ob z?nH(`(HPrHCh#q*cXGof)pT>7;wV2D$rH-E!R>T7GewLTph(ydc7`>vaE|peSH5N? z7{~6bw{yR82rTAxK^u-=P&BNSul9S}Ts}x=%W1sx=EFXnw5eLWDRNvUR1}p zi516|g@W7ZgRvo7ORc)qU9>;LSo+h7Iq07j^OI`M)PB12bEod>oFB`+v1u&*n_~W_ z6x^NByx)vk2m}Q#q5ge!GJ~d3Vjm6$&{->_F@jfaVt%I>$~BA;JDgwWLdaqU#7^w^ z-uAs{Dr}Nk`|;Q3=~wPZr&{7M-vOzFFsTRx^wziPJa`x!qmn|wiHxayUv1z0l@NRo zZo9t4s2|qyYjvJ~hH~jk^|85W^lNp#$}`FvV|&7~`A!}G+>;_k!{Qo=m!xMVxC73~ zpzBX5CrG4mx9*0h<{PiKZ`AYrvWlbHj4Kb6XMncvea)gnl$di0Q!cML)+lm~jp^#9 zjNnwcrbHd6>>QEsWtgf3D(g|?uZ)|pma#?apd}Jwbb^mLPXyJSVYl@|%Cz(u8Kud` z!srv$Y<1-wYw+IS6L!*Nr$j8Tj@I(}5kr|#XXbE$1_19caRi2eBjnUO}0=X%3< z7ZNhSQTuN2@D<2Xe5`4(s8IYKg`g}D5}#v9gkIOOk2v)+tMkG_ls*kekQ*^2+lIFP zh3oIQ>nCz`+O+s=Rp%Yk&FTzc#;(m2lxRG1_I-5+pj3Py0WCEuuBQ^NGuT@M7?4-a zNE~+Io^(m`KeK)RwCYU%r`7o*+xM61+&fI$UF`LuivP3r%i1?&?&v>2;@{f7w-iHn z=WqG`79pcRgq-xRhbqh84%MDN8LF;-F;wG!I8-hEI8^68#5C`<{ij4{5|k~2vSPKPz_bRpDv&912h$pU{!m?*$-36ScGS(`Ejs;q zSs?d!X5Cou9D^O0)?ilIBb&F<|Dt9Jx|?>-bap|pet}y?Pc4|%zyvOfcZGm2*^o$n z0OW$evi(0#Yxrqp8~*RhcHhYDY|x9>n_Kcf8mgb)saA$x?pfHmRibc!0l>n*$ttlm zS$U|qHA%#O;$G46V-wOfAlCcT$1!6obg9df{itN=WW0KDIh*fNd98}v2N{~*X>oUp z^sAT(FqpJjk1$R3T$lCbte>B1=t(o)^wV#tGAHBiGAktx)D)Ujm>zo1S|s3p}? zL9g~6`WC2i@f38BQUiX<1#N5}S;kJ)#;ys2OmC_($kH=^6ug#qPW4q1{?%+gD7us8UZKvZ6lX19ywqK8+BsqE!rM?-clF$ohSL|)ohf+lH zY|Bu_HE}a&Mw*(BKU-zAGLaviuwamvQibU&IzI~wNh3h*H0>=0^~Lw$*~8V?_SkX- zD&c7%ig;2hxA;Z(=IxR=y5TyUrxM)^m(4>J_t&dh2FC6d zNb(qbHwM{Pxa=*$sVE8MJ`Gn;4`2|%n{mwHdkM#R^cbgb+A+JEuQ`soh#DW+O^ViM zL=zIS6%K(~+?f>n-H{SznevceQ_B z-Sy4kavg)QnV<-KW$^I^%Bo?$dVroPE2=K(JgZx+tpAzC+bjoGB+8IG z4}yUzCs-cYFl*wwI7$g54N*WoN)vz%+u_b4`)@HeA9e{g?vXxQSbkEafvdcAFQs^e z3hE-Zw*fnZ)?v6rp9)=Yi1{|5nLE26<2z<-51;0dpLf(hnq8l3{J=o z)vGMVP&c9d%cq(N8q7{4t^qD}WaD-v&iW~`bOa1k@p^WI!vF{Pv@^8>rQK1Tup29H zIxq#f1WBlw+{JZrpvrmmplxUZ{CfMTAZ&RA=x_fN2z0@C1qcLKX~*98WL3sqWh53K zf-Gm*NlR5i0BEU7iG1}?`UHgc%e&;|u&Ox@2Y9eEG-5k_(Ov8i6ZZ?Siw8nKfq^O~ zTuPSOz;ECDDF8&jI?&R~jx8ynMc4xT7ZIGu zA|DYXbCqY&OTI`i0OFPgF>g=jkw7(wG2s9>JK7I+vmRzY+(5R==3DxUtVsfFbp$w{ zh%)7dTPc-Upbx9&MF1Nozn7b=#m%G@?#09T6`#?a>Q&+3d=PA^Mz+fyIcUI3t%6cv zOdf9LV@eA)l`#w@YjML~2b(v)2#1ztY@a1d&!hy-fOgrx*WyxdhbOc`7=Wxn&@O8< z+7+FqJ1wI3L+KfVaL6GrP^I93`V;{SRN3dqMb_d@Gtr*HXYh1^?v<=Y(7Ef&+TWcm z8?8cp%&m#_5vax0nxOTrho(&G<|xQb(7W{=0o^N3YH{m;<%&`2dUwvgw;dbzFTa0t z1E9e_8$bQguN^+OXzuSw6kE-y+Wiba@Nop?Mqs# z$ki+Q>Rus*6}dU-JQ`IRU8}0;`N!^++TrcOPUT&XU%otkOO5WUn3)T}t^+7w53Ftz z^vV6>iPCY6*~kjeN)se&0NjYEUBProNc}(17ke?99DUQ>@kl$+ry=9iS71@@`glvs zjJQs)g|>r+4Yxp!FNTfIF`QcAuMu5^$b?s8*k#SI!1&#pKc~Lb4%|h+~Zsd@`Hk*Q{&1(Uu++eb9^>t znUxSz@pnWv#4f(|iEzd2wN}IlXH+vc=Q?l|CWKmP!7)1zs{5l4c~9UB43xKp8CDEW z##w0z8tY1SOg*x;1|zy`80*(4;B+$X^$GW`1LIS4V=rhd*-Mr$Eo zKd5zMN-$UaHki<&)Bw>y^4R+*L)fsK$|)4`y^eW8rTN%`8rem|LccOhEa>j&VuU9K zptU)w{LTRsZH?y&EjuKR7FW(0!Cw@HXM=Pj-ENdO6h^XZM=(gbE9+2JXf2fPJ!9tT zG~0O8U1bro_eBGe%MAyo81`w$Ryi+ui&s$*>YJLv3!>|xjCF2Jn-N`)M2YpVDk5VS z;C z*|Ae^-QI!`T{}b(5!)mI$cKtX>QRAqzD8X6MT7cBGlL83U_{rG8#)L9aAr8)pi>dM z;zMc>gR;02AcoV$dyiz3b$*41&>tySvEVIf=lf6}EV>TrgE;~xioUEnYp%2ex;vB( zgZ3j@Y>~B!Iz?!=bO=>>1VBseg92j~3Q1+&A7L##8*8Au#Sb~Fb^rY6 zoBvlQN|YwCP(w+~D#WV05>Z)n{NGO$Fro{bD20w&e#jq96xkH_OJ636{=c0lJ;k2Y z;6yq9_7*A*byll0rYUYyA`Tme@!quA@&tzl>9pEESe9w~1OOId&R@x=3|^<+hh zwe5B&k{-j3iPb(at4A#l(riJmCWaT&aiwh3hO+(0KXg2CY|~u^-VF4F^=| zT={}e(;3tBrG($PYmTw=&S7FWP_$}t?z3Pn`Vc+U6o5F4nhJpI!%;MIzkVmv;sq03 zeuz3?D%a#AU^HL?+j)}(0zH~GXA~saI>!co%4nbt>$o{w4^cM65fE^Lael<^wA`pr z&Ce{+I=Z#s7V(-OxL3e!$F<^|A3jilvlDCjF7Bh|m`eDvR5Z*J($Z<2%8pb}zX>ku z13UyEr|Xn`wQcUaW70V~?J;Ad4pnfz9++((oovuZ?T{X!9{d2ZQyFMT%t@nS)!9pz zWOCz1r|5hxedUNi%84k@Ku9$Lz9Oh_pyfXMvdS4JeL@E%`;D}+1u>QE_byWzciF^T zAUujp%8;@?8o`|O^q2zNEl$_WQZNPbSSbaIq>qThunz>r#*Op7Nr@+T!%8s$I2gzA z%@oM4NGJueKA0E6O$1;nG(p}G&#gFl>ehrnMGH-a>(pJy*sc(9&Wrevg2!wq2nD@7 zKF{cZG+C3Tx*!=$!HuWoEWAk45Mtzl)&o`O`qDNO!TL35xyL%xLv}4KwCrkcROLwz zmF&W>xY?;d0b}^j8q8K5i75U(n7?M^_6;Z4dQZR zmS70jL()547@0kwY;l zj34mPQYjq(r|zzbrLB1(x@9kilNHO~ue2clVmdJX-PSqx&!}95zt}p<{c!7S`p2#F zW%h0Zv%rgvx|ngIZwS6q*kMJ#BZ}$Sy8Er@Y=3Un~?cj12Ug0`|K+Jz(X>X zyM*>bXXo;ni$sCyWR6xZ<)Dg|iit3ept&fJ%Jm1S+$b4JzM|RL!sCPh zC(cU8X!aJxFy^p~0>%f){3=;RZ&taX>&flz`wFw(H73$PkpXFs4>7L4QKmsF4n% zA1)m#Wk3*jCcSRhkqCFcuLPmOhd@{!sg>RZ$s#F780|`KomBT`!v{h{m<8-qAPf~B z>s!H$;M2C8fhtt6?YWJe7@z{g?faStSFt1(r8i(8%WYFZE-I!FG^~QDOSIGjd`J}4 zmo@g5b@PSvff13O21$g{2H_HSCLJsvfNsQ|sOE$6mOTVb-e5*>wPqgGMwu@X=;o8B zDkb#NP?hC^E#2qVt+!xCus$Qk%MDKnzFweEY`_IcT8^F0eCuLSzzF6Zu>$oI|B*Yh>N*C z7sq=*e?n{Sb14F?L?R`gb}8R5LHTYQ0~6ph6X?|=HtprV z31rDCegL{DWy0i0&w|&c!9W&nBzD7RE09HC02Td@65xK4oARI9%l~K7L3o)LTxr?g zw_GUy2`jD9?klgsmDY>c19}`^1#wIO767?~uXLZ_zi7NHTdFd6-^u|8!)SE2* zp+Lt@e%s1N(Z4@7%f6qalEk-!uIlCwPEv+2qu&F(*8j z{JIpS!-yuv`ABRBxdcBcA~OY(Ga5p{Zf6kfgE180(~`Pr&*!IgGjkXeuC{Ys$Bd{8e6&u~U)S zJ6xvY5y~SO*DyXVGl{6}1e~tor`34)l{`OzXlE|pyoOHf18Sm78ae^b;T<&e+t zENB%ukA{CJn#aRX2IB;ncH=zmOt54Ae0GXTvq*~j4tH>`tV=VMd_5b4<;k)HAcLg7 zfysk~E_5t_*}U3W1)-yS1b|Ue@@SFRf-7ia_nhTdrqMSbP^EiC)Wf#9JJ&-b8gdhS zB!$SrRU5}>J@`l_0O9Yp3xGeQ;bN{rcFRZTEeDXp**RzWZo)|EngA_|NPtpOb=B7| zOS^kFGT|>o`?Jl6f#K{&1cPzmcv3qS>V;N8^0)((Vg)2SX)zMFhqM?gSrDgu$)|~< zoIu><7uo^N_N7j2`A5YNxN4Idn1q$Q(#gRUxTH!~zEa>nmV3 z?>)bTZ9;|~`HQ~3$#S43ZcPV4;oR{@0+v*_W?J)EW2}H64pcQX@rlWH@YN1 zNvc`Nv%Tp;GuU{$Y3Mh6!Nx1?6euf`&a}OTj=I?njNY7ZtzZn9*8-zAQ$n#IXCZO^ zq+}_YQr7yxwVj}i{e*3c?41T_88FwwBF#^>>KTpv=yLe}Wq%yrP(u;4u`8aW?3#ms zxgMtkjz<%)gK>d|oV`7MqXl^wRKu^fxgrTPq zfO7Jt2$JD;qQmvmG{FGbqMw^|M%FbugHC=Nmk~k^SC?188QI0|LFF zm^~PBFjMC!1Po@PDS+zSR6AOPnBpWripk;XR}Z0|lN#B;Wd?)wQay}jtP=X{NDw*Ga-YB!MU;9|DLw4fX7Fw{ z^1*sjj6o!x?a1h$I?A10n=Ro2_wnl1(hy&Go*l zie8QsC`oSH7DoDjRsw@?>v%I0V=sPxq{b-l^k{OB#RRK}50xR~D_h_Q67~QLxBnuU zbBrBhH4N2)(3ymiMi`Y1h|Q>23KT`mU;~N*p@B_Ph6}9|8<3Zd2dJSad)0cKAqfU{ zC&WqxdMRPC0nihSb>_2Qvhld2HV`dTf-$(oR5N?FX2yVf5hJKTAB1YLxFTCKl3Rvg z<-h_rgi|E#@M~n1!4r)RAcvnnPjw1K$-w#M3UswUcwQVQc zbx-?2X(V{PA$>b3Bs~CWSujnOdAmU~6UJ}*8fEV7hX88PbFVM8vVox=q)8TlvC<)* zHB<3;IYC`zu5a8vK0sqj8%b@5ENWn(SoP!^3Oyh&a^clLbJGQh+wo^66P#=?N!PU0 zDUfE3Q)l%|YPYL}o$h*Zj7rn%r7FzKYEjM@$0bmsYHY0(!Srh6Q{O}qleQs>FLk9JO&oP#Y~rlxl0@j{ne2U& z6d%y{vE!*D=g0M{iW}>TiMo4ZB_$#L5+;gau`^a#dk7zCPVM!PiQtVp84us?nf&>q z(3Qk!@ciuQq7Sx9z6nhPhB%TRUoP6}g`xJ9g>(`vc&wFv{t?YVX;pR~Nqf#r9;lL6 z(~b%Ey&ch7G#dlVMF}kKyt4LzNHL3O&iAB~dlbj%S=X8|sf*`iSlUtMbM^cPdj1pV zje#c*)r7209yOdoqoTc9WnYS1e6*LycDFKyFG=sn%q>lJ3YFFu9lc@XY`jI)mV7Nk z4@cSoG&vg&Q4*0pN#re=ZYO8s?a0vgkjX1o5%P;B+OrFhv+>vvF}=@_g4>w1^^?E@ zM*^WnZhYFv!6@5N#uQ<>fzEColJMpIJFLO93nN{>Uy11Q)}La z)DU-AGC=2iK=ufQhMx*cx_qt*b7!x=LPZ+tQmz`m_Jbg+igfndx$3(*4MPGZGSFZP zmecMFPm*Cy$2Bt{4fc712afn`hhbF)GzTIkeuSZ4vSg+L{=#14kewBF%zV4^O?+vB z^OG7`ZnQ)1<3T-+tDkK+DNiqFD@~TdRa3{7iZRd!<|ne>q~F!dm@tu_P4F`Z^*BL+ zWh`<^6o)ns9C_wk6!FI1!^01Ru9A#zV=x9MO)sylmL=$ELbQ2@+f>%diFC&fC@BXb zD^wT-44QcXF5m&pK(QCaen%&rgFYL6jg_Dt$5x4V*f>RnkqfUT1|NqoJ|x1nM>L5l z7CcIBWGkr*JMMVm(b$63P;S?%ny@}EH3u<`6+Nsf3e;1nqs$Q>QH5u2Tri!ljW2oF z<01-Nc>I1eo+W&{DnhN^m$M?B(mTT64rTz+&qSlTd&Dn*hIhp2-FM`#zq%wmW}SSB z50;5;rcgkKn02SKLLyqQ_Pin6dcE%q93uIe7wTa!IF?_gDStVRnarPA$siI*;T^%j z2XK5apM?DY96e>+oX%Xn?uW5!fbJ#M+%%6Z6*YkLY%g2yjP;NTy@WZ!`KGB=zGXSQ z&H7=1wjC|kdb8NRXTg>cxD7VGg#9VgV^`m+C-N8)WA)fX z6fC1##SI4MgxZOe)0omvvRn?CTpzg1r=_$eHJ!~TF%+eCJKt{Ww9=IcK1l{bbqg=t z!DbXuix1-#NhXiI+W8=#Z-*?mc&tIgayebmDE)x?>k8A0m2JGL6~gg$CeixvxQvMG zaVe;NFcdi3Xjpx8MMneU**pdal~8mit6szy zVGMBLrG|14j`$$$x?no)&Rlv_3^20sTOqBc(_B54n86fTZ1hwlIQv=qbPU?xDO;0a z5F)>%b}WQG{qgzYNBaTOOEtxP-@}vdt}a8(b`N@Y=j{0uVzZ`fSQAq6sbJqz*LJy5$S_+yk)o7TxM+73LvN7IDdh#Is#%-VrHg+rbs#O@;?JxHhvH0+MUpdB8rkHgRzSYHa4F$v{QI37+7 zOtp^+yA+kV6jx;cW^w!vy|vG#ozKSEWm6BGBXhemom#{a=(oMT%j0gau*{4EZ<+Wm z51Sk|mmD4ey+~Zh+%81)Hat>>%&p2eYOI*R(K-CY4;+q881+lq*^!V&IP6D)ds5)B zIIIE1Wf}uF0}^I4Xkl7O-=dTFJY|=okH(}Q`f!_Hu*Ye%h$i7+%OegvTcY6|HVZT* zZ#m%h#02b*O31;bsCr7tI;0SGIxAdHfiY6H`lq(9&8Da~r4DPQZgNP~5l@TBOVxEq zYkZrktdwTDQ*7P@M9eyT6~1canPwwyzgZDyz4Q3NrmH6(rdeVg9Cltk?3q?VxeCKw zJ97P+rL?5cCwsS^iMPWEFrmtDKmB<%Ivk^KGId55$M4(Yz)8MgXKdk;GEzK+3`79@j;P418FAvNVok2Mh%R&`?$n)`2GXt@hpz>SU(0Gr zZ8gfgdEhz%<}$b6F0(09&htgQPo$zXE~SnHY9g|#`74#L~B+M2TW!m?pB zu+}d75!QyMk6KF48oGW%e-^BwgPjicS3P2i*KA`>isVclu$l7DiMy6_DLQB7d7Pn^ zLuyg>s6(#a?Df3sxywzttNpo{@m%!7+!d?+03XraY&AxWahdRLK+W07q@k$q;7 zV{_4w(V}C^MP!L$mtDoKj>T>P#U7c(r<#ksMvKob7gHokymyuOIF?)rDDlfI31}_} z8Z8N4E}=@4hVCj2cPxzzD2>i6jcqQCFBvUOTrQWLAwfSB;HUy;`nfOWd5; zb#v13=2XDV>CBrSns3gG-u%3LlOs_*x2t;Iv3en(n%AnrTjG!X2Q<6=MO^eIhWrEmw`q4a!M&}zXgtaj^A4+T;6N`*3oPur%6&bI&=IPM7Vr)Pf|V-*l#?A zq3b|e8~NLCF{!m-9pig&zkT`^C~&;IiGMKYJn-o8I>r}rzINQTZ7Wfbq=LL{?0bVr z5b81#F#W8emZe9W{0^WzghA2~0V*0L_=|OkXNO@NlI?-ZA#cN6?tc5WIb7go++i7Drt`-InQ*OK12b!0?y|&rt{mHZ=iFR^HR&L@`*F8+<-)0&YKYx*7Cjt>J zePo^x0pE$3^z@6n&?V_^3reL~zEl41GQ-vhmqu^<*FihwSp_NU@>zry{e5w!%R1Nm zShrG1-nCQZrAmqAA4*ZTo)_=;msq2GsH}@MR0>B;u6Gj-IMR+WQGt#o5yQ~_L*iw# z7-LR}z1~e&K{YRwfw~F#i^9(sS|G{Pnir8OH=_#E)(Mv>8jySznf1A4>eUky2ne8p zS1OvUIM=p|_cR3B`8pM&P(qvNZ(F@42$j?B9X-ImG1_XN9rG^mY^Ruee6fs79lQfC zj3%o$OQd^gBwS9z4~iS7!Ot}-^s3fU!;j$NWVR@JM=NaW-3>K?M3wZR;_GCnXqhMM z5VSYv2%%qp|JK`QOAM_$#cO_rF$_EU0LeZ8d~ztg>U>jcGNiEWeS$m4AA%%xs4{Gr z2f#3<*TO5Fg0)YX3h<*f?MmS`tPs^&{7+M$ws3BM+h_XT;^Z4;RhCi-W>WifiC>2a zDr5)>Sw!c~4Jg2ZAnv;Ai1bdgTp@;PZrU@w&5A2xb^fQ5y^>)HHIx*cUxM2#ESiaa zzWrrb-&dBb%gX%QJei{kL1XxRsx>}PmIBX&EU{%K#J=ti1Fo?|+R(utD^qzLNyLjt zrsY)2d5!(3OLZMT7B>N}RePABMoUBTF*M|=h+@u5Y?n8({m9f3On=D6oJW{!sOsX} z$_Iu5Fjm(`F%yFWJ4yH|ya_ni%@5}HY`B35$Eh(ee?~BvNJw9!%JIk)t~n~=zVjjl zmL&VS7ETiG;o>(0EWt3%+Hs;jUWfp8S9f@yk+HzTV7PzhTj)jz@(%-i(qap2{S}Ie~gXu9v17Ak-yZj z+fmTmpU3D5vI7(9lR_(EB2MqhizXsNamn;9X`#IClB081eFmN>nZiI4*;#sn>b}#c z{#tKmzGw!|)U~;%9YaSa@SeD6h3HZ)91l#JBUrp$`f8Ua)C98az~*)5Yr=Nt_?J+Y zLhezFY2rURU&ZfxJo=h*v`#^9@xYqF<+-o9PrfP;(Ytnr2+q?FX(}3sE^9_;%;(8p zP=uO5teWh%0p+F8?B*7mc=LFrI~Z}mZs7m5EXD86S3|cvC`%#2 z$o^6JFR~Q+|BKGo`$~1MPAdBq{l{D7KjNVNjawxY#kYgNqPO>_6HW|dANZs3_HS`e z>xGu(hojWcJ9H?2wq;!M9IO>^bn(JTpFv)O+3uhiyg4&a^GD-tygOn)b7WY~sm1dK z(j#!O`nSsS*7K--rdpY+kAac;AirU@PO?0OLX}SYt?||#R6uk-&At`w!jr#_cw^p% z8gIk6`3KlCkw7fhCTT@6HFC)2Itik_w!z%^Z#XEIS-?nn(^|$YWFEU#>vGrQ^6VPQMfJCE>Nm&zC^(g|XMy-L@v6ARbj@c!3v5pEJ@R-~iy6N-}tHa?L@ zjtFq*_A#(0I+IYLr54v2gi_uJP6H+W_S%;6ZYXIF$sreLpMaG*m9|+qNd94uYJ(teE=n`21 z!Qlt23L|b$+7{**M3)`Ov~`4*GP|BQorBG<^@tSt*AKibi_N)RR@J&-%Bq0(?@|tE z`&&4?wf)Cbul36F;16k!>YrabeRltC4flKWc2s<6-o25Q z;<*T6W=isrBu+a@A)a7)g!j+N^DA9vp~`bzX(cJ&p<6xps8z3Cn4ecopJK_8%6`?< zN~qA%chq}O9cs(SQGE@yWdz(Gf^L%0j@HyecC;y-Ew`a*(Y3*qZD$=kU?f zEvu<7&Wq~#zKnjo)K4to*^{mC*G(4kx@vJh;WrAUKaPTSzS_Q$VaEDj0BY$3VoHfWsVA8E}j2QK`>I?P$ zsa%74+qx&&9UJ2NsEcrQ;OC7A;an)J_p=wiTMQQh3W(rIM#@`=(ZvrrF>M+~pTI{k z0EX%T8)4$uqJXHExkh%zKGX~glool2FwX84vu8x}8_XsoX>==?O5ertO!{+wHvq

    Cwxb19(cmua7$MIyl4$=?@s=#k2y zC|;&r{jcj}^CkhrPztGvWBd8nvOjP`?#*?ZEG&%-E&KhcwNKWEl%#d!5lol<8}VrJ zjp*&U-qG=d$c@=W};?N9Oa)Pm@OFo}221R@5}8Je6G zT}-q>*69o+`*Fymr6`FKr6|7PQk)V=h02%e(_(gnHo7DdQ8D&OhB9)K$vju5AB91V zS?D^sf7mtI%J%z6;=zUKb^FTLN8;SzcP>Kge!2RfQf z76g=-KfxJBr_1ev%vSjdRVyg)U3tswRpU(Elc`BB##0D%Q<^ zW0Vv%U(P@F`sgrlw}`Y@tpJ_*Jry z{+soS16jWsH4buRW)m@cOR{S&jTcIOxZsxVMFFLSeei>-HGR;y0*y7MfKRlV_j{-x z`S)R_I#+N|p*BckH}@r;S1Vt`_tzMqvimx)GwX3b)fX3D?{6>Jw@oj1+-VrQS-TH+ zaHfXJ(o@BkroZ+eE|CM+Rrm$dqv%$2xe(_^XmbWz2foMW(ni%Dz# zx4J^p$Lsyb;k62XZ1WN8hwcBeq3SnBY}ns(s~$q&)L-1H)c?$_s`z_u)#tH)!mV;V zj`{~jY4V-sJt>`4kO6i>ei$xQ;@3bs_*<)_FrnJt1%p7R1*lQ{`bMdNfPWk15%j;A* zC5wl8r2fa!mg?I3f{~w}{2o9%B|U8&0=?axfoxBrw7b}oaJuP+OBic2wTNl5wVKk@ zc#PtLG0a^R#r$Q4Jsi8;8tG!Db9NdZsmOrx>HS;VD?fyp$89XWzfEw2Ef~UKYoIykRWc{}PKd5q$p$etm zVIn)?b`S#K)W411k{YgZwqdf_Emoo@h?i-~GK&g)mOHP41+!zN-YtOoG*7D-(_hkE2 zA-BpLUbr_E%<029&M*T^ejkO%=2&pB9Y`iJT1e=uwokpngZnxSUXu$ez5_4QSbgw-p zyz&EbGX;-W)vESq05DY>X_x_>6Ir$#zEOjWK0M8jtmQDd*LoqTiOq?=u`Icz3lB5t z3k{bMa)!U4W4Ab}AFAog7pYwW592y8;)HyJ_7YY^7v^hccB14MY&%g5hAhW0Rgd9A z*VA(4l)Oz(`}UjOap6Z$+PO{ep&R^|A~Y7%;n`zW%rpPI=}yq`M_-YeZ~tKM*j&2Bha$p7?2yZUV-`C8e{$GfK3o^0 zR+leg?jf&PZj~4?|7)B7-%i)?K3VXP=MPu~bU^>dtk}Qv8vZ>i_V=&hf1MTko7eEa zkrn%Aj@Q4kVt+Yaf6t2j;duR(75mqYSN=a9!T%KdiOm0d$Lsk1zbBO0{-fiS`#(8e zCH{+!*Z+HjGL*^;qw6nmWx+F6sVMCc^cpt)=2Zv1hPRT6<7=STaQ4Q{Je)vQ!Zg=-FJz8gAqPrJAB z>w}WHvD!MK=$>-c9?7chr6#Xi=O1V9NYH#@W4UXtUyk>tw)Er?Ro3a2PX$2LlgXZigco zqzI&tbay}LVXTL1pNh3}6wiphaQ(-L@May9sEJEd^v)9!iy62B@p*6>hPfeY#84l{ z%)M;wBTqEdC2o)&Dp?A8r^IXNbo}8Z^G%kh+?Fd`E=Y2^N!XGKP8GG(#m3_StVI`-#4y!tN;C=**`w3pWPPtM;z>5L9@S3?Q_2c&9?u6gZ(pTrb*@eGaT&xe}#i>{6`!t zlCBR3{egpxlBCnqnh9q%>`K`J%8-*T^_e&)4u5&bQZP=R!a(V9u2dEM}-3Ui*x@(P271=EU~Ocb{lpk0L& zuI!Wlc&&2atj}W@nt(Y0A%+eLad8cidgWmZ2-eJwTu=C3`?E^09+JdocIEf-Y<7f# zW_#43-)uEhKK5s$2~;Jh@JFKwZzp_El~HNEuVTrq^1Mlt9z9AG_h%;&|G}AUssTv) z7bxLdDS!|-t1+meQ}A1X^o4$gM@s&Xq3E86h>F!0UmpA_ke015Q&&ZcK?Tyh=B?YG z9P#~h``LdAD_m z?eXR1;y6KJ58PXF*0ho4_O>}8 zaxeIiUK@VJTv zjN7)-#pO*``A%7d-8Ywo_Z;Io-Q}hqr5qiCO`s!qrU)4I(hzJXJyLJpN+vXeLfFQnQhOfFkFm~cm(HEay65V?0*<~~ zHm>7!>QT$A?UQ!b)lUR$<^V^ z-=gD+7dane9zP+`V$>}ed@J!F%0+TTr(68~Y+@A8txao7ecB??k=q`+$n16?|0wTL zDE5j~b`tNmzc~}P#QM4t^G~OoRz`>P>XmuSXU?W?5gy@dXzVrr?47kT z_C$|Mss7WaOL5`hrNoBTcjjLLUSy5skQ-VSUkV6jPP_v68=2^{pAY$UY$##xxGS2N zd}YJxI4-HN>wq)pthqWNdVZ-(8~Sf0wM>Zd`}gdzm`llOeU4ufZ5oivpG|F9eJf@8 zeZc({?b<%4mzoQP_xW#L@cg>^j=1){F3iFwhyTvB;oe=3LT=6%NxpoiTU|pGviMrg z-!-MJVD!NG{?cXdR1ZRSwv ziwzO%4jvZ{(x}nkYwon+gPm(w*)7hSb?gy)O>g;ILHl!`k)LZ*2VpCup`3;K-aC3S zUse`WB$re~^zOy*pRsJz2jF7uXwErwaNV*{tvk3%0sUxKHk0@p6yV2c*nB#S$iNmc z{Tq7yKiGmrl)w!m{+}B{9-ywwE&ACldSUis;5hhK8umMf4}pgjF!^t52UdxID^$LH z9KJjz{|W)H#)H>6d|#RTH;91^QQ%e+P$W9!W=V)tWB8ZFbF+&f%KNX}E55Lo%pJkT z7LZQ5a9{xxFqg@t%!VJMU<(=8V`R8I2|^2Dw8`AkG{h<%=}rZYGPzE&;PMo%8w`J6 zF}NZfwRH)*$_x+h^W#HDXevb9mxs%-v3Y9*ke(ixiAO+Q-!qL+84p)I0b#&^H8IfY zWNs-YVwC~gOUG`*1Hu4Ok<9H%1y7K<6#-spJmAj=2(yolzyyg!Mq7!6vUUJkB(M+w zo6{qT0W_S2I+yV-YOgf)dzXDp;n2xk1OGpiTlJLY{%m1u*qg z)G7;XDvdMii)&kogSQ83%EPuX1L;iv0=%UOnR_=C0rTWOPUV9WfE^@MG!O$PbBUC~ z^k~?vM0kh?oIt}CvC*y^#3nNLG$pWvlgMcdnbS$SD0)T?56hv3d$W`G;Q<0JmB4|Y z20%XmDZNJKM$pi!c)*5@Eh5Keap3Z_hypTvD-K-Kf$OrlHYtV3iYHlkq$s@iLMx!^ zDX5}e{#+6QPT)UD=Dv>vBk;&T8rK;dm_7$gCHfr3`1!O~f9J`O61%2!Y0 zDj)z`@#s}5Opk*#^bc93rX`WNmD%VE1b97xmnxnSiuDb5$dLBUkQ2e?MPEt&j%l<* zOW=We65JaAgURrEGB=zBze)gi(^E^XXBxgwyg^O7PDl26a`vT`RCVGp7Mz-)A213HlC za5DSZCE;BeQKhHE2hO!Qxa3knVpEE=Y2e0zBpyewj2zU{5Ku~{tDFj%Q~(+7lpZ^< zijc1zTOit8u)2T_qNDeix)f7E+fzXecHm2`lg1yS^QoZuhr*vFg_aUUc_gsLmqI6j zOV^9q>`v|y1%jAGuZpAJMqU_lD~(+CM%lTL)<#RaOrqan&m^0=RQ2S9j-Cl0D0%2s zx(A(>cq$}9r|iCb`PEo3-PG%Pd6`V<#XT&T3$<8Sx%{4Sc`>=HnznIQK|BH8NVMrCRm0`_Jae5A_&HJO+lxAPB@#ygQ8MsY*uk zuT<-;)Ov{2J(s{bF<_ZEz)2F=0&vUV0Ou7@hJ)VIQe(qihj>`HEzau(6Rm?sAYpJW zCkBHK3KB6bBL%IB#l@NRzCBI{GOM?(U@y^NmzZaLxZw-{UQU2aGnhchGnWs7rF77P zyV3rVCX5VLv%qpJth)OvSXB=43)qS~-|9b%8y@$*jY(YR@n{D!>MHJ%;A*>E3P>Yh!swVx z4)hzrzUJ;w^*V9kSqDL?Q^U)7n{MZhpiZ6a&RwmYxT>tag#4x~+A)ZH{!?26fwKcRRLr9~tXDw%SdW>T%KSaXr%G7S!XB-E*q7 z$7`(T>}n51s@Ge$*XKy@rJ!EF?B0OZ-k`DG;MHDgWv`Z0pQmo$isXMVUjOE47y|&z z8u0Jv0sl8W4R-%X{CYR_&s5xiKZ##|=>cC#e-Xd_P;q~^GW;uU!Jk%!f3D*G?qv9@ zXW}nzf%CuM799IW6_@uvskk!#`zkI8A%I!$D4w$QxMn9oTQ^<@jKJVKC5T9S({=Dn zoA5q}TcE6bxHkUOhqBUj@JwYrqz6FU0_BgD;a5#RRyF3FI=xQ(dVjMGrJ_n_@S*vmrgev%1wAGG05{D$Bym9(``by^^J=3Z0Q9 z-I`zcxXtO6$A-bXNYU)8s>>3P9w0aSf&|r)zcJm*W9OxA`Ky>s)OSXGe+9-TNg2sZ)K=j>Va;#QeIBSz=|hAXW9l&&v5nzw`i- zsOkeE!|;q&XYJ6V2g7#0Rg~c)fm;_wT+`1iJcsmvg;B4DPYW+7y;~O{@XWd%@UCj{ zRnX$vCv95?_fM*f^3^*&Y#qsijpL@WKS>i+YWEu-ByI~|dYb`dr>3%f|6@JO6jE64 z`_uB=KYJ$9e;!aSFKr8Wc6%K;4AsM|d}{guxzk6~Z>`>OIgN^^BljxMCgd2N1t0e#+OOSR=N5!iuvgVaY9Ee=ZA|n- z?&iQcM1o1-TPky>=N~4>=;TQ*Q}Xy^F`Z(gs-FFCvQ^hy)o)36gl@P`fo4f*aFzFb zG%nsqHOHgtaGeXel47JP)(6^pC4^{XaS6mVc4}Bt@WlDN0qV$3#f1~GSLyq-%4Z|@ zGYy0wEBCNtd!$yK3r|4CgtEPKoc#z4=Qx=!sx=);NW8VVhETA@D#}>vQG7yX7+bZg z8{E6(B02<(;z3r?hk2}Gt)*mCc-rIK%w&NIDwpO^o{_5`LYNlhB6?SWsiwgQOXVqM zD|_~9@wr~e9GjGNp~d_4b#D61;o>)xHtOo05MCxn?7XR-6jbUWGN`y;dR#wAx7<5< z@$1{J@P3QX!dn>|J6)$n7h~02!bCF&aw_vyYf+xeeeqNDNG*@|;N?=;nAaKm_cXT0 zxzc4fPx?jajpQZzkUGU@`l3{AlljgN!XyG%QH>+d?|>JU!G3>eEaU*kpfBXLSdULGNQDktYXP& zCq&ALD4n@>UKf_E2!nW9uPZqrs8U9t)1(*IBw<#aFI36BL1m(^Io6>PF8+W_R(2Z) zZL;%)--;QF58x9ufKI9R>~7uxT4KOjU4HdMHkW2=a*~%>=O*e!W3Bn*B>z^##skrn zs*VB&1~MPkWE_4z#YF4dZ{H`Dk9Sp>A4j_so{(ggM($|K<2_Y);wqcmqxeNSmK-lD zQpGrVt|~dHa%Y&tck+If{^U`gw5Ls53n%0YPS?Kg2u**(?v^rCH@qAjCbmG>PndR2 z3Sxyx%~Cse&p0PtoPlp#CK~Hxw7l3)IU(`wMg-;S>>+<4?V3t}Le147!ygYZTZhow zspAR$ViOXrz^y%r0=$0AP6-yXSCcl54l0xtoAEfO#a8Bd6n8LEzjU2_O^x41Asa*n-czJpRh>c($8pJdf&P%M4ATW;aJ zk;6PfIEi8?Pi%*nQV)ld!;M7SeFyA01%eSmTv{c5o@S35ZAw}5-6Z`z_b%@`&Hk8w zP+aklXS(n+i6bteI~$%d+kImzr@b!3one|OI6a>gI;vcI=^j&EBWdYz;ZUD4)7L#A z_QfWA)8OS9Uf2ilI}Gg#JBrlI?K;GlK&8a(J+;K{vc;oB z<>JBDK(&3%euJ3O+@cOhr*oll5+llHn zV!kZix-#)GcAMR}UWiV%-JQ2b`I(>EB)*?3lMzl@(=9RAUw)MJbH3E_&Ih{(%fl@{ zzcG^T%(z>wjCO7kZrr;#)&A3l_2?1(zZ`MlR>D5F7C*Z4=PdBXUSP>P1Q9X}^e}cUX(Q z2&d^FOONO$@50sXqhGH1{xQmsB7?-jg~g&nOM@(<(TAyAxqhfrYV_{u%Q;Mbb27II zDR%4`S`NnzJ$kSC#b7dGG8MPln*`aDxrIqEER-H5BPo3`dnkyNMeHR!aPrrTT`P7u zm+<@a6HCFwn#3(F2A5Fc8XJSoHpaz57Zwc;r(naT;VPVX))MwI6}`+tUt}h-+`->x zBlaJ&5huK}G~uIN#H$QdqD{EEPS9a8cPtsyDMi&YQKdAD0U55w%=tSD${s4>*ttW-n+d%7hMvEm~$sr@_2^bm)fHM&qc%Z@$ zT~CA~Sa2O8fWRTbIdBDbcp(M8jmhtW2k>kJM7)MWLlqt!Iq;IwptB=bN!qWuk!=AF(S^pw+e*Q%*ekP9Sxri+ zE}lVLrXX*B(q=0BI2BVuhD!tBDmAR0iM;QLqO&7a8E~if>1KX6>S;*D?^r!NunM3i z9Kgw)Kt2V|ML=j%5OQShD=bKjg6(CZ(kbAb>p?k;KL%2|S}6xiTJ(c4;g=X!5zCi( z1G40=(!u7e6VJ2Gj?iLo;C2&m6#!*v@aqJy7!Se$=ue~f`hn8B@)bB?IVAWtBDS8w zm4`1hCIERHu6jsIBY@N5pfm{}FiPXrM$vR8Y6lHg&w(W}f-J?bPBd6Hi$4>O`)%CK zTLxuV=)+*JT>#yoyr`{)-o5|Y@l)K+reP%%@Hz>BU||a1Wgll}_d8U4z<@b;gbcni zn+D7`0m?YgKnV`VmDWRf@9%H~3GAE2&}rBU05XP*^dp>hBy*o8CUyAc22l|jL>wO4 zKw!Dc@vv}8x$UmPrzPdGUFCHXYDuO&faR?@6`u9z*QFZGznl%!~6j7A~oC5 z4+Up1qS!E|JzSLo&tvcti9o6{FNT55;lP>Ez#|fHHV}2{G`BJZQ^Y~>1MzSwa&lJ? z1%q|L!)VlPdCKs@^1?IJL}Qg;lZv`K9d!@)SHuI@KD&xeZH!?>lQ#iN~Ll#->A zR&nL5AGntQxKh!kc;F@e_D(-Y5=|>66n7{@6cWIKHCE7B`<6fs0#DG~hKH9iVE!Cz zqkAhms$|MQX0~GE+32u*9C#fE-T;!%iFK@<4g;jXA{>Y?D|)rk-h{?N zQjq}*c?O3*Ohm=ez%POAo*C^D+0{n|LiY5vwxnvssU~RF~UW(5gHA`1PLZN8L-$ zdc6IvoY(DjJ<@yMxA$9SZ-A7F-I{7h=E1)3_@bB~mAIL{w93$OiT*l`en=lgV)`>w zRWgVA^S!R*toAbm2MV$W-rEfn&nTBx4lv@|t8`VWr3UNGE?4RfR#*=2Oa+P1oC2%LF#R-xaH_0`OA+K zj|#M=KPqm0q?*vL_Ty2E)MJgc8;Z^wcGw_Ur3R0+E-PxAtM8X(>EC(0CqY?kqo%8t zVR6S}qXfnM8-e-aCj}i(%zr3=8+EFgL`2CG_?D;H22T&aRIod$e4dCa=714G2eT%h zX2FM@w+?S~#kB%YiRMR%Kc1d@sf0^2KBS4eNe6G&gF^3y0}Mv|FDrCzH-izj!*Dzw zIK1kbnzv|mQAdMg?x?ufC^L!tEH;v~^|=G-xvhsD_qaxWRZO8dZVHcEBJ#lK{KqMy zA*CZN9qJyvN)20I_#3={Cu5Ha?QBj^Y~85Rv~lc`#u&qTtjAm-cB5hcow3kIWB2YU z5AeQ>KKe2%^yToqvC$tYFVd>&UjBG_ZR@K_iC2>^{iiO!`f%sf%*$7wf4t&se4XMv zGI!5s{^)Bx-`7i@yqE912A;kCS>*+6VtejjBQ40NV0Ok;Hkf10^NQU)&&J&}7StOT z2_6^A8JB1qm)b;q|8iV!ejIOMAfq>dwV9B&*sGW`F;+XFdRABM=S0PZHyZbKwjXQ2@>AJj6HF1R+GL1-mx2B3c)_4{nkkdQ%>1FduX6tnop^BRJ#krstvPD0S zdHYN)aUFhXKJoT;*5w~^OM+-v5GnJ#{H^&LLBW?Bjspl~MZ2@e@m^YxkV}TN`N)r_ zp$LiMjFb&9Kb_q01y6zjMwUWwG29+WEFh}cM$oM`kCe(B(?n6*6EL1^d=l5yu6DFZ zN7}Kp9r_`UVG)yWfmp;wI+J$E0h_vg<4$KIz=o7Oj1wX-0bBmi15aTvGj*;^cNELb zK#WXx*Z2MKT%PO9D1j>vDF6`ygvjAz=ieK-A4gcQXgL8p-wQCg+Rq$dAvg3LNY7B( z)J`nOuNf{C3z981c@K~JOr%O_C-E-UHibas3 z%KFihfPVRt`ol%B)?PYrA1PLfDGOc?%<9%0GF7 z4P)sg+E8a4d0hfxqWW3F&pw za5qkM(8C22ECjfk4oy>Gj1m<2i;)o{I^?blx8c5Q;p*)$aW3vIqX$_xVw6qA$l&8b z8$n(-I+82E2QXB9;vrg(el^~C#?)}%$!0;TJ2FB6iC-19PJNZW<)>gNay5%$>l&sN&oVx; z6Y4R~bhTcP0{u|2G$V71oCKwZ^?o9q`y-?Fe;&i^-mGOB%ZJVryHT9~L0mBC^Pyac z@pqaba8fC*&WNjMN=|biW7_aQ<^!zh3Q@yqjveV2k93CdEXYk=OfA|jZL^!TUJy%OE&GK@ao_HCd|w~b&i{~0SoZEJ~A)2GFTpTtWqIhw`V(@PFtjUnwE zwQ|##v^sk@+WLpMdHD{mau`|h{mA=1M)6a%naL^JTgtfWXAjFB6*lo~+x1Z0;8f|A zgi2S13bTP=?#kfXP?l5jd8doe?wq#}A>f6>y<-DA3!%2fHHp!u%?r1~ho%&^rfnQu zi`}r^wn#Y1-4Vz4#Hi|N6$P^3wVe98w=?9Ve(1rmsa@JSO#;{DY-cU3bo2Q_wa%*M zLfu$x?`*OK`&4ks+zuGzp`mX#1D<`nZhREr_fB>9cMm~>KALxC?o|h?e3d`gnopj6 zI;E;M+Ze+3y^FD+oFJ>yfDJXRFncb?2Ni74X{qB>2q8=<$cZO#sS}?V8_C;xq@Pc# zMA~BZl-oFaCLyD9OX5t-?TQJBz{u|0pxH~#UQo_pNi_!~!tAY{ia@G_iP}M0)RD<8 zyTA9lTLH--%G$^@l#${im9&PTw}mE6{jqnvftsrIGnZwFjY6U-Z9SQOS!b z37>ez{CTk|s*1d0zpL;I7AkRD!uz9(qe?~5my|-yXHHdL>QqXGy5gigho=KXT7zTj zdXIvqvjXczhWjEvk#XzJszYv;_q}%p z9@&zw%FFBL@=(HAp5WDJxuicxYU!u|KujM8d?>;`l3EO-7IdAULfYT-|ySuGZ+DX@k zF8usT_leTo%r-=L^cz zzY(f_d~jM@9(mBV(2%>T5N#*jGxc-LYGf>MR@>+?8hgd@>6*pMtmE%zlDt-5zmHse zk*i^bi(dTl;L6uj{k0#W)Nu7HjBi(9j4SXAYOqys_DL$Hl!}WE;u8xID#dd>Mhat` zYKa&F0W^#n0#D|05by~W1&%j>we{FaoOdN7^d=iDV}cbdu!g|RV1X5Mu$B!Pz5}ap z-1^ThhAjF{b-QfS@p9vUo#`PABg|pe1~(d5&P170L+lBmNeY)3Yz&2f%fk6oFu*d- z#ha|qscuvOnYvrdhf5P9uNa;n8m`a~MzK51(--c^MfM#LJXk8MWp~WElpj9MeUHWi zA4gX*U9Q+&Sf=p9*2vM8CE!E4#}I?}greVmkI>`k(N+ynN2X%@Oin8FZfI!;ESviO zcze&NCcAZQ`%VIBw9u;-o3~7zW@2fNOH|Nuj4$CC*|+j4VH1(q&dIC0I_6-I*gt> z4pT>4;s?*bcy0~!qJq)lwW|+nRBX~?zd<+Djhq^ID zlyQAuX4?;sJ8zO0${4)(3EfGeb4znhmBs8+(02h^XaFq;?$B&tF;eXGavZ>G?*xb| zdQ1j0j`M;s>hYr@O#>27nqSk^;1K1!L&Zk}Zqlo~H%m%|x+UyjX=rz71BEdk$@H?5KAARm zHk#9YN7EqdY2WzLQIITA+w_lpS0W?WVZ7gO3%b?d6^BIWRoS}!1 z;8nO(2{T$qJi{cBuFyP_x<09}m9s_z(|VY}-k_27)g}ummCIF-)i`fo*tjassbib08F299DV?m+)F1R;rKyb9RRX+@ONc#$uAv z8FOI?`FeYW&U{{!Tp{HM{^o_{!>~pvdDRWT}6~;V=qp;mna){>w%-SnrwFDBHFyIw20HY3Sa!I z4lN~DVkeq+uB{{oJoDt2^&h_VR-Iy~C8H%c^r)HR-Pk?Pn1&jv2fH{stCWQ(?v|Z+ zOBU`!gimn<##dCdRa9kGAVw=HGW}ww$`yst+47M!By<{=*R_W>*<5)l9Hp{eCB~X% z0dDT_4Mb^M)eR}@XAV`NT#T0xJm&|h#v@sJ?W^((tKUvlt0q(@_f&sStT{Vd^|3sE zA+yGUuf})2Xm!8FxU?|9br3CjH(}Gt$R4o5k7Wi!HSM1#&?Aw4zXb{gT zVHj#(DCLX4xq5GlJg?E$hFxxs-775P@@F~se|m4p$iQkBB@)!C#Srbhd1hh zT0w{t?g1}FB6Q6r>m4JC!s_~ym!#DUt5379he(rKD`aTWvoO4Mj)hSbB5dtn?lESy z1L5tgjW>=JpKbN4e0Zrdv$EO#u`g#%yFrkP(OxRnp&sC0t<`Zmsl!Ls zdW42)+LHU#p%|vDlI>#_)}}p6t?=<)aU7H7lbMGsB<`o1XP=Uy7`K126|c4Kq^B>h zJ&DVI^10`U#O%`*1;*<%%-fbvIrAw{x2G-%Pu-O%<8DtLW<7Z^f%y_ujS28V95A8Y zcd~YNI?6rO<9oWp-MX)pcwpJdG{^yTSVODoxH>u=FEJnQpq%(j(Xr`bhjhA)c8!VV zhB@?sk73qX_iVoiq&0wyD8(SXNY9S*^rULDxoAID0o!uc6s5G; zbCGE9ef9H`kqW*Bu}P*iG`C z=yjNoEA#>em2dS-;NZF8Ae*V>)52>5oU=ov9dhML?3LP>U<#562b{wIEfgq(ga9AC z+dDA1SVRjJgT-RV6zY~b)Z^?2WDE-2i>TmV)TTmV>oCgAA=-eUkPfzY*`Cu?{j;BK z=9PR|`KTax=#S4RbqsJ1mkb+yzV{wO#zT+0qR2QDCl)Bioyi?}@xc_Wafk(?2rlv< z*N6p9VQxWYpv9O0r=^jbH`&lUqkfj1c93D#TXh_RKCBQZe;w40f+V{_PhiGC@(?=u zT-AJt3`a{zU`m14kHs;cS^zl`48%sLM&a2M3QBnlmCbhP7W#eF7}vWo4)}AgQD2Qx zB$@Ek=@PV79bFplsWS51oiGG(ML`JEkKb!S3FDBF7rF6Nwdzn57M3dkJB2|OkHF=y z7+x%j?*5R+mkCR^xA%s|*dXuxzSLcfW+$D)1WG)8qJ+|_60x0m6MF@n|Lz6Z1Z_=z z`GgiN9}gk;p*_f>D&*%yxHGq~V--4YooA<*s^7AleHV9V_3i;3W5BryEp7CZL8uQF zaSQ__%)Fu3N1NDE-L8ZEutML)02HM&5VC9WF@Tja4qG1%CXaekrYev1OhvzaC-IJ@ zbLPWP{S4ikr091GITMeo;HhF5A3T~e)QyCov#?YUdg!@$ARhy4`9aR%00IvH`Tg2K z2m%9LbFmnnjwzRbG3Hxr^uK4u?W?ptqarED16;DqFvbIq2DcZ|SZHV|G7K|T@oT~{ z+cU=%Nhkgmp?r^wxphVI7DF|g;_&p<(fRYbH?KtbVCsjVom4FpYTf7=`kUTjX%loC z-MKTL7T6Y@q!#U;G&o55UwJnGQ(jKuLCGEBf!{jwj!UR&o+VWFMELY_>=)D#ow&ZN zHqGX*I~wrh{+0IbQaod(#m ziSK{17x8pioM-YQKpS1*>XfH~l3uyqIs0L0fJLE=%m?(>2*+f?;hM^-E3w!eB-7w_N{d;Xn&TX;2& zzyjCNLKIupb(GK{23aV{p6pwq^<&`JDU9MN&f{0vvg;tFcqHoxBxC35VKKUX9qL}! zC;Om`n!$lsw*{5@uE+SDePfF#wHj3i3Bb{ia6o$)x^^9P{Q^xr1>|oRZn|wP`LLSl zeJ5HD^ujkS-Ovej)SMJlEg98*3EGH-1{|Urupr9p>NdOMcIt+hH9u}3X-6qoK3XHoGuI4gi^7up>-g`@)BdUgJMe7tidmXi|4-o?O{hecihAyM%B zmpAjPV*LnhjHK+`hWr}M+fVT9NoWghyTF!1MyLSLl4U4A`G{%E9vL`bz?4F1PneC& zC&eDuke*I7jLs;#NhWk%;O#q(W^Jz@T8K_gkjxW;bs)hDfVsq4c< z=C2oZvK53p$0nKQDora4%(u-wW<+$o;dS21D%~iC7M5c&tMvu_m9&kC&Yv{isOK8@ z#0pxDe>QJ&dQ)@#-FUSw+2-RgmEwpI$)tj6`1%Sek&{m)x5>@$I<0_zk*%e=+Xlm8or~v2x>5c-w|c)f+yW%0RX7_(Oi35;h5E zL9tZvna&UdLgD@H`dq_h=#Tzva+OI=XK#u1^#0w?lg+o6K0GE~`F6%3M(FB?4y*8` zH%Z4^Kb-T8{Wg0_?f8e^_Yd~Ie_Q(aK+^lrAn~PAJY2l?9PFj4D`gw%v9631NOo00 zH^b^wXc;O_snVa_URTAa9;~Y{3cjyXW0~~%)Xie)k=RRF?Kx0Fm9=1AwaUo`f_*btAFv%)M}NE^n_u=X=FNJ zHrZ&LW!tl3b+!1S*Yv9jWW0 z(=U7H8OBb8UEoHhdo*#D<@rzD5VQ$VfVNJ;vcQ&IzkE2craV^u9=y$x1D8GZXI~u&85p z?~rX}Caf**$M2s4mrO5vH`OB!m8IE`K;qWBOGbVlhP<9W)q^Jz{SQ*2pWNNsdduK{ zNIi1#=d~+`RN=<~UP1sb|I8|FD;}v{M?!fJ``Uz*Y3(x$CJalCV-L@*7%!tiU8Z`D3L$?tlEF4Fd;R=HDFe}HC$$7NONZVy zazad;#XOJdg8F#psN$U_f&A5pOYp>vdp?6~*q7fgsqSmX4-1@#W-{--^uaA*=!V_R zT@DR-KBgq5uK88bN10kKceFEEJ_RX0SKz)Qlw7>cBx1gjXDF)gRpBSdaYLh6V_z~w zyF;+ZYVyTFw}E>*mAzCIw!e_}~`HcOUT1fydv0gJAq9kWKIs@DZJkSYH zj4KKj3SVJE9+l}DSH{tz`|8?^>nz;8RFlKXo^Y8omE6@*F}`6rjpl24VqD|iqi40^ zW7=WcS99;vjjNaDBY>hLVy4fM&;k6(KJ`r9*V9#3ZSF(>esdYjCFGmezePlL2fn8FA&Zaqv^AGk~(y(oTeknz)MxvTrpXtB#(9qB7;_NMKa&aa-2e_jb9LObRK zPbqg>T5tRO=vcXa`|jI!*1KE}+c%28-B_}`dXT#FWbf0dt3NC=NdUmNM@9W7X3hX^ z>lmrFf&cSuUDE{FF6h77)-e}9PdXR$uiHAR2P#MA)qmU8nT8lVjr{*(TlbQz8pW&A z*0l1v%qdi7DAP3@T3v8mD`9H1BsZn^O2?zEDjY^B z&)?)8jGj+Dc$bph_T!t92*)8*&%Y{mbNO}U)t65m|NOB&|FV@cq?P_W0ZE5ujwexg?GkYU~^hXIKEO=lz3To#qQd)Mhj@7FmV#J z(N|})Oa<*tg4R|lJ4qT>Q=LkzY;wyNGmmo-37I#0MV10x*r=AWy%#x&Ir=LrOL?$O zg^?T*n?;d0WUvdH51LoYd_n1Id32;`8?h+KzQV~Z-DR~rrUA=^FUx=R_DX49$*OI6 zVWM+IPO`!wcCD(R!nx9-imO|+ykK>pva)&+{l2{ZmEu};f2N?gayxWwt+rruil_d$ z3Fz~lu&)H|O-JU{|14&{-V3Vow#Se9OcyJ^fko15|9Q+Db4eWRGyOL?2#?oM7t_DR z%!NU$d_erD4i7An-Wojf_U37W)DKl#aSGo)yT_b66h9NK%y4Tv^5XI8?J$i~Uz$R6 zE=V*7>FeFP8)$sBS|-5!_LuJut~`)v@wbV)<$3>lUbU>BQ|*@>pIc8Q{AaBE z$43%Ea(5<}-DP(+T&M;Nm&<+K1&gF5_ZE^(UH1MntbC=cv}S*`>S3(KbWPtd^XG=Q zADF+iEJ-qdZ3D4#heoPX2kYGruN-W2sRk=;4xGB`w>8Xg*#3T$nc@ET-fPDXzQ1ul z{%d>2eb9Gz;lZ}%-g0T}@BPmYL9Bee@6_SJ_MyV>pQ(#}Pp53Y)%yM7c>WQ8;L!5B zIheG`OvYn`Wnm4$0qcgu0?ZO61wV5C-0S1i%y*Q-JnBxC%2SJ6u5YEKcMU@BVO5Rf znGLd`4AG}&q59q!Hqq`-DTNRrE}>^AUP)(p?R=9%t8nUoWT>(-712(Vqwa+0hLko{ zI&Pg?0NsCZ@U{80)uV&%H1y?o_HnYW>xfrN#QaR{i~QnwG6DB zM!$CI&7|axA|n5ahHt=TLh*@@BBmk(M!In+*&c$smzPmWfdwqZt%8zT0h;E&U4j+2 zsU+_{dSSh9;N`uo#-NA|#WZZDKjq2iS93*UXrU}GgBQ1V34!L>oyd-=Pskf0T_(<_ zy@LBm;w<`ss=@^V{gVUzrwc z1@$Zx6=p?2Wk3x#ZrTs(Sx6?@jm~X`R8WL8CR`K>K+VRQYrys&{;`4avGPC`uYTYd z913llVr8=pQI~tnc+)KPj%$J-z9j^>!XgQoQrD&f+Jt zP%8}6SI|9Q-OVz{N{;m{Ws-=FVh=;h`m z1B8iDU?b6axi)4&o4X&s_`Pe?!~ZqPVc--O7YAqoDyp$Rqa5rctv{kr&e)lROs)c{6Db%)pN#V5nV>%s z^}mhsve{4`&*h_0E<6{0BGqv&Lb&ALkMaQ|jX2f!*LvV6FPn)`__{nFuXZ%bFP|(2 zjWM#Ih>@T!@+sNK#OYItnLSv|VFij9(}+NFJU$u(=_pG-a zN6ogBfAM_%`-Is4l~FGCxT`*dL{@mw#~P}=`CL9DdUF6*KDhZp>=EtO;K}FOTSLbt zqql}RRt8J@l(v@KN7Pi$c#K{?<>B#4o4d*5H37EnF{TZc$GZiJ#W)Nct@0sw(-cu;#_?cb8t1#4Og-=B_U{y#VucH)8w;L<$@} zw0|j`t6}@n40~Cz&=q&_;A=Pcg*x$(OQ(Kqk6rqv^aNkIsfxG;;9mTg3Ho+_cj0R7 zsS`)mU%r`2>CK-DeYgFe1jpl|IJIfd`yU)IpTE$7w^V~$xrH;~p-lVpAAfiMI5|@P zBA_~eXkpD4K__m@1_c6;&La?p5s3fXPu`pp>5@zpy}@?+JwmRoq2}IrhB73HpG}HH zKZa$U<^G7A4^bK09ucdMe+EBPTMy!DEkFc%hs;^&2j~^eU|hHIvi&bhil+8PS}OOz z31B6kH_`5E7WI3hjY#(Q5H{OxX0~U|>Z47JVyp*2qQ7w@(=sS)V4nyQ_Y(ewcXm{37cr6_ckyOfJ@{Y`8*IkOP!d0JuO&4!q%WSU9G(MUJFzn(>Rn07*owI4`QDtf8E-s!0O zr$%@d|o-h5FB$wojJCcVm%mNF6_0#`w!UT3JnozqYr}T==C$ za5K6c ziQ+iz{Jy`wurCg)`X6S>wE-T5x|5w5^6snuq3+4ngVH1drP3@sD&`RFM=}Cu>YVEX z-d0=j*;8kEh)vdkGvy*jCqAeO*~vwi8tXJ{zp=GC{lc_(vhhCbbT$opxp`+e^SA9t z89pe<-%4(}@s_jR$5_7IcD01BGt&NO zrW6ku|aqGt24F(3dSFlMuwh#Og`(pszK zYOCP@O0ZPIo1BYg#y{SKAW}IJnRR(scrNicpD8ePF`vj&w%lXT%A6Io+d~a_0?TBxZj!Q`(HKgEJ+9gOSX)o_}Og zKdH)=40!=s$jo2)c`ky*9Ml$+r96_s7(fbO15?M&Ibq8Mw@vzvQpcLf1&Jn+g88ZT z6(YLW&#fz^epev)U|L5G>M|)Q0vASwH(<4rEOW@wtxv5DtW{e@C|<Ndv4^5?CG$h)N$JF-+Rk_U;M!9;RB-! z>+Rt6P_0Mr@Yn7Vm^wcA@eO>Spd|x{%M>WrIti&whO+ll;EL-37%+7#bh#64fpe>E zCBysDI_Z2|eUBZGk!kE*jG1*_f=c;lr?f8CHr!nazkFI{cGbt#dVF%(`Pz5-pK|R4 zhXFvr&|xsgY5rBhmGeB2jB#L}yP&>{PJBOS?nt+&>_UXe;M`nYe}W*`mQI-G=jhv& zlSz67P1Lpl4oue)sO?4RTSTFtfpcX|uFd>9&O^O5=sa z)Mn}fY3d`nuXPPI<_T>H?!PvvYko~hGNhKRj%dDhXDjQ$=1KWJ6wb}!W%h#7NAVF< zooSg=j+mX0(vo?}-GL-WGqMom%k#tk!X4?qn&e*7?qFb_9~pFJyMSY;OkEBv=8)WG zX6Ug(9AX(GR;j#rb^dZky08@S-I`l5U{p&3P3rPP<(KpwUY*;)S}bQc>D<*EE8zNG zwnGKzcqIa*-_K;yAZaxdG~ZNMG#4V>gmk3|Fz248n^=HEhaZ#400-57ZBJJjH52sox z>S84J>@BCJKI}ZaNT=y|_pHK)wvASo=#aD57^B8&UdOylp}t^KA8B@(y>+6e{FaH;!6-7j;@_T=nG8H^qlpNwc2pcRFHf zxSv62Z8*HyDL|i(;hL52sw&Ui$R+jiwOE^@pm2Ph|JI9-Pk)>GK|E{4ZIx#{`wNeK zaa6|T=Mr?z&4C3?Q+@W!SMk@}&#J{Oi6v*LwH85v@T(6E@86f_is^ z8m=o7?X`nA$2h{2YDdq08G0Wj=*Kt{g1Fv;WWy#PtJ3e#$*@5@h&~=P|=%@)`TUHeFFOg zSCJ5RO%2AojYUY!@cn$e^LU4)$ER1F5g3)-eQly!#SFUu^LL{m(+A$2n9>DM--g$sPze9N7bN9in zkn(=1c`M@TgK^ueItGB6#z&4Og@URWK|ftWoRtj*sm5^`noJz3YTcm zXSWhI*CUuq85$_z36~@92}d{y2BoyhgkBd+OE+|(y6{5iDx%qS7f9delR2V^AZ8>W-3oL!_7yW@VyHjH7$K@%@g51L2`mZ=#1U8;>BFei!4oF)|_q zL+Py;pG~kvC}w%t0FhufYQ}hm)olD)EHOQHJKPwc#C|a|_!)9x(^3EXZX8c@EUS$C z!m^R9VZ7C748v%gDs?>lBmtTcx8EA4TnIPsif713pq06~z8r#{RNyF2;J-)U5lLW7 zP(G${j!z*`T!bL#l!#GI*lJ9aFi)ayHWE2RC24OZoK;Se-Al@gNAH#;!4{G(m?tSK zB&#{eDwQ+;0_ANi5tlL&G!){sIPr^S`q*N0ISE~|o&qL*Z52}O%v0^}r8;J$IzLLi zIhpFRm+Fd2TQf>A6~Qk~C|BUoK9AD;Ce!@)(vGBI3hAIUEc9M_ct(2Uqx9(Vw32vq zn+Hb0JZ<(_eECRvdPYX(qm1myjNFLyl9?3qiy4OkajYTeyo}6>N10WVnHhU2D5;Dh zluC`Ee#uN`D`$FX9jFt`dU6l_h%>vZJgp2cD8ptnD&QX~WDibe53gijEl+!X5C38> zyLtsRk&!bMky8|(GrpHo`zZVMp%eZMDmM?6{WK%D-6{8TM*64*dfpuWX)-tac@~&m z=bWKleU!UBnHR8^yP<*KTFHyKht7{cM}ZMd02(%uQs$b?5SdA(nD2)oLqzc~&HRXa zXhu=w2^@_*g^Hdlp8=iCrI-)4_yWoKLO$t?K1j|PbQl2|Nk$4-6i8^2MJft@KPymB zOfQ`wgLFs~4)mr$uvi%P2;>f_@PcOE*@41?`9k04dAXD{Q%&^AshkfPnQIxvf%nj* zBI9wuF#;@aJ;fT8s<)r5FIv2>T5KGNFe6ceIeG^i%6K&sMB_^1 zscsR_Dp-W&Av(Q`2w)g?e(8+B_bW zO9Dg4@L*TieE>}+!evNcxEkgHpmT``xp??AXLO7m7 z-&ST!Rz9A47XO~R@ldh47+>ux0>joZz-Fk6)?u)^YKt}sKN)&}ul(^7{1837O=)lu zL-4!8KDEQ|`ci?UQT7PLkGrI31Qmd#;;ci0uv7&Z1%TYq2vsD2K6W#w4%H_r zFy!w_t!y&2=n@`G1C!>5qNpM)sA52vY9eSzh*NdI&ygIn5lFIYOF97xC4>L3r(i5y zX0`q9p%|=X23{0Tv7#-?CL=BY(68HQFhyMv4+#b}XFM51zj!;_-Us&{ow!M3sohYa z-M~(6&cZ)|VxeB^aDFV5jBAr8BkXa23fM<)iH@#=pzuhS8#HDBI*Lf6rgQ{nj)|0^0V*LbJt<)_!?$zR4MQ>bP5G#)k7`HIww(KIAkCm8GndHfjHfdsL{fT z(F;=Nj@^6M>RC!(mK>(F%K z@IiU;@}uIbF^`qGGkHFbFgvld-e3x zG&da#$&tmkv&WE9DbORo}ob#bGNx7}bbvNfD7&$(e{`mXXM=){>JwHQbJp=oI z-uyMa{dfk99D^JthIbZ>9J5&eQ|kD`EH5v!^xiBx*BrlYhP#pBE91Fnl}F|7b4Yz_ zQEOpwm$RQS^WIbR?Zo+wN9Yam{Duh47LHct>-_V{`BeZ2Ra-DspxMULYM#$(7@618 z&D1{ssc~}N9RTWypVUwb0Ac=i_a`-ld0Xp6`x<3C|HTD62ImipF25IDd6({-U-IBp ztRP+)ziV~XJzM43lJfi#yT{loPT98mr$fG;4wL+Vr}>LRKrq z*cHU3l~n(g^z)9HE-N`-SIBiM*~5(gEb>2kLL*Xb{CPs-M)C;bNS*)lCp3-tnZZA6 znSbfFb>m0Yc{u&GmiY%^@!j@y4e@9#(^56r_}5zIPae8JVxoQ#|H#{6s#whZc2LJr z9$M+gH)R<7gu0{S1aUq*&gii@A_-c zGGLSsH#XdEPT~`ScP8(Fgaxxet1O4|cU3qYja@LXO&Of!P*hCUy|1{w#$Bo{GoV&z848O z_r_DGwfvZYa6|sHMM5B95!iecT+4(LbRdKcHgUMf%&eArHn^4{PA@}ma75zDOn-sH_?h_X3_A7$^ zY7ILJX-|&f;TevxP1nuSidPn0q|pxfVcb*%ApZ7ZMhdg;GDujE0*gu1C*jV^#`k%_ zJajbNH~?xY3yS=2Mwk|5C)9sMgGL03E;-XSkxbJpR;+voH=`nd&Hpw$-8pg z`Gys{-OOsWLQ7<#j#G^2NY%~;*qCm4G4iG{oyw;*4T>b#kCiK`b<1Gr{P!x2QS1N5 zgvEdRgqG7F&T&gs>ZH-Nx$QT+zSl5g7_YX7w>h>Fo;?kh&q)b8md5N%+`Pm?qcG9> zO0V0wa(ZW)uCZZAuIlok_P|FH*ugS$Sn~=a$co^VpN-zC)Kl%G0;0qi#pu1~(?6b# zQk~~fW9Uw$$=zE9UUbR)ov=6(_azDHflp}kGvZnAYJPrwIy?MF+y@dC?6(g#`i1_8 z`@S7){k4|)Bkpsk1)tEozWw?k^b`s{p&dWrzqjoBz<>XxPH^2iq4eJovRM z_Ta(q1NNs64)vX(K;GulpDeh$2%Z^Drv9^V(RICwa8vH+B? zg?EB;@J%P2 zTpQt+wF{Wi`nyjmZbSrE+Waa)_N41e`I}Z1yl9v>FX`-d-CFx9N1R;msmzUNN9}6{ zg#6w&zifPyZwPz;3|Te&P^$YoPJ@B^)bBSmER4m>n_QQN_4 zq$D5uhVIm1VjRnTVP&yFBGp9iPLo-)#I6#!hwE2iJV6NN$Lm|n zl*oqX61w3Wd^8XbJeBl19e5LP!RiN{9)wc)VyOXaemM9C@SI(QVKgL71^Nq~?p2KjNo*>{0UbxWA$jT zjw6VM!_Ds0yQIVC5K=eC2>@ljJJE+{qk>GiM##1+CJe z^iBC!2O)YXq%sD|ln8cuDkiK2XUoQ!G-+SGX;ox{5Osjd7+@*c!Af)*5U*0Lar09d>DMxxb#vw&jfxheo*{X*(2M_ zLv1n!>5%L*P1;<6Ywz@P)KCC7c&3mQh$c(7=cfP&mTma(!76J2GxRf?Q`UEPK?3~z z?cra`cS=UvqYl&d58P+wSsJci1*y$t{U9z+;SV9ae^3v5r0rj*hdZPEtB9g=f&x)z z#vQL+m5ihka6CQkH6MqEi!A&vP>*ZFcew7v)r%};dklOk!L#rXmU8`eoJ<7ix>uIK za-gZP9EdQsEI%5gHg&^!>y`_XO`KOW5_Ek)8L+3beo1bq=xP~FfabrG0jC~vIs&P0 zxIh_jtU_fqX7N8mJ;W-+ht9)x33`lL7ibl$vw-b#%`$PnL{J5k-PBM40LXWT2Kg)ps`ApF#`4c=- zxcvOmx&)pnI{qdD{^v8ry>flg)zs6qsavQVw)-E(wesG6pYn0d<3=NasMoY&_W5xEtt!|)OrH`}Lu7(c5LYaA2%+qaTN~m(P8C6x zb~&TU#iV^22C-E>RN=#TX%m#rZRb;hh2u?F?2c8{=`*F2)#)OGS@n6I3u<>}iWqD} zv2TEDIbp`5wH%!kxRwjY$TV!kz}y6QJ_`3K)PN;KJSJ~rk!NMe!*QXL*LV>k7-c5u zxKO44c&3Psv*;`m>6-pBHUk<)8I(L zhE0U2$-N4q_f{^~x-R;ag)h*AM8x2GDopOa4P$ERqE$zV>Gf5dRk6dfMPdW^Ss>`* z1{u%XelcaG{BSy)3LA8pgtVIppzoh8_UgHE!r2vWP9icC1AqVv2=w&ht0Ss&gnH}# z)&kgh+};gpK3D+FmRH7-MB{VqW$)%pP(+aW0rZE1Dy%MDU&Jl=qSz-oi)-%RT2X8Z zr=^->4aAVL2vSjcWpm68;nXyXfZ=RgO<}@F7ySIFmFZw0RV}6yoaZ#=;aJQ{lgsD8 zN!0oGczC0CkC+i8(40hiQtt@P^L)MU!?Aznxyw&9hBEgA8&1t>HWKc-&+hpwnu=4j z4k;J$qbmSQ;+EVXPTd7Ny8H1VIveP({(;nb@S^$|o$yUbT4_PdrB zJ`>0ukEaq^CrPmIVImj3J%+U#WT;;uPa~C)+K#F`75LDL$z751=cU)OCs7xXDwrTr z@Co|-a8Kt)o+Y>*A?*OPq4?g=U};oH_L8=P!V9@4=&G&5nZc#=Klfge=$pt0on;m7 z{gH6prUG`*v2u2QG(NWJ_ZbnVGX1t!>BCJWaziV+zWcAq^vz|LbXEd8hLb1!~c{8`tJ+g_^tVrBLnH+WbRKf>nevrF)aT^ZE&p?`82e=KT8Fem1JJK+--0#b4RnDE0l$&LRy;hhtNUjKnP|M6UF8P|GB}%1_Xr0D|vC*J8sDyMMiv@kch8cYvzEW`~ zk;~fh@cs1T17jE+5rBkc(9_Gk2NQ& zJuPU~Bb++;KCX(uwdmHC-I1OAuXO)lE`uRW6Ud`-@ea+ay6>I+K>Ta#J(8NF0ygG! zN7!WCf7Jc|pH293_2=}lmv;IIF9xJDQ9EFFP238x*;Xz_k)ZSTwo{O4B#58vbb z_e=XPZq_8kjvYH85Yet-@X9l_y25Aws(P7^oUDYx0DV2owwW3nyW}X_qeXD`WJ!PiJ!L+bexK z0&fN?pirAmWfwB?!EZViq>iu(tIEr}^ud^H%F;z65v`y(?R*p+iQQI3Khk2%<5>0b zrHkwaaj|FIi;hAt8pC#}O@%^tvxO8#gXqKaS$6!KG_Ijr-9%NWs)0_dX8!B6&9U1B zpH)$IZg2ria~a<`Q3I4)fSGV0Riu2kkap*rny*F`{)XVyd=w4wKDwHd5DRt2MjWhF zzGpA~eSnt&q!S>KOV>Zcd^<$!L;qg`ynb2vsK!^o1kWtO(QQht^)S`b7FJ4jMpy|) znRnQlRiuZ|e8!m%418fJT~|9Hi$j`I*#gz+7acE1MRgrMwx#w2E*k0FczF4y4Jn=q_L# z?~z0jmEr7o+tQ!3x8LzAhti05S@Gk(ii7knv^AgUW6JGmvRE*!xC&cN*{xgVBf+Yz zMn%xrEQBQ^l8;1gto4SV4C({U1-GBfx{pU)jBdT1=~%&-I|ElB z&eEn#%tuY8MrvZ_Fp<06LM)Jo&M#)Subd5k8#}mg611ohVjGf6wLghk?hTj?H>BRC z>XGQv>9eM9Oz+cPl+M~4bkuFkd^@-(+rAeto zl#gb=)6!KlD?`H>+CPZhR6dA zNSTWo;CaB`x2J8I_4=FJ^cLYxcz}bkw*HH><}dGB-Pdw61@Lo#QUPh`Y*yE|X)t1O zb@;s?fI4M~%v8C&*!8B!r+OVXxN&5Uh~rLixG zAtYo=C2jU7m3A#x*^)}7QkSHBPFk*|<+^*G=YF31`~4HnAI|sdcpb-U(Vswy2YYS= zu3S74{NU2*rAB96tKz2B!FH;o)4iuFj+eDW#{!o3)wSjr0z+>mUN1F;JhTMFKT7z* zkWM{<2W(MyHWP?sKQ#6sPy-Y=IM<15c!(I7Zke`-5W|*^CGl7Lr7UuFZ?#YZ-I5)+ zLLrDJwh+0_;g*t>4(6C^(hhAFgQszyG{jf%4r3&mukKUcvQFZ$BV4onsIt3CY)Muc z(?3um%~R))s-^w;MSe-vtKU7$2~fNKFqcu7)iAUhEafHJ7fn~iK29idXRo0H*VqMD!__GQOEx+VXL%0H6Bx`CyY2p zB|I~3NyDHvj?5XU{#f-;sR7<%d8xtVuWrduDCh4bJpT$R7aH5n?DE$~f+alP?((-? zyYS&|HD!9)y$@qcci)-B`hI-3_N2}Q4TAU(kA9B3a4)^0=EYG8nrzIUm^>f{!1{z8 z;A6os1Hm2t6guM1a@a8rp<94l+}SK9CnnSlD->E`-XfVh7EQADJ}p;fR8(6NLrp9c zS!doVcV{e?)?Fwz{{U~E*x@)s5jpI1)Wi`*$=Y>h1_PH;%i8j^YvUL1RKf+TwUaMZ z@>~;TrH@S1%@222OtDXwIa{_*e$3c@t;%2!bR))boahkfyf(;^!82`lNG?C5EWc(r ze%Y5@{)wfIgu3Kd72htgE^`ovg21)DvI4r!Of5Avqkc$5yQ|h*Cp9hSda){ltZl~) zPcJ^@reFuM-_3N966!y1(`{x0)ug_v6vF4o?mamePPK{MsU+4 z0vag9xYQ3EsvVQJJN|~p7^Nd25ixW+7Qll0@N)AQxO6ieY5QhnHQiKR&r67jf}6=t zXiz%(IF?judR^~W3-6pk$eCnudiuyUqbA zN*PpT_}~qIw6*rmju;KV8;&(NieG?bP;{E&E^*#^CjHh5ID=jFI$R<`z6PP<`Tov^ zzvZr2b4lG51OwVOE5 z7O%^efQykoM`Yik)X5kR5@3PE9_v}ty;B8l!du{u3s4?)0VA?O7%2pKpNT+B-RD+E z{{EA*PQ8P3LEd-&fp@E#7~pYY)~UCkQxCvDc_3;sy;bJ`JMGEcYimr{N;;Avv9QW1 z`M%o8_Y+yU+*hkw(>Z}DSr1rZ4s2$m*UOq)5pN_wr=Ecg;{n}rbWz*t;fp|_Eu&L) zHB2)F4ADwqo8OEjmC~dTkN_-zp!f)+xn75uQcxOZGi#-P%EJTkTT@&zl1!x0l8Fn{ zx>ylD?2^nB@{&Hf*Rotc)g(0z3UumuTrW=3<@sf0u1Zx=%?NfUt7IBwf=)fmt|e+r zuT-@9R+o?5hZ)=6-hLEt06~@8ziD#&s(iP)z=MT}M(8qn6z`qi?E3b98b;>V2i9!| zP4{A%^OJtt@@=>KS90fCcMmk(D+NkjpiChtRI|GxA!E%F?M7mHABdx4t;pJ$gDgGd zW$SEto6NS58nCymrS_c4>!-Hu0i zOA~BoO!r^A+m6^`0!@E+uqM7;aPI`$yM=(>E2C0d}`Mt<2`*^4`y8z z)kUO_@8_uLN&MYaLBBx%T?GZYD#kd`g?(>zxy@o=mm5)}5VfK~>sbm2Bjagkr_L7X z#<4Fj!aiIR>v&R8tgy6oo<0a8zB4dVR<9^25ol&mbS1USqzHr&BM?T|AdF0cFyed> zLjg_qMI8u8Z!=l$hUtP-v(5Q^MY1U{9>6zB3RV#z4V$0SGc17kRF8ck4L5Z`63ACi_eKGaT=wRA8{OfMTPCO^xtbZ*?3@zQdT zZ19OI9ad4LJX~aE$`#;=1QW6W1LHI7NX)$Vu<`0hykRY|Fp|$zMy#a2{^- z*G@3?1oxgKhKf?kg6y2vc_X?9^=_$t@-%{b&oFTB+1rf2F*vN*aANw>HkTJtG+HZ# zE)a480LcUbT_~uJ2hySfK$vdwKEBE=54>(-jYPe!z!>0l^F{?r%{B}b7cS)`1xl*y zYuV0NBj`NZV+&Z#Wtn@7Qj$wxqed-+0SBC_%K79D?x-vm+=yQjXUyC*WMej}J0uj_v>otYp9EnKl2HFZB$maytAv!=7@ zz1QZ)gQs8aUlY@AnzUnR@XY*cW3kmGXeS!M`Omcu6M!hN1or!{V-`&JTg=Kk5&rju zQFKNyZq6!M`>!&l)7vvNU6CGS>y4UQ4}Y$8kO`b&JOQ5>&v7L2 z>hW4|A*pPYAA;@j6tybqCIlSNdicp*E_ZMM3p-h!4c!|0_>;SQpI0)#hK+H3@LIu` z6T!j?wx=3i9x~ZHl6~^MMp!dMPoZGeT|WP*NBo&p!GMPDkmd9_Tf<_ElpK^~p%C%( zEx^5Sp`cm@k**0b=u;1Xwc_N)5!@6!3qj3tF@(pm*<)xBvz%7dKA_v%*Y>g<091dh zX#3F&SNHWd_W8`s4DfLf-hpjG2nY3KY*N3}Hn7(FG(iSNNHq6JG*Z_W5p_IVYdVP(%nIKxtUw$iNWmGi{2Hbcol(| zC4Tt&HA}yi9RDoa-GLeVBj397^PpF@mlQ;sbj5^ z&y}#6ALt<)Pd}@dq%V`%b}E!o3#VRamd^@#)%9O>0{)k&&%cIQf;g?ok>ae-$)8al zt&{LG#$u6U$!XS8104!KlrcRBZNL9OboXZ`;2)SZ8x(VE1Ly?Y_F==Tqi0f=uYZ3n zWBQ}|K43VA1&>aGY>a7wXZo`n1`1#dSo2DYFi!d*!C@^fqbs1sb?zw9*N|3$ z7ZJ{xcj)9^;jI**%bca<0HsF0>pm?cDPq1!A(e%l(6J8vS?c2}_O8rq!SEHW4yl=w zqxsVEm;CiA=E~|8U6#m{1pc@{Wj-ila+OTWncJ_n3|!%Slt?e!Y^@|qPH=5}l~I!( zLteMU%(=8~L4~I;W!qy*kI7fOW2YXj4wvoRJwBM#S-h4SgYIyUex2QwSSp*<)qN7Y zP8^<_qsfp?aH&+{#EQ@gGZVSwM%Z@KKLW77|j;) z^u^uJ`MEbdFD%-Ky5uTpB({OuI%mv_w=LXB`r+ugCD%^aGV2%Sz1V!vU~O0IvTh$y zR*(Af4;EKbAi9D;S(4r=SurovV97}UNed+;BqWdK=~Dt0yhbPNd#f8aNspuEYm00% zsV`PtMz*|MFzUKINqG>-D9k<8}zr`(@xwbcr))@ zm=KNCk8&L{o_nrS$Y*e)Nbt~F{O_b7!v+VD)p>e^hdt-!Mk1_+o47>39VtVzypvqdY5ub<>)`nTW*i$^HsjKQ@v#?uP- zQD*vnWQ=QN!=<`_b`38F(bdiq)sx(srP&UmJI1%+n^EWV_}=0H5wxSL-hv9L#&e`( z*)~6I&Q8?7JRnL3+85?3?)4|NV%hR$i((bU zcVG{QPoj`|tlH#A+MT)->6gW8n1QtCHI+H{HybS7zt;~n=jb@iO!r=Yav)t<;VGeG z@vwKYpTM~Jl2^MLPcd=Dy|prDK%1k;E{`>1N^=;7dO>OPANw6J?Y?ZgzTRE?*`{IR zd8e4?I!F7H{jh5ZH?vn5j(Usv8Jv=v=n?YqR!oSP@Il4)nrgo)6kjuaL*~qMwh;e~ zXyERws}IQQw~C+eyt(tEv%&x?cA1aEEt|d@MTbKW>dv+6wj_rm0!2WWk>b}d7&sV+J ze%T-ky=LO{a>JLI<6IT#4QU-wAIG=c5MCk%EmF-(h+R1a8#~gwtsYjO(bxXXdD$LNBIa#l!kjd zzN?Im(VF0ZRz4kClrA$$djzf3i=K%P4#Uipj1r>3l2H?8v{^*7IV}owh*hX#-(+!g zYdJ7)j0H1>QHD|q!w{)pn_m=lB+82r>k|;;%Z&Aph-Cy|BxzVXRE&;d43rTQ5D?3@ zht`3i!mOzM)YwhEal0qt0%&abmDo^}lqQW{0B~1uql)P$*=aCam_B35N-X1ot)khe z=&~BqvcBjTb6j|KJbeOP;5E|&${WLca%af{&~UKnF$_~oPbi8=XfThJ8sX$m#0#<$ z7EPe{k=njQ1tQUhj-EW+wFpB;3kQy3UNg*PB#alTh4~ zaE62{L?voZpx5#tN@FkxAiNAfffYe7NRTW(G^&qtl@#?LAjznAulGn2@Hpl!jlY7F zJj6_W?|v?>Lml zsnpx)uC%mNK4|@!@!}{O&*T!X3bX@zDUUMKebI?4;?rq`>AIxk5_^nRZ)TWmR`~5q zQ(9VSlMv{8df?}H1c06^18q={=q7Q2eP%3~w=ONy&gRL+bR0?N-;T)#qxJczpp|W^53RKwvww^;&jNG2 zD@B)<=4^pPgrUkoS67d?3Raj%M4jkE=GiBlu*mHRj49ooyCFMQw>Q&}iwS2T?%m$c z^g@!7j@kG%+{FMi zzb9V-Q?!E$3XGx3L?{__l!c+3dy5t{mY5I@=$x0-^@!3ygKdteV||Fx?U?WySiU_b zzXu80)xzXZ%X;7zjm0}yuw|WSW)oDE2KLVgb%4q%v6K(+>8@{3Erw0V1IN|X4E8O|OC2Ds%C z(UL^Sa?lURM?_*#JR&*^EZG&HQ}hpYVxlsF4ymyZEi5~<&Ld%e-=X>lOwk=Q*w;&| zDV}2~1lG%@(`PC|*V6ZaF1KwxaHs&4H-=tHgcPu%ZpbCaXIH*$%na|WykUVocRs!7 z#G#SLhyu$58!Ax3KOEi1SxTI-C2pf9*m()>uPN^5V$_L{MK!QR_RwQvLdyg8;dfRm z&562DUaj0;se?M4w*zy%d>>*b1~e7Q1qm;!0pzE9@{EW;?PJbDFuP?8sxtdZ8wI01DF*mc@vbxTM!se*kAs6a6b0VU=x?SUMuL4uXC2Z=S2eVolTz%~|4mY7&T z7cvu|O?TFZ&Plc@tDoOoPaUbRpFrxK6oM`V^1Y58YbXpQ!@$zi1R|gmCbR*7DvhDH zfkwg_p^bbn?j2Jewr|7E6Be4sy)*=RBlSxrprR`wV0-AnzT=n+h4}&$=m(pk3(e`N zQE##@3quMA2~()3mv{2B_EqLooS-mtK4?TI(7`CcY$_9zMuaTGqO~JX88s)ff=>;O zoSY9i+<_*%4bi{s6)>Fe)sH&?6Z?AC8wUAg(t=XbDNa4n-Hg(_Cz$H=1O9^n2A%#^%$}5IRqW)S^tm76+t~JzM=6TBuVJ zDsus~kXFOQ==#oMOlO0ga0 z(7rk(%DS>$uDKohvfZB&-db0?m4d z>n-*s{>20JX?Xyy6HwE@FD<+ga^Efw5`VHhXsl;Mqg+LGQ9bkuDLDy|@nXv_9;lVC zpSV_di+XL5?0dpI_Bonv%>mo8o*R>Fu9W&!xEYoZfQrJ;oeJChB@WyrTDJ_4?1t1LIqogB0OcNXwnLAxy(r@`}?h*o1 zX3Z8MB4K34E$rs_#l}%f_YY@ziiVW9z)_T&g|39mfFeg6T)+Tu#asq+p2wCVn|b;- zGhAuOBblypmq0a>-qFqhzDQ>b-g6tID-|Y2-@4Y#zJunIWC^CsTCHfoE4zj|Y*)3k z)+bA+8(4M?W(AbKbI4rfQBsl>^znD!WJfdENBbijhjP|IB8L6Y6H_HS0ZE{twMR$(wIBT@?+3_Fgm1h>-o2v|FqUrwXf%@*k`|I*x{_W(S z#t7}*XA1bHP*FakqL@MfVkt6#-R&d&Va(0Ku%UVTt{(gq&3K9m(Pl|*yGk%<~JY%x}-w#f8Vvyslt3-b&&A80Rw?B&cIRI)Q!VW>emx9yp- z^haI{olU*H#gv5>^7FS-tX% z2dYHFtqb%(fy;x$63V(yF+vR#IWpXcw|X)>>qPpk1$*52-g4Knnu{~FVKv>pJmKtf z@Y03n9-{rX775M6wvvy@UR-6lDfgyQ%%|+xBHX>HhkCcVE^Q5!%Dbp!O0*;wxm=0AbAQ&UT>_6ZX znEl5xMSE%|hy*AhqRJjGwu-)%SLA!JbmXz!@>lU9aJqm96g@L4$GDto5)%+j7j2LO zQamzLrf8<*tBtOFiV|#3L<|wxFQe4C0R_kmk7cGCX(n`{;V7IdhA81AD zzPu%#3P>wuBhZEOAh@I3@jSKRM#H8ZMFYLK`cTno$5&p_kTwPi+|W~2_d_Mhd|*2#+CnnmtKTWL z7m_DbghQIYs*UsB-&er*Hd#I1fYcd_(rbVS`?5?ds&Q*X)cuY}o41O=9ncnYIoLcx zZH8rtPw`N*D88u~R2%c;myTQMR&8{|NdQi?>xGAaI{v;QlqKaGH51qgskQUn1usy| z)SfrA8X_gNR!pgCu0AjIn2)C9+F`r~v}X|AvgFd4a)IjDH+p5c?J-4oi^E_2J_vvU zgNOiHFz76P3jaLX^)E4e3ZeqfU(g**h7iA|wBJyTsm4*M0((|VFG;UkXXO0nPUVN_ zVXC&u;_#wvb37+*7~b8Af{EkxcKsW>r{((Y8D zrAck0AJHf+{_SMr%)xlm;)@QzMu@z_nSl(O=Ht(2qFvX7rgFvR?PN#I&u^dy49`Zp zuJT%=d9!)%^n7|u?ER;|1)CKrxy7JG5$R1UtfeE_=N`X)dYlJ6p8=JhTEQ13STkC8 zFT8@x!pGrjZn+r}W7$!^D}pKQ=BpI@==L=$+M*ohauqq-Qx;`1ebF+vxs+qQ*P`Wd zVa?HU*^BlkygTH#cD0C?V1P$Ml6|cRp2WcvnQ_{FcjM55gG^OUhFhAmEBR_FQ!7w) zlii($q4brpWPellO!QE;q$!r|waV;C-^z1HW^H5e^d(keZJ!7H!*x0x{6qm zONmg0(kAy)mx*=ueb5hYcy3e`j+ArO8J`p}cH~;c`vAg7C7@A6?t+w%uPG#!As#?e zRO}_uv91j4dSCdwq6h&xzC=8}Qb_>{84#PkrrH)YUPHWyjlm#%_9`Z8N>yLbRO>hTR80w^EcmKshyy9_#Nvfk~ zsex((==a$G`hD)!5h)i{FSw^xWFEuGXl;_Ma(i{v(|jsREl)SPBDx&6343Vl(5Y;izPS}wvq8f6RNFw&uULzE_RtnZ~w zRVuhb?jy5o*=eq1=YWXW7@VvRxy13fmS50v&~TxWy(3l$RyQMPD&)qxZpuO3z%5)c zfVSIgBr%6+q6zN-_hq=`MPWT1&_ifSqr#UHfV zc_UtXGXRFWGc zF;cwFr-GoF-A+W(7tDfYQ!oSsO-E;!!+ebx+H`J;xo#n>VC0-S+z8494Yev^0@Nhm zwP~0qwwTX`%|}6*n~xnS;{%G$9_|-zTEaJ!HO-q#OSrVdOIkjxov^wF)qE@0)eSCy z31ezdLaB7T(#QcKvM<&O`}SC^214B&3!ul}N^Lv+6q9d%Wl-sN7x?@pK&OZ8UOa$b zKxAm>)Wq3VjyE>wIEw3q#X%~Gr{buUPj1ok?LH_1=$bSbDsA zRvd*Kjpp62Rp8P#D%p6!*~Un#{8_A9oG{W}L+hZ+p{So5Nsunm6Vw_C?})^BQU0tr z%6>hLsbn9QRuklXp~D6|G!J&ViKVF7RBx#95|A%XD4gD1)2*OgZq-Y>UGQ7?2sR=rM2imZDvLNq&ReElDMJz(aF@ zV*&-)MUU{_m65sk_6_FERPE$m#Z-HD;C;^e>%@;XN0VcFaqze|U%a2EUD)YyWNv+XG5 zr1aoW(D|}7RXMHx>2sAQ9h!Ia5N%3eBS}!P4W(`fjGPtgGFkv)U8Fr_$ZODYIdZWz zRr79SE3Xyz-YQ=2ZiC~?j#raPSc=>xicaHmYwOFMq;0~&6h!CM4d=f!lKf|K#eYE@ zrSL-Y{Nfh|H@lbrDp&jl>%K(J9*{nbuszHc`w}_(hsO4cIO>zeRyDVsB63wc*3TqH zBeGr7m1`7wr3N^RH5Xn4H74A|t`d&oVy5TUwJP{jaK&VOO!)zAe(QaFgf^OXV)z(N zgpvv+xJc?qr;#(ISO{8Z2Dua_p*u3@=V2m)o1-Mgp}^)MvW?}A6ai>`tGUI*=9SEAqIVQ3M2GNa5rSl*@R9P&AjT$I-?vx2{`R*`R1} z(}5L87$OMYZdY&JV$8-y$&HaZwQC?L+bXpcc6+KGt0D-?NCVQD*cc7@q87?A$E@>? z#m4ll){1&kIXyw93s)g8rW865k1!FP&f-#dE+~$&KBzy#6&qjg zA4@!F@Q6%u?tPvAw)oLe>t@jT^2(_I5G|t%-C6EP7#D!f7c#M^CsrOjo~pB`>%gzetK~qhV)t)G?WmftzheVL(ku1Bb-dKXzo?xSr%$E5++=Qu0s)#94Ht ze?}`_^sXA^30GRs8(w2Purz1bnq69RrT0STb-Gtf)d4*e}GUU+Ro zE7XDxq1LX(Mz!Gf5CDjD^IiEpJ_x&pAV}=f0S7AOdUnu&(^n=zVB}Q8JXwfEYH% zQ&D~0vb3lsXs=!>gdO!o~B;XVjbb|e5 z57BMsZ%DPyJzCYM;pTF3@VS;Gqyf&~`9 zhJRW0B}pzTX0ahL0M65_Rw4~@{_o*cBV8F(cbzZ`Z%fC0W`7Qvuv`RkNr>lXF1Y}P z?f*hN_glGXNgkBTG|AEKL0)g139p*%6mh*4OCUJ4<8o~!K7(=g!(kMl2ka$jWEqzB zEctABx#*z?npyI8ueQ(+0nQxW^z=TM|GwdX{o#Ak&vgL2oXy7R)%h+Ur-Y=_h2A?x zu#R+thL>ciS!EY%`jfQl-ZiPCuNJYKG7Ou1!uG5J!FWP-wd`^%27mO0DSP$qm7?Bq zP76+4ziL%jVhVPO7|{wqHw(1@seMJd-$isYi4V!Vk*??@;?*OFnp0Xd{# z|9W`U?BaIaK3g#V{d=mfnV^Z*%i&sRx(5$fi^?K#u9<-%h6Lo?V3=a*{Z=OwuaT;Gyri$RvC7x*D*GSUP}iO`XLRVKIwTJ19FV>8hYj^vX~)7#+AFt!4IJYU z=e)Ok+MgmVc)<1Ay%+x2pGH%P>Bx9S|*K~~VAs$pg zDC!V}P5E>Q-iWWf1)5?PQS@h!I+G59)JC4|RY$i{lZT&)p63qG#6qY=L8crtQw{v9 zW&(`(iZG=ShN#DtD0*iR9JE{_wNf|?meRgEZFmy2CmO=?!3qNq%4+TDR!{*ZJr&8G zcOQK@V&J@V6cb#JQjMMAeNxpEZOh%m;&kMk-B$J(2~nYruR3^FAYqaYm-h zX%{JI7h2jO{j!ie(W> zlFJEz%9I7@^=vBV%;YP0TbJGs5(^yxAR1v@ck}T|%?KmPipMvYesrR`d8;^m?6P}9 zU%6~=6gl>`>#B`P;xMmfVRL|ki)fPOQBB?6^EAz}87L!jqdE6kG1`MW>>zZuxzsbkC<~7v!m9nVDaC8kj)@0il5kd-TiD zAT`H?E4WIJ0z^Ia3niLako3P-gE*vXt|_k!WR;`=nj7T*+#LDTMcp~Saf;p+FBJ$? zM$H}g;)S$2uJxOeopyGTHmEB&`4t*gu0c*vscO6&iF~C`JS}_SwWAVV@$`AN%sbH( z_bP(M_&Vt{E236*x)pCdST}WQ3&A^DM7RB_qhld0116UJ z*4vuq-{8g80TT)W7ieWDT3NiDSnHsBCqOD$<%#(~ioIDNlW$tCQk>%Gzr80(@k#ap zkf*)7xn>VyEGxr>M^?*Pq90!Z?j*P4a-jPyeEH!s)gX~?XL1dZ8Y5r^(Z5*`>{DNy zb;UJ!y?^Yz1J92A?)gWq;ZxV;!(c*zYi;GHgn|vhH@bB|o|X%@0-GaGUeUWV`V{m+ z8rLV#D+MdTouu-0TTRIIYh!Jq=dM1dymkB!@IwA~1;GiY>CX}$B%d6p9=&w(MU&8i zKW7kqF|qt)C;3BYm^yHO=g+G_-gH6LtFTPOAfh&{%sc9JYK$hGaKzP<4|*XBS9zu& z@G~Zs^pzcO4v#S7g>1V+&GY7adnw1szlT$%dsGvcl}bQ4%?Fq)q!RTK@s;){sr@wV zMAbIDa#Ha#1|GH@7r=bNd;xO@zJ;TXI}h7Trc=3&v{(GxDU}+7W(zjIMG7)vjE06Gm22vx z_B#8iSZu_64diLIv?HWt9KP;X&0NBFL(>0P5;no)1yR~|5Gy}uLRvn}R9(pdHe-PN zj2%JeSvmKoT*y%S7%>qqVA*T~Pr^-HC${sJ(r$Dw(};pBDXMMF%&E(41ZHL#5LC=`z9&rf%Xyi zMF1p?1<}G~{Sh0D4=m6=LceGv2IkpRTm$_ggP?tc2Nzy)quUX@VEGK8fCn{KLA3b) z%>`@LK4Mq80kk}Zjz6jT=ft{y5iRU%s`qYs|NO@nteLG|9Y+DWR4pNNKGydL=@xA1 za1%P!8ZUjFsi6Zp=l{CZ1JMHG_7}_J7w7z+>?13`O~L&UkvK48A8|chlvwBi2T%aZ z4rc;a$8wc=CJsTI0r4p!O6nd~NS{-VD+%C|vG^}Z9pHNd1K%61|H6AC@o74R{bV`? z@6)r>snp-6)8HRZr&ag9Go8AxfqpZcUN{Q*b~@GnI-UOMy*V&Do#MVsr=DM?Qz=&1 z_oh>mpG~LSZ>Lj000D4crqfu3_MxkB!fFpwXYFdCct(F%>Yb25-dVUzHy<=n>(n%h zEH>aTeSdXutPS1@6$a`et^V(mI{v%U>8;S~n#UehoxIub;#U_Jf45lw@!l+buoEn< zyZrFuN8z6p*M-}zm5z4T1h5Gr$0%!sU-zBYBYjTl_!r(Ar(b+;bY@ex|CmlgZm18K zueiCaPpqWuK!rJjXNQ3QG1q)z!4i+df;oMhnQ5l%E;!eC49&P-XXYCH8SXoN z4V-J{fZP|j?lji&p+iy_IMR7xtPSTD^0J-qf13!@1{P$pg#L@~%*Qf#mAKf>QMQ%! z$p^q$bT3hOn){&WdG9uLHzLmVg7>wLhIWB z!udM`g!TXK0P(d=eI;rNOz=6kdkHu|OuAC)dNl5i{{8aN7dw;DqU36`{NWz~oS`JE zQ{!ON7wC5fGg_u*nr{K2|6s}8p?~GaK4BUda)0Zi{OS*uBSmRH_q+ev0I|FAz}}hW z+aFy%rqblBrlsB&RDO=ng#%y5|9!s<%M$+t%Vj^hTk8J=mKT2)mR-Ju<-za5vi|pA zx#%yjoczzQEdFy?F8VPn_pkWzy215ZSQh>pEX(~L!*a0k>Z@;WRf0i%-iP&`d@msX z3oO&RbcB!g`p?N&+}jX-7>v)oAVnGYlvc4+=EReKTYRqWt&o4)-Ezl||K9Dr4{Sr< zJzV6L{9g&``+n(8LF4evb=9ZSdw-w%iH*Z%e#cMSzuaH`9dZ8%rVe>OV&j^wKfD!% ze(zS~`5iF5^*u1n{SKIJDE})PKlKk_y5eVG+VD?cs`O(p4fp|=>U{@HF`J8%7AG^o zz%!pWx7Gktc-8b(dfOjz-EG}L8NuXu3Ecx#vOso^$YeFwOdX zrgGZmr_WUG#GV|~1KMWTxK9bF-zx@hMT{;ZEf7pAW_UTM-+K$@W|~)qycX4*mJXqs z&4!x^f&MS!Gbp%ltGHW8E#o=X`f~eRHxXe9(0MiVoXY=lcueh&f5&%2>2BcfnEmT% z))yu%!49nDZ^t@*+JW_R|JPqNeMh5CL2M7R0))TB7Qz9_D1Ze_VIODzV)QS#P)MIa z75XDFP}voZrgxohUup}kL~pOT?wG{WTt10`iVpjM zVxZ6!1wwF7Iw%IZA>AKKzme|!Ne2W*Kn?iM=zw@K(ae?B>K)mVP6}tT72|b=%MN(y zz0JO!Oy4?GXoae}?#wq=dz`V?P~)+Rsqua0-4r|5KtBgjEWaev@^-|-ER3o95Z5a+ zaM;E@G{-M(-7zo%Dy(Csb>`pr7vH(fvJq*y{CI#J zXGh}9idD;xWPjJi`QILi>slY5p}gL&eR&2{D=IB68JxUra+#iWyN$q*`QRtFe9qzV ztJaI3jbF20G5^hV=YMwu)Y3y{BT;*8cl0ePc)sn)|DX#69Es0dtgQYM*99Y>W?N@| z|1sD7tjraw*d?vY6t_-cM4v8-Lcb@XzNX)Pvs1g86s4EWL(O@`n{BeYrzk!hW!@%l zRLnIsP?C%)Yg7GL6K|_KU>t1@IF%{I>9+|?izeF0;SM~pcS?k~2~(2Ul|)+=7Rr>1 zp~xY`&C1v!tEnqwd#@yK?p_NPvYcBsS-Y1tb$|%7=w!&%@ws5@j8s>rseWC`t~NGy z%)VW-F-5(u_a>zZtf;&`kT%m~_Z=5!r0V>DmlmFh#<bT zk$aupX3@+WD2w1*Zw9J%ZJU>{VLQx2K#ij6M#n7D#& zlhYIBFCT3oj_X&*)wOfzD3IwsRVSTp_kGJ&| zZ4~Jko{NN%UdGvm*pPKQlh#Z}UOje9)h~q1OMv7-VeF*MgthY?hsBu$z7*b;KA85TuLDMH zVtco7fJjn1%143+At=FHF4m-~3qPoDscBv89jck2Js^3@XYMOO$^5%);Z2BZQa#izSl_(|@m zoBOWk741xg*sjW6nWuski%j~tjgGDI_vuYbnf*f0$|4297)jk%LKt6m{Ya$N^VpSy zku;GV88OG|^hX`6C@+lWy&H*H5LPR;y*CPPTNbQ83K0<__DNJUm@F4`VW6ExaFu6G zF%J8Ku2*@SnYaC@MvkJm@h#}BEx)}w{Q6}V>?x>Z=rmdNfwi|$$%`-#Plik?VzF2{ z4%!ra^tS}pkjrirZ*2T3H(G~!^tE&k=BpOJl!(&d4#+*Yd2T^~Hxyp8c4bBOaUuWO zmkUIQUGH7rSbq4;gB3-{=$;nD9k1}-yG8fF+({tdKyZBDs(VHA#=~N%LlS$}8AQp6 z+nZ2)6rrvxK@!}4L8o!(?cHhjY7|0M7nVtnw}z%`&FwK~ z9%;RrxU*k5!p)SE5IEN8u{xuLu)?52!X2om6QNi@2pSf2cH#X>`iIwpnw)KU&rfHp zUbKwVpMu^_Tbp^jH#kgrj^~N)AVMnx6@r*VMOtP1-b8P4cC&vr@k}onawEM+2 zE;pOYYv3mKa+9YgxO_r#Z=0Dw^Na`ab573eadc__I#3%budj*MTHl~!0f%ju7 z0Gs8*u2q0=j*jreNMI!$?cJG->`xw}VXvEPkX^U8(#r{Rf-iELFZPa)l}(Xcl7e$j zk=~v{2uy+2V&0?pLf#yNqGMGbrk1!)c6%x*CspG_D&=;nBpIvp26NaohG>CRvPf04 zdz`9&BF*4-n&F`oI5utJl4t>d8Ox48t&3Gs*&x4N!*qMPd`UX>c8ZOKhTUV10~zb= zoKX^^*6AarNn*^l8Ta6`jmyRprm_)?ZYW z-`uT#T~+z*-TK=1nDUPAFy+sx%CC3pud2!)+^v6ARr%Muwc?MNGV=#aS?4=Uxy9Eh zN%=m_2Nc}L-&nH;GUk?UzoTm?MK5ScNe0*8no*FvhcbD1DjG;;9XkN0*@0t^W!4r0M?_Q*JC3K4lv*S||L`^4YP$|H*sO zbno$hx+i^}vB7BYFAWnjI+=U(o*B)!-?0AgmKI_b=+sJ7Vb@f5t`S}{QXPNDhe$5= z7Dc2Q&--3mbQv~&$;){A^j^Cnb5nKDW$Wy#6jWp0PMGO^N>r3NfJ)Ie(oPH*FOn@_ zb}X`_Bn56hfICVc$O28t5vLBwzn(}lnB2H`$EY%Kx^sp8Ok1?B>wL+s&eRemdErCt zN^=4!&J9NLDS0ZYM^r5=LhG21BvJFlu3Fgae&r@5#a&>FKI{zj%Bb|r)by6U;Crzy z^L(SKR!Yf*RdN+sXH=xAQRGT*NhxNBL1}gBA?wxJM{*i>sOfH0y%>0>JojcXUhhbk z%@Ct*-`Pe*TI=oPjgyw%!=pFIXL4*;9Ws)K1Rt!r!?4 zd3d!+*&Yu_J?MTbGm<&q6RSU7h)pUpQMbGTmOc4@AQC7~w!|mw);IvYO#<|vT(M>2 z043Exi^W^Ow&-*x^;L+otIs=fx;86+&9f$du^E4g)NuOFG9$W|Xc~W~NnwNCn^J|{9 zrAz;n1SK0CxO=Vd&Al$IJTT9C)VWH2@yC0Csb%iR13j2h>P zMx=AEF1X*ymC{^YN#pd#B?mW7ou94p+2+HgLXBafB(vgii-pPvOvGZ>=*O8#SDJJ1 zuR{9UED}&C$^4LKsoRWi)<%JmRGyW6Df3P`YF#>YVpB3P@6uCrSjcI?r z8Fv*TyDEnxMYi`w2$8+$SR`S>t0ho`-s8yLW@OLWkGzeBq(dQh@-49eH6~kZ^qQK5 zbP7$_NGEFvXpl&r8WyI@WXm!3g`NjQa&?Hoc9XT!OH%hQAdlVX$*dH2gVFm4n zK67WKNx^bj3Kl<&bTZo(OGM!5)`9>DQtyo`ZMwx>##MJ$>$l>boN0X0CK9#;DuQdx z(-diNZCroTp@~>g=Dw!6+JJrYW#HK7&s}s|{aU;*(Fst|TLz#`KRr5IoqNx7q;vfpK?!BC8FzqLZ7^ z^r#~Yff{+$7mYJb4`U%#v|*!hmWgAnl8zI6qZEBg$~>WEE66?Vvg$U^CEm*eQIbvp z77#2w@1ikw?$#l=cth+3wxprgSd)mK^2T<2pK>7wYwtN`gmawhZ3Iy^ztSSP64Wsj+k`aB%w+!N8u8vR<=PSs?yu;e0%aZKXzQ z!7*`F5+;QR#Z$L78eRpYC|1N5n_5J~aE)M|wR(7KlLS937uNYmcRm-2@CTx$i3}mj z8b~9H6>ZV(WlE;bX>_cK-d#(kIMf*7I`JGudqs>sA%o5h>##IZQ&s?=_|0PwFsxkZ|HidqIn20Ke(O#vWvCv2QyPx{QDL z@Orrb#uhL8=4ihSF#0gMK8Kom4JiwY!*`J^?yMPLy+i-i1`gI;@R6{ z#M1>Vy@0zoPLs8!7i*g%mmywkKds4g9h@yU(|iybP`H{&;x`Xnua0*0*2l(6e$84P-&t9BBB%n1f&Rt zB7y>j-Zg*)6*Y83z)(a`)PSg{=!)1-!Q8C%o&DXt&)D~zbMMU`kTH_LZ_Ibj`8-dR zK@+$1tjr9N6&tiWAQ&zDZ89wa(~=nM1VuQ)W$ENHDy&f?>sKYMo)Tcula4f{!WCA9 zy~q?Aj>aS@I*mdY>1oJcrz|9$dSU4`yP#X%3}RXiwW?%8uv=I%!v@#jI5Oxf#k*R- zZ)!d^CJ#Yup}}rCR6`Mj#<8et^c;N#R6>SO;Z*zpt@UlToz^1zm zxFK(!2E}EkSt~#G%k=tjV;rQHbJK_7JyEzma(9u8bz|0~_xy#5 zaebLU2}sA4P+=AkTIf1TI%-23<;0@lBG`3!ClKmb1QG5@q!VCie3Wm*#k3%sJ(!k! zgg1vR6|;k`E4&D?2QG`{25L7;w2wZ)iy_()GcljOqYbF-XcZb5Ai6l^g|ZQCk455hj4%TZq6b-~5}gJVSclr>Fv6Mkwz=ZnX||1ulop5cz#jP1qDb z*N`(XgrCnR3_eGCCCg_OaDnC7nY^PTG&?JaIVQchzJ(6k^u_jHPI3|TVvX#1I2mkz z#I&cnMPBfHmKX@Ty=A6AMm(D1T^0A!VR?q-sOk)!v44ZvFZf}RQ zdFY|Y>)z*VnNV%4dTd~`vm^dex;8lkCZd;3C12lq!NlarZ!;0J!Q)$Po_GBQ-k6}b z4mx^!f*$^&DpFQ4w0pi$=suI(xDqy0*1rVu^_$eqLh={CcgDy4>%~(|qZtcz1b@k0 zcVm|GmzYnI1{-@L{T{r2eB&M0(>FT}ZZZr=`7ff#yk3qc;Ma_`MwT95za_2R65RTt zXu1C9?>#h#e9zX2AeT|?cAlxrII~h^(%h>fvd}Q&KNjglqKUBm4gf#%N0NhIO7%WLs zBf-^}T6Wk3ENB0A4R}2aRO9T5ydYlQx7CFL5yKh;!~#f44Cxr`P5quy+ie+s+P_qE z)1K_JvEM@Gm@kAuA#+JS9LNJN>a7#jvDeVAj#Ay7dPXe0 zE0F!S6SBevB*kNZ=hJ%fd=79{I{ZVr{Ed33QV0-uoMunctXzf>v7jr-L4*o*#VUFL zP;m;(g$7X(n1Oz5_gR9OF(KC^;D`udisLt73{hEhvS%wI`{HdGkZVqP@>nl5(xEr! z^-|}6U)GwpR{VZE&P0-6WUlP~M$m%-Q=>xCvLtJ}_583FN+GA9o<3?ZxxLvr(j^Ct zc;I%Pm7+cT67*zH5p*`rS9uvG69OdTKm+zUYZgqC3BC@4xV=3i&hbM~@?DrpI|Qjk z611ubWJ-X0OH4mBz$!XIr9F=vz!hbi7L|pBs(8YjSc>vwxHT3sY6nL!pc`f49#p6- zbH6>Ga;P!;pbr*;puk``D!Y8^+|FXou8I6^GO(Yf^@>Ve7 zYP^<)x*BQ9(lnuk%InpRW4_+rW+xx0mWgAvd?^YlVGs`zM9vfTBm&sGTwMB2&mIej zk0dahcD6|K6>>{lQL#m$ZoAZxC6M=4b0c9()aZ7LG&NyB@~uta6@Gunj@yd3S4w8vaV=@J z3o4;O#?^blvl?oealP_{Lg`CJIV*8nf|hhubHp!IOKMh2f9;HK`CNT!o16|7suBa1 zrf;{BtkJ5e3Gv!i|1`GrwsBIVjM=FCff^}^Q-EWy& z3nhy}s>9?Z{1;^dMjNFjA@;mHuj3NZ;*vfcfxI7AWEk7t+L%3!(vyo7?_CnVWNYj_ zBU&#ufSN@rk|)5Q3IFsv)lD_`2I#m*tLOy=`bEgviPScK9FaLf&B+PqJ!%v0fK-Y|7q%AL>w7 zsX4v>1{~9ZqyZV?HD9B&gH&*ucf^UV^3lDW?yk5Cce>d-q*4RBiVWoClNv+<8U_w2 zJs;IAROpeI>TW{b+CX2IbG`NFz4ZO0+dg-0ZR=Ge@gH7eUh3ZKdOPJJ%k0c;iH?qp zrP%gE;(Fkng%0s9*Btd7a@x6fcI&bd6z(Mc?&K)2-3@wRlbu7Cy6#p>t9G!TJ?+WW zWn=NZ5*EFFLv3=-aZD@8o}uW4p(7hZG5Fy)i{bd7;e_Pj zL^pgPAXLa1POTWG;YaLt2$fJqvfPByD@M%tt0LN1Ozy@A17G!wCDP0hD-`&wEn>UK zqU8dgwMA$vOXMl;eNTS0Uh(Kx&!dfnM}IaR0g4=m zz*Ha1L8Nd{l^pb4j_`Ai=q3lNI4NN{i3^^TPMMUgoRq&iiGMz+v^hyooKm%%QV*We zOqn89PU+m8(tAF&Wpj$8IBjS-ZOjjzHc6Q_t(-Q$J8kiN+G=x}tT=BVCaqdqN@}EGe zpOjWWQZ}E2>d%F{&%smXkm66$^yiW)Ar~tl@rUO+sq-@V^N7#$CC}$CD?ZI~e<~p| z*Ga-$C1W!VKdG#Qbbg#?5wP)!PomwQus7$fY;ukgklK`m6QpOC?#|z|d`6=o+gYfi zH1sBbY2`iJwE?kNj_@N6@)!B#GFfz-ETW{umALon zxBKGPXrY!EbUO`wg()`56rN^4MgZtHEGCu#nI(&kkcH=&FIG222WaRFvamKFIu1Zn zsba$n$TUl21PlEU^Tgub8>_vK?(p990K#twZ>AYyZ8TKemN!dGu~sgshbJsQ@#0gZ z*eXf*GZxdrCyTrzzvNKG+G51wL@{lI#qPUrBwxJwXd(K6`R)T&Oglz+nITqWCHw{u z8vw+T@1Y+6D<7V}U^9fi#R&Ja;c;ZK@8nkr6X>{m=;9;qb`-q(j2Aw~fV8pEHLOul zrDtrc=m(N;CJWt;#fFR(e!i1$n*s z?tA;{8>|=`K-Lg2m4NUJcIApF`V@6(4J$Un7JgABwu$}phJ|KPKHX3K^r=ns9Z&Qx zK$6r{?qLSc%N2Hf3`Uxv?dN21URkWYHBDYU0l^{$@6<%SA9X%{6du0x_a}ND- z!jbPG>^Sk_fd}s=P3$osJU|tB#D1S%1u18W?NEjqFoZu7-mEgjqV?ZiAz`-g*9`ue zi2aCe!G1h!iMgkbX`>*s3FvkTdW0*2+lfuz6f_CM&T-Lg1PoW{S!*(nwC`Q1)i<8S zk8Z^|ZKl}l3X;x)v$>*8mh)GcVuMOA19m+-c@^85{4U}0MB>$FS2$udT+}!h)58!} zDtL*k{wDO-dal@9K7aiq{%5TFlfgeP*93=O%ug}yKYq2ZcivxM?)tSlHg{VDbA|P+ z`>*Hcw}@LF`ThCq@3@ao-djDzsBp!_H~RP!H!ZQ3pZ|udY_j>!$Hg8!+KQb#w}IkY zZ$3P_`9%58(#}82`~JK+{b%L!pZE9wtiJs7Y1jC5{vTmQ{@OnN_tX6K%lu#W`5Q0! zfB66DrEFeVxf#Y^+jH(^?|GhBZX36E>pSa3H zcVICY_vZ^f&euMFb?nhb&CB%;K7R_2jHNDA-JLi8G$(##zi;v%3u8Ze3FA?i*|q?L_-N5K%D$UNeqmMd zP6nCwc~V-MZsL#jTI~FVDo_uYT6Qkc-hJi3{M2jLGJ}H?bpg|F+$+rZ$3HF4Pru#8 zw9XXO*fZ0h70`k}e5e&uHVdDbd%gelO5okN8I}qrt6gbFf~rtwR9WA=N#e_|KgAo5 zK5mO&4tj9vecPVt-DN#y$KJF{>eZ&f#WaKFcp(EhQd`3o=05K~e>E%(`h7**_~5e^ z?GHC{u^o}a*W%iJ#cJ;PceDjulFIf+$BkucPa_=ztO7RY6!S85GOyh=cyYJLaO~NQ z{l0{);V%|`9$T5L-_^L+GQuieoBQoUxM-PjVo%ZGi|4ln-bns=JK*6N&XIeO)2sEQ z-D4N55(ZYkxx%;jqvH#zwW`}!%`{b0URXaeM<~SetWjzuF*fMD&@lO;+x(m%CBI*V zNZACgP*_F40RyqS$=we$;eKH`I?4w}| zxHDO0nvo_}9@SFqu*=ck*|8!tF)eFC8?)^z#ZGc}{A9IBTBZtpP5iCNr#C7NilpZ` zUwe|jE+Q@_PuXS3Cza+jo%b#4FxZ)-lrl7QluqpbAk5_8X!%uY#j)9w;Z>5m zBT93B^{PuUwJ)Md{kL3flJM|}JSctK*5;dBSn2uKMb3M`)tWS8Yj~;Oft-3NS5?o~ z=c}fDlMdf_7UrQ+FK!r7m;b)%wbX-8Rra{}u%=fG6Plc(bnbwM%3t|Tkmy4<6;5o# zj;LMExznwpk-g(At>DflKbKwy*~CVdJ<)w1XHg$-fwqBhvw!ylwQ1k=TpiOLRKBC7uzS;o-OuE{W&bRR3K&g@Knx@(ej&rPOWyy%$}syp3C|5 z>AKA6L6Jl< zOp}s^IY5Ofu9Hy?lyu2DDqKI&S~!f7p|DIvTCQ7TvnX^myBRH~L>pY6-7&q%V2odc ztjzl@1_s88p?k~Hch#w8?pR)Q{)DiV*PO_*t{4%{DJv|E@Hl3^8X|eJ4DC~9lj~g< zD%GB7uNUT-7q}cMb9ddIl;wGLzq%SHZpF^{6i3y31E%Bj*}-(klV5PGZolHkL`RD^ zp68O5_bYF%JCgr&;Oc3$I&QrK#+nitsNPFDUXw#)2d|>yx&s>eCm)bSB?=l%>%4G3 zoiQeBg+~SsXuF?u@o6Y3x=4Q|XZ>?jXz8QWIpa*7!zW#X-bfU;S!8NGU2*nDbfx7F zsAwNQ>2^TVyS$F7p`D!L6yji%RzqJlY(ME9?b})Ys3dH=$jFGFY3Idx^>DNCfZ@ZZ zyena_M$`P09*IL=F1`y2w}dyD?V{N*>KRMwNzQ2PwG8FP2>Y#$254`ZjiB8gZhL%Q zi2BsK<`;C2&f2Xx%u)IXBvSBZk69 zJ249$+%sAgcX=J=?0m|LS!GzStI_gvkIuAZpK*2C*8v476^Lgt6gh4V6v?3Qr#z+iyuq^D2Y`2u$hxXKnR#=eA!&GK*Bi~QxOd94~}!?4}w z{&4s{!uL8$K~Kpt4IYSN0vJ{%kj2aK)HCT+-i+{1YDS5uL!==*8Y+sDCOV=bS%@7^I2L*IxhZ|KPoW1j(si$ASS#g$cA` zvNS{}ONf%VggeCRQ$j@s1CPY-Jk^MK)ve&zcCQ0{!yl%7O0Z`sn1ZqEFruMK7J&wl z^ru=2(K%di;u2EBAC%c*odwq;%Nx*MCSjw@&XKi63$4Zm z`=qXrGcgQS4v1UCRr1(nDI2feBTkMa%?1>{Ok9TlU?X>;()1lj=sAgW+|jZv_-Jdy zW|cLNNHtV`F_!@zAYetr*?K|z-gBQ)(s$_5Y_t(HSn6480Lo2Ewa$Gz{l5HBmr~hf zXD}i#kqcG!x0b_x7P6m%VCuRB60r_gU^L`vsHL?~se7(dL^Y(MEK|#TpausFO%qnq zo6li$z!*@F(%RbAu6t-t<8S{PL)TR$ZqIqqRdJ+spyC!+h=3wX#SFBf{K+FdYbv1O z3Q}j*f*}fEr0)sYY9YvU+0q8AQ>rjR`i>qDrpklW#xjvc!emr^j5R`?g9-o|lvSPfpixvz zd}1g7p$c?EgrQsZ88| zR3>eWZ(fEqI$f(}T75>D#*ElXNYf!P&$t8kzbDs+f4Y0M>G_Y;hKYd;+33PdFWzkV z;IQuA*WI4`-l*J$iuVe=-}t$7^#0Z7{8T+VA}kFfq+_rF~=iUVi${A4YH| z5|pokP3Ocx^<*>bopx>->Hqn%Q#4rusA%r_)%fGkJyVGGW)ypuDa;xRvtiI(Okwt1 z*wQi0(NQweYj6v=1;e z$6CJMvC-@4)0(L#R@iKf7sSfyJx4WPK<*hX*tEZ|-x_55Cc9?jH_W|>zH7wBJo>)r zluc@vt#Pu=u5OsghHZaSEsl_xwnE2s)8%K>ETXL}7i^7J`*ACDyJR(T+rVY4oedu4 zA-L|QW4mj^&dBG!yM(h{$QHV{P{FB{e=}Ft-TDL}91$ zmD-1BL)f_x?_8wk zTx{W-wJvws4cshpx?q=+ubQLkrK)aT{oWwknP=;g>|BM{#?XNaH*RU3IR4!6~vRNeP#RF_-oQmn*9-SJhp{oKb9=i&b-pOUpHvg`Y0h zgIsS!yWYHZiB+M{spopzSmK&u56#W`@(L0dT#v|ZVrX@k5yRz zu9OHUuT?=J+#dS<|Ag}T9GZbrw9Umkch)^9CVIF0r%H)rC=|Nw*!zVCUH@Go{JaRv zp-d;{!E~#fzTM#H_0}g>&2~DhM-bkRBRnGPNHoc|!1IAO?^U*PYyxlpUHJ-(X_;@1 z9ySMova2C^fqyAgDL?`7<~%_n96uv;zW3lxZ0wSq`~kq0m}f0)At1s_up44@=O4KIJ5tOV73+Rd^vIV&X2!J z&N%UlO}c;0G?#&6h)4G}-5>_I>tAore=ZL@!sW~r$yp86zZS^Z4vyQbw5pIPHNhQA?Oy=1%ZyMs2y zrMso`50rj;T^@18So(rvuKoUtF>V0!lL(BV?wj1x?x3Y%# zIv?7u%|?A_7eJREuKXLBW(`Om`d>L${=U2R4>Aq!ux~6`ZfHFc_onpLr#rm=Ct2+E zQ5!*}VM_f$sGPV>7@1lpATuLNV@qf{owAn2LUAMTB2%_ zp@b{zuY^@o5&xelum2B5K(Ug=_W~Ef>(%>P`5RyVNreByhji&3>)-sBbLD7zO$b?+ z36Ux5I!K}%ZzB&twVZk@a#W?I#+ZohBfY-vwHcL?nPlNoGWH_xZzJIU+VNDEtBmCf zoGV^J9obH9|65t?KaQvW*}3wsM7a6W|JevgKspPIfP%Yge;Wa{3j^?lg`l^+4h4MR zvS;nTR7wU=zpX-YDK8F{)EghXOKBe6ji#5h*U9Ma*S;DsC9zk~1-~8F{4oA=kxC-~ z>_jgKrJt?2@ZeXyEghg)!pULxGg_p1{}r<-^NI_wV!h0D{P+!K5R& zX(-JmL1@uLpxMJZ5Cyl|d*|4U?EPTSs;u%5~aVc9}fav8A8=97K^=_;z<&lPn zug)6JM!d>5eIw9bSqP-8=g0`{Wrm%!K(pth*(}grnFxH{6bFH3&&N0N^?Cm=f%YmW z;oa*C)GUE!?|=Z&E01XS-)r_9OxXW#Ls1urv@7ZS_mux;1V=aXMKJH$hW@Me>bA7& zM*;W#AJ>PuCWj7pFaL{s{~OV(GC%U4M)0R!Xa0@ot?Jo8SGE2fib^K-B6jErM)2P{ zno*lJ1OgvAeh)WaV? z_5L2g<3^nCm3gam(z~A;*Y7e4E}ZtZ4Zc2u^Q^r7IB>sZ;q1O+iZ`A}qy^uY3olkI zoIh0i{KivkhvLm=f}zG(I5Ay$^SP@oKkCc4#-(Q`>O9XSUtbJXv%0YqY4qpDtK+u! zZZ2miCz&o@2&^)Fb4jqkeS10Sh3QId-XGI^pR#ASB-z$TR3u+TZ`*mNc0%mst?$*x_TB!`obmG4 z*X36iPtX$g-H)mk=x8SE1)9B`pXVMOBf*(-be_(f1jup#7ROq&j(-yW>=Z z!%-S?Q@kwKP8HD;5$cL-yffBoDuNL_qNXD8IeWXIs>B7Nnug)$9Q`;|Tw}JXw%6xe zwN6#(n=2~%ai8<#)>H+WJr#qZ&u7I9)#RTvG5Pan^J7*S@~@m6zXp5?LATW^sVxs# zeENJ&I9-__c#d%uUtI%8Ktm8(RNURUcK%7MhF-X~V!+f|>3E06mJ>Pn;I*|2{pD(;GtLSj5?{)$ z8fY3`XqG={_@%r)R@1mqNIuf*%f(9_nkF|R@Gi>}j4z z_?21t>1_C3uJ)r-Q<+uY#~SzWng#KU(#*?$gq!@5wK?fanM{OxQy{j5lhu$}Et*dZ zAm~iyCS=w~j}v`KEt3TvnYBtH&0b`ksUqpjI!$+N3Z-SL^b@^)OMavqRcHEQC%wUB z{GD@5%XC#Pz0pb}$`R0+sVR7L^t5fG=Y?MqHHP1so!ejjVY=)tF}>bme^P&Cy!P!XW?q*% z`2I;R#Fv$IUOQCs!_=UmZ+$^Zo3om3K%v)-PNlngVcS~f$M;<8sya`Mu>HW9Eb^^x zuxz*XZrzjCdE@$@Wc}!G+Rx_sPrGj1IInf&*oTSdYrd8DHV>O+=my0|-0WVk*b>*# zyzttq>(<0Jjcva$(=_*_yS)1Fdp!C8gU?W6E(sjU~G%7c8 z%;IWnF13nsGZOo&R2~&bF$)E-w~bWk`+7ME#k`{Z9B`#*08o@Z21pGKk?$J zT6JRD8E-qeJDi7xyL}f9K2M(KpDOSZ>fH+>$fXB$>IH34R__y-SU-X6JIeV z&xMTNip?ALew?FXZ`^B60&+9~Fl5Hex*3)#R z0Gdd0pXjM|Xy3c`14-M1hFADm>-Rv*SE>8#B#KN2v{raRAixzxUa%AF8@(-d4SHR9 z;Ag*O+~-{jy`pDG5Fm((c1~WJ(YkZua@vt2)r}Q%Vg}!p0Rxnk9s~esF!icWLaREg zw~RN>_Ph0dzj0^tV*?Ad@b*Q*t?86c38#1HtW^EDbLZ|~so^`g(4C3*W&V6R^Y*vM ztDgI@Tk(}QYhh|QgSTW#I_5-n=EUIyw7=LU@m*jNm%q1gvbajM;cC*m#XmxWwN~F^ z_ocj-Ja=OLQq}jE;mv2UBkOk}yO)nH4``S!3V9Giv5f?}5-L{6;`_!I2cgYmkLnoA z@X5%dUjqjN-w3%7PyZ}L#qr+;?>$=3JNNcc?XQzp#7wPry!@H(i_$`{vYjX=Pd>W; z%jsJ~>er2ybvsRC@5a!LC#UNV?B8B`)JY`;VXA~Gqj4N@!gI9due4f2n!Bezt~>S3 zm&9;KW3`4f1yg13-RaUzr?tNAk8DV|I+QMGE$T-^8K5$@mZfeZTHW!Dc;>xxM^nc0 z{*0X~884x9TOxhYmhKoqr!>-xA~Ie(X6#xKe2PqOVx~rTCOs=t(m#_Ylew@z{pVDM z?6C~^9NjcA<><9^L#Hg4vJ9GLRHVWtS(??}zJTdZ+G{J^T@Q@}N_8 zenhS+F=yU8C$&4Lg?OfME;mCq_b@RpsVp<4Da&W%Oj}dl9{=2H{@FLyvztuwO8oQg zmE|$A&psrceK40dE}Qpg`dZ3T9Df!IKQA zP(iuj(SH!Vqsw2?VcLw1vV8elg?MdJ;i&Wk$ON8@k^oRymnF9--zCpTO{4c zqOwJ@;Pl~4quA-=bt6J$UjSVh5rUb`9EB;H;n(!iJhj&TBl;2;Qt#$ z`FGp(?_Cq>KOoA#m+bBTwrc#xlKo%3yML@2`J!0$y=S?s|ItP-SJ^*w-ssTZOZM>g z3sT$vxZVDz?bHn`K`yYi6Y6L7_Ojb7F(%U0xh|~*hf@OJhk9d*fcC5-e`4yzP zv8}RV3FOWx5YJq}s~mePLYLwH^{2;t{LN7F&L>-fcUUhDD;xbK`XZ(O`}Pcl@G9*6 zhp4lQv+@q(nKJm~NqsuO^_`TH#Oe9L@F$6j=N&6g>xQ5vkACx{Q_om=4yPfcBJ_N=7ffe0 zJH1#=jt#||FuRumk(%2fIpSqho8x=Xb|73o<%H+agD&d9mv(4`_hCKOsh2aS^!>%p z2bS($s7k&Edwv-ijG8`roK>?@liSzZTPZGdOQ^O)qGK5*)b5EAuDvx7R8uqKIdvq4 z)tLoN`)*bW;@7!$;%Zbrmo6ngCIcdFWbwd!-AHOWqIqZpk5HpiqOG5q;jBBEL1gik6G7>pNDY^V0HPK?V;)d*n+N?rc>t&r_!m zLg4sJ;_V!SjR%tk7nrfF*|Ki5-d|va&YOa{# z>4ner(t1IxK4?;p!7v)n1`y$1Y#IbkW_|&&@yWeVSwS!tE_m&vDAJ9jBw|6#;tR!W#9?)>)i?FCULboJ)TRQl2F2LXgn;*mkA zwq2ilk)BLyhQv0beKg{GXa_!QG)gd9{hyqZSU<8|R z6Eb1VLmt^-`vAL14LE5B#YogO*k!thBTHPfh7_$rSW>O zN0LQ?%T}NQlUW>45ulX=(B-ZZeA&j;CkX;jL|Q`o`cK*w294hl?#bM(A{!1IlFnR{ z@{R)CUVaqzBmU6NN)Z+a0=U;r|Cp+{jt4XeY4bed4ViS!4Pu>6I?;c5k$T>Xr)7z=Rm2NoG7zRLgrk3-m@$R=%$SAPX%Q-FyDlf& zyOJG%52-)PS?;CM&JfsC(c-cJ{9c*svTRU1ht`k$O3Q+}aYc?}!4@nnZO4o?h~=m$ zBmiZ)U;f7o3iN3JjR45MW`Tf zr~(Ly87k%m2vJC#aI_v=9a{_`$wEX*NN`n>G{Up2PduuTuD8P)YFh?EOFlq#1%MTa z0+A}<==++m`6p%Wu_VJ7X3sS1&5U+HBqri%;=~YGc&EaD5LSeESu6t!K@Tt=x+Jb` zyFi7@7hfT0vV1G9lHQtcf3Uml%TcHmnf}ow107&vBbG%* zw|S2nS_K`b~|caJcnvVbx*|Fo={J#2B-db3z7frN1C z+OLTn)Zr4;s;1Him(~3g_s6iU7`6lrH7y5NB2Lu z$0C;I_K8a}*)A^`LiTdK6W;Urh-hAq*ccG+1N0#imFN!J-=2Uo({Oq*8M;6;#Fo+5 z_B_esPu5nneYWVab)gJ7QxGL?x=m~k1*R1=y?V1q@GEnI6sTO3E9$ajHff4Jb2H&Z zS1)c(Ayb7-E!By6k#dF%v-(SOWn9Nv$R;KYA7l+z>4soUsZjA@0O}WUMa+f+XK#BvA+GmaS?zX|n>toZ-6INXOdf8Ocepy&A zdSK(0L>L>YvqG!&=2@pTW7GNeDjA*}0q{kJYk5bb%{e>xV)7RV=rZbb{0*&%w6#mn zdz&a$t2EO93)Q8t5uPh|&?U^27Tc3(Yg(u;$=r%WHpaq}-jM$K9Ogqyt@2e1afI*p zOR$sLYfRNQrUA36Dc>aFbO!+f2f{Vdy#ZLHH2itZp*!Er?)wI6s$!304e0TT;#6>3 zBMc27yQo4W@@eaBNHoi-?@*w&Y0kMwaRdAGE_kl zMq!X-sc<7Q=*T-@#e%U5@g7*%gGq=92e9Ho$EqP7R6PN36JjU;cK}-e29wP97=U_n z!_XnAP=8Yr6)xaj9u$Y4loA|W1M*n7Wj0luYj&wLM25X@BNHSagIgwoVGSUXlz-g- zbR@&X2yilkWKM;vQ2=>b@(>CN*$*k%52hJzlcpryJdxD>1fo6zxD-SGvNyDWz#Rqk zOFkj^P(;DaV=zZH;K}pG@y@Bl!>oa=8;)QpJ@yI?>Rk&X)3D*`5SdczYa=)W;gFCM zsKzb~mw+ZULVd_k(c%;`*(_WF&U<@~FaY{s8RcORFIy};E_JsY@%m)`6R<#;1M#6k z7SkXCm}1{{BMa{NaVIym2zaK}IW;O?bJ@ZNh?e#AIz`HOS`AG5BJk{7%?wCx-(D60 zZMF^6-HkMs^r>||+D5{#s6t+JW;ltRp0< z-SiuzEEmAB<5I~WnS;JW1Ldfo3<2InMNxf>TN#3{2F}8wG5lkIycSx8VkgZ-wo(wX zBxD=20>>n!u+f#K;APp|8Wg6kDNctMhxV~6Wuq-f>MRn*FUHVMNa`gV`tkVAOASdx zl9n}HHL1|}&~qX*!50cx07)y^ zLFnoIQyTDrR~Fa3jgadJvRQk365YMYpbi<1%%X~5<24AHd5%76?7UhdV?Qj^Za@4f z60`^Q*L#psq>&qua6H%rHW2|H*E;W@1J@0J>Tn=RT+6#!?zKpgZNgbC zBj`07XwnHy>lm0UDOlD4s);gG7Qm7a9cQCjX>J5?dUD%EDbD(Wrvsk=ty?LXW;fv@%d(-1dD;L??jRc?{OcLF+Ifx*SM53DXqsbFkYR{RPpG4$k?) zh>@TLfcf?_2gwfwe7X&4j)VFc;I|Q^*juP18PUZPvW0q9+j+L# zgpD6h(j);!f>~Gu=xQOK=2O< zW&S9-*k9YxmEscvN<(4KiQU2!eN6yn%f*i_Cii}BV}3asZs-=ibQXQgnM~+@jsm^0 z4I<3=zNT9wpun2cZN-F?*=jg7L1NI2`Y|AEKUP1Zz=dL;X%1z0pOXigwn1Uh4W(9u zZZf&l;g&*9>2(uteHGHS09WkSuM|DMp7zA<_}O^k(T~DwVOBbP zD!jzJ`>i^)NfJNt+e)PRMzlh~z1xa12LT`8zz;{b>etd?9k);ia131r?eIJURh6`E zFSE_Chhnzz;8z}?+X!fc%xd$ zhSE&Pgm0)UJ1)1+%b|%FNU11i8!Kj9+G7lBBco(E$X0et7ni+r46Q~1a{x>`IkTRe zSwlsk`{6YlD+RJ0gJChd>iq$84(gjjmW?ZdMM63L?%}lJ z`oy6kiEv{YB%wc#uEW4GK`$m0W^2493_Nzn0DeAFWp0lLO;Mgt5aCFGn!iAaGJLv_ zzJS)7V(vs5!S*Dj>hg>%SZC{P_a(QIANN6BoSQ;sAP1a54{D7*cW4w$)ue+cQ&*Y; zxUTCK5(W0$F}~&q#R3hcMh(edN>xa3BGW{kr*<=586H!o`x7E@Lw$Mj(uJDvUA2Hw zn1y}Io%B60)risXBIp+9W{63;9j8naI9q(GqBR1&d=;P*M9K68RIUp zB*i82T=#~zQE>{l4q{vjTE#s4s~Z3DRZr6gm^n$!Q63V9hdi8)^x&4vC0P~iNcU!q z4zJ$VY4VIv_3TAtxI_d%BpsXqObZvZCRF-U;Q@Tg&LEPd0uq5=&8w2;R;4oGd#Lar z@~jsC(crRkS*RS|?A~tlThmyt9)s$GI^ry$Rua>82HHxZOEHA%g!b6f5zTc?#K=%R zd(>VkREdh}WDK>%Ajc2v|9W=U;^eh2P7h@onlL!<=#D&yIBZ|T1H(?33C+oX4U*Wc z>?Ngzdfh8E;JzP%hiRAxNfSYSYD>o3$CRYYK~tRJt~@YJwamiA!&5-ca)Ampk(BaD zNNki-%j2=$V3kYHWm$y_aWxFQ)(H9;FMr4;i zjM{ko!bjYMfB>Z_oezpnb^aUwysv|GC5Xs!O9R4dd>OLN72 z{|Di8d5VD=Yo9N}y7K$JRsH)*8Bf;~+C{Jskt=%VbEbNP%w%|A3HOW~1F|!y5^V$? z0+410!JKpi-vlB@H7QnwZ-pw~Hn^P4?yTW~Tc@{TOhBCqp$l<2ZJcbyFR#bf&;cpI zLGHz9-eWo&*vn@Nh!!8aelU(1cbI@Fq=1hDNQT!CNb(c!r@og5zmd#M}GnuZv=mEuX#{~NAR9KFxZ}RVCnpOZ2B#87cLafQaChX zemvCG{g1`QXN8rIhwjY^4rcO21dB8}a3%EBmxoGw!{M%6=I%u8#>!G)3B@msjj&&&w%RgbW3h^)flp+hQ25>!5ddZ%qkAyxBSd9*-wl}Dfu~YR z1^N8K0^Z1n7(J}gAN+^I`e)=4Tq%k!1QFf8Ufk#o*78*lu&Cc^VLBXDg+hGe?4k9> z79tbYWurB39RA+D##P6PK!36HczGQCTI)HGWB3}`4=okISDXh@F+we5TkT`88k(`9 z8uV*GmZ=da#dwqa=!YEnog4$CaHBgUm~?XAW>JVX{xL*N+sMx6sNatPAxstXc*dv4 zR7J>0L&5%fbY=|5La>@uLpcCL`)Ao_TFR~zS@c@Nr%M6%>=b?ryB(PE^ypg<53 zf-`BKK(Z)EyJFCfh3?`)WhjUaD)L0s7sn7+edYsO5=8kmlzwLBacV~uRz%d8MCNeW2$;A@ zHkBYS<3PoX^|)+uZ=Q&ig&WGiraxVHhXb1(vNT+vy<2mDQfFTxEh|h)%#J%add_5L z9GhUMGI|zf5dHN*VaPbc9+MiMIQ`DM$+O<0e$V6gyW0Y;A9?+BThvI7A|{GUE#}%6 zY&&MccryTlTs|DeluCsD(- zNmF8l9iDoHl5X85jB_ia<(wyOmDFRH=%ala+%B6u_!ApC%h%fq*JM)%bA@5>L~2fG zN$p^Zo20`ojtaW8ejX>GVj`v+ER(vJEp3HC4BJ z;Z3!@k21IRW%eG)-t_7h_;R`w1%(&M-yPood>OCaz~g5JXeLki5Oin0?v+`Yb5}aV$c=L6}QG zs3)5O`i!w$E-kY~b*zDya)8)YOMnuXwt3dYK}EzfK;S} zUZq$75fl*+siB7w2tD-Bs}$)yA@mwRI?{wt6%-W&fuJIwR12b@fTDm>rPmz3|33T7 z-gDZXITz<9lZ$nc$z<02-j(NhUzHa^w1y6u;qey}$7aczPsBMCd&iW5M>XzRd%dX+ zm1+D%zF$hc?kQhC5#jxyQ#+u(M4r`r`O0~28u&#g3jE?rlOs0Iv!O}{zZ(p{rmoOS z4@9oL74di{%#4$wq1!{fm+Xd%V=^83_?l+}-~xX9_6!Un)3gkn4z@~R%uG@KFM^5w z_s>YosEOuUI^VCXLw2>vdZtBwZCA&1ET#Xj&K~N zr?0EnnwAU$UR2s+XkMJrlcG6fuq9Kx*I#m#|1Jp>Nm(fKEVFL9R}++KR#T!95tHnb z`NggC3HkDcj$Ofj)DMyu&IbN@??de~+;99J#qp_9(2XVzDQ}a(ati_08a*w*U0#Et zc_ogj@GZm5fd^T3TSDq#uocok^%|vjwub*hiVjWt@6s@{d%Q6`hO&1f%S!#*G-A3C z_Fn@Wmppdmm(`MG5;RJ0f8R_nXID=YXaQY*gDhs?2WY`~B-g&I@^r!mO?)SE*(sC& zzk_gBVZ-r#-P3OH!DKQme%^Jm=xq&h^$m)orz;|}9$b<#@{7Y+%sQPb-(NEjHom}r zb{~Z@Nx<)DRM6zz7A+0()M6r>p;ft!dIJ27X4A|~X$fL6a|6-9W^o_{22bE$#uc|# zZnB2Hcy$RWQ!i7Xfo$jJ;-uiNl;VA{ZJoh$W3-Q6BDKy{Xnth~NbZ|I^`tQbZ)*Mn zT0YeGGXY^QKg#6FoKH@_I4cFUcU7lL)jtnv(kpopxJ;ZM>(|df3vlp&g4Z^-JiC+8R zLZ`I!Ci{V(Z*{z$=FJ9UDF0t@8maHH8_OB>bo_bPqLWeNfk_3#yiVhymvKgfS+$6H zz5ZD<1Gc|P%?eOMd#eD<6LD_$w=XdpX%dE%MaNvv|_zdf)wRG3z^#SC8-4+`4ru(q{UX zMO)|3TYk}pHnR}R_LmoZ12Q6Q=S3`^y>;~synAT7sBPKtzQ#BBex%*9n`P(JPv6k4 zL%a3F(0ZD_qOjpe`z>-o`+P7y;_IRP-fPS5%^JVxl}Lx9UzR~_F(7m(A9w;5_ce&)C8p&u+19$89 zCBI}U`8GT;N!B0ki3Hc9qrJ?sB3K*Uf*b9Qy|De(6RqUn`?sRKZ5OORb^Z!&jz0Fr zL2V{qiiAAOi1u+2wfX$kEu{7Cv5$w2&6oG&kSF(}Z}|kOPfh&_Y3n+^<)36T{X-=5 z*>JRPP_50^KW?F&Uypsm`fa{#l0&;zqWz*4Y-SFBh4vgD`{ALsvvi_i)ZVGD@OV+% zxijuzFVCL%C#&+avGu%&S_uI5K z;^Y08;3jvwKQ;>ypSn(hTaxUSokb%*566T&uC-h7c8{F;8WVzfWw#m-8~Jr5CiMA& z-CE>A0OusNyCq%l|a%dAwdSn(|iQ+K|-UD zuyiE66iMHNJo6mMFoa~BMlvlUnU9bN1~nFbHC72VHYGK712qm?HBKKjt|&F`bTyt* zHQpvQzUONELuzNI)dZH+1dr5&7}SON)z3+&pI1`9V4!}{R$atLT{KEvEM5Ilsk(TR z`spl!#E`n=wEC50^{YqfQVbf`_%);@G_EUY$QWqI+G@!8Xi#rNX~?H*+$_~lXwp!8 zuAwxfaVmJIENiG9X&@Oi)%Z2lB{VgZG&K!0wQM!DeKd8VG*RiAx}}l z)^a$~!ZBz&@@qRuXge!uyBKJ@+G@M`XuC&gd!%c7mTG%7X?s7{_8HQ?HLdNttnGKC z?a!bSz^`*#LMKp3C&)l2*j6XRM<+B&CoEkjyi_NmNhk8TPSlW2^t4XQvQF%g4xRx; z;77$tpomJScmq^|Eh^Cml@x_aPDiDbqEeesY0pvA|DF4B$3QpFRyW^Aw;)QlFkQE( zRJXWEx8%8Q>5%T-Y2C7A-SQ*d3I@GO{{QHH=#hQ&YNPb(()H>~^%|P=8lUSm{SWu! zNUw!K{~^ErspZkCr2p7J|G%prQTpxa`p-)BJDT)6pX)y#((jtq?_SpLInt*v81(Z0 zOZ}+UF_AZDH!uKj27PAwuY-pAHQx@D8oYgOFf?Q^JZ&(tY%qFcFvfr$=SRPjK)+W) ze=tCQv_(&xHZw$_C)3fNOVMBEdrT1uMs?_#=V)L6{Z&)%+t%=p8JRbyT^RQy41Y-I z%^QqV+8X|1&|8QaDNi?CTGsvDG;;U3;qs8~%JfLdvf)~j?mEM05x>#jbluHrEfcKK zj*rpq9RqTt(Y}jOUCHQvlhI+6(b3T8&a}~qtr7LKIOFFi&G0DglhMs63Uzt3)&_In zgMlWD)}&$J<_h%6V~6n=Xdh;O9&`L*42&MT3Bs^Q8nY=Iv!jhU?2I{Y8FNJ&b7vUy z+%@LCZ_L+atoj_o|J7Jv#aQszScuU?_^in}Nt5%+CKu2q7wt?$ZkdQin}}tYT)Oz0 zfkOcj{PI8AG628;;6U^L6QHEsqI+rR=La2}-JI|{MZ_C8mj1HGxtCda8Qv$+7O*QB8kXdy!SRR(STnw#zb zs+yZx`tB^nw-#l8#0dlAvvx#m_S(Ns{R&##+f+<@t3E zN_WYzaD~xr)VyH78*cT_n#%roG&euVf(e+m#33MvpbE9`c39(ZUDt54P)GU?$g1w5 zS#l}qMZ!X~l4bxeosS8{qq;QYx2L*JwHBB~K`FVHA&Ut#!(<%+if2YDQO$m8TmxE! z4ddioG}Iry_Ts+BF0Y{OQ_ji9S+8)xvfkl@rlRWMn6`}wgoG|Q@8X?_so-E{4f+%M z$I->5@!X|BOulABkhfN+I)tZkn4{@ujk2ltyJq#qeFLc2{}0JPM>!WblsVIOpa z09_sMt!6f3uX)Wjc2A-2uyDCa$9DRk;-qHooOlzE8iVlqpnD|%jux-HDjd@nzS8IXpBN-Hcrh+mMM?%^5XB@9SdxH8U0DBO1QW2oJnbfgta zb}3ofS#oF6Il7|M1#ltr1A|&)NIKPH_MaG7lnb&0wvxbu`&L8^!G8p1S9S`R)fffT zymIf$yOP2I3Yg@%{>dxN()XEZef_V`P$_xz*c2n%swpU1?*o8~@XnOe=;V-P|3*KK zd-3C3FQbBXi^GFRO>XX`!ygQVzdjXqo}$_Y4UKNN4Afn@XTSQ-URACh6jeRmo@BP{ z`ekr4mVc|!{pv~FRG{kVz@VjB_uu^E?JlqJ+N-KTVqGzEhnow{v1)%5XSxmt(`HT} z+{Fi%e#gWJpV~456o|q)0r9_XdS<9RMYaFy3&sD~GUs?V{vT}_h}`$gu%UYbe+K$h z4mPsz4AuY1mKhw-R`{DuO0T{ks{23LGXLu}mGl}3cip$vzgyVbhb~?bu6k>K@QD5S zQO#-7vw;I^Yhj0yh;-;a$#uu1=xw}+bd8mP7gKA|$WV=J>@&2p)AbU{k(*rSzCnOO zZt0+myUfR%=n#wdcRvNen{ZJ5$rrpkEy?I6C$6`Xum5rgJ1|}r5;+4?!&)Hxx|-Z>G=3hsz0;b% zE#YzV@|W?DiTmV>l3u2fU!I<#+CI@MuKI7Szfj2&Psx2N9>HgN#Aykx2?Syz3NkGWApplM8~tfRo^F5HmfHSoxK?={xy8o>*qc_eVva#J|ETOu#}I5GzAb#tAxB)SVbF$addy2!MVf-ZIB)Zy;CY!Q&=dgR1) zgZuUMGXK+}ag9rn*`EnP5hKhk@4FLZ$LH{-> zIrva#_@qKnl0@xR|JaiGq{$uq$9n2uqJ3nWXvGNF9Ugq5FgEqhtpDu@?pFfN|ecCp>;v0E5Rrpk{y&t`LyX0_s(Qr4v@BV5?=i%4& z%(myz!>i#_hu`)_+PZgF79uteX8`7Q3e<4@=%8~JX4L+IYh>M1Fp6{1xBZo<;YO;B z?R(~)_SZK?HZmhiM|i0113HF(b4sE}bbCv(NVZ$m2h_ z(TGnk4R;=u*eyD%c7FLZ5|Ufnwc?-EIn8&n^K9yPHLO4M>*mOA_hIyOB(-xEY82)M z?Osnddj8!rdaqCMWP>yl^y9q4MzZP2-<>k0UpGegNB&rCmN9oN>iD^h<(_QS8Aa!z zn-3;BPqtfe%FFIXha+#hciKmfzxy>Gemm@5drs|IPny}8Wuxv5P&+nqM~{B#MDLGe zb#Emx9WU8X4`iBEcG^axbG&;FXPJAbeLYuC{+0;N39I%Te2U%JYNZ~p8?_()Frpr; zMV{=8_MFUQP>&C(RQwHu>1js+7QZkN3n|3Yd-%ZG@l1R8XA^jYJb}H=ixo@YE+kZh z5O^mE0`i{xdxX<9l|;_C3t@3$1MVV)aT1epeoy1Ba1*7mZc_3@xiI1%5qwypLw*ub zWshk8%TE~=uZfK}6N%R@jMocuM775o?!~Wb#bD$U&WRVUvkE$;s`mN$tro)Y{}s?v(q`lpJhIwIwmXFr_CcrFb%>y+5UlJGB{_T7^xm z(@7;4rdB4UHcX}#_NPAJPRoL(J;J6XyWf&_PYd7i%BV}zPD)c)NDG`ud$E_MFzIoD zGrg}py#$)>qMbgpXWxLx!0d*g<#3-+IHSajsk#jP*BLX58M4~WH{6`ziOxS3otIE9 zf9hOTV6JPh%nh;3pQy|Qk4$i4=5}4?;Xvl`VkQ-qMRO^OPB&}UBWpi7i-w#99n4}} z%3_9-ST2#+bV(eZBzOvGJD8ro-W;5r#x0k1l9zG*bH+uUOwmg@4CI_Wt(?nNq)YJJ ztKr$#baSs4WiwGzauM~ptb@7iOSzozJKWDm^n(rzm+r`>+_|B9hu8CtmM0Dk&$~Hz z$8_nAv8RKMZk}R&p7LOx>Qdfm`GkgNp7~9OvrE}_dHG(ttnSb9efRVE#`FDe76hH5 z+TjIP0!-<%O;tEdlVTs3yUrlRt^@{p1K+EqMDS#g!;mI&!R@%qKEZGttmxMJd4`~ zi#nHzScQwBYQ@i%itoWoy5PnA@KT6y>0nCnaD8#}VDZaKMWdHW#&t_RdX{`jDfwJq zGBsE-vs5xiO)33RUkdIm{kc@S1i#yN>F!tE(q7NfKc072Qtocn-`yU(ySsFEA6|BR zsf?;yM&nf$W>o=+sDKq$(05cYe5qhMs6g;mvMN-vTUT;MRB{(r@^)16f2kBWs1)L@ zI;T)|!MaK$qDri|O1z^=;!D+)gDNTBd(sN`WUTMWMck7wzNgS}PwC4&m4kao-fDG) zYEA2E?TBhrakXAYwZWHa!-HxJZ;gpUjhS_gMMMp@xW>Ap#`a5%{Xq?mm+YiKcCjYA zMUXv;$zB~~pD$!zdfn=E^6du20EOC+2KnHK+K33*@Q&J;2VjvDKZ^(nFk^n2X#3I=du;*^BaWnBI=7%1&ccB%ii$cJ*clz;H^|>AnWneL^L#5 zbJcrk{Kv_he+yE7|7$@?hY0yskaGFo1}V1FB?shLF96Z&I#BTsKp!4d|GpM;?;qz? ze6-wx;AHnq_7tGE?)_)U;eP_?KUL5Jrt*d9V?yd6x~N0m#VOqSIGlmmwi;=AO}(E^ zxWX0F_Q|iU={{349f%!Mi^MT_*jz# zF}ah+p)bTvXKl<-{W4BW1SJe`o872F$_SCZpE|F5W+2HZQ3Q^YejY~v^;sg=1)O9+ zEUaLf>?kHjAriFSHHb?m-S`eM1AA^SH;k4e@r65!ZQ;*Y{ zLGs{X+4u$qGy`VTE~W$7E{JhAS^&jAz~ak$O}i+RRygH?npW{8PdlHgdLmntFqB-F z8**AZz{GK?5@?{#JA$tHE5zr-JJC?`01UNdK}!Xg)5v3>xzVV0-7H=`lJ;W*OD^a5 zI-mMGLW7TMjh^$@nuiH+B8VeRcxJb3<2enpJ9*@Z9Eqg$K>rt;%C)&U0|zd{@LOV)MB4d_3#zRHH@(f`Z|^ zi%D$kl_Sl9elI0DJUC?f6vFQ@ogLG;I!4(0wbkl9?!f$Hb2?PvaJdNl?Ram#_0I8r zk>fU6gqz8-plmQWX}JWAoYK#9r(8(b#*@eUqR|N?SHBr_&)}zFMspf zhia~b4xR?7zXcQq@~QLs@3WNB1%pFw3Y$e^>13H&-C-~5&ElGy335i)NT=OjC5U~p zd=Jk^Kyhp7FLqId_e;aUkJw6?!$ogCw9+>Lgg76P5>#9XRHLZX&2r$_T@|V~Mu2Qp z97@!wAEsd9ubloDpuDJY+Dwf%d|bf+UetmY8^_b)IQN(9{#83ryjA_L+5xY3Rs-M5 zBr@s^-2bT^*dhxuE}{Q>?ZCO4`_#D~mWgJ*ytKAWneP=f?Kd z{GIQ|$Cg_6&CL}*jhuU0We9quE_a6I3svRSQ>NZq8bNOn-$p`OXtVDl63)D`0?|I+ zayb(~XrC68`;;__UbU)vtMPkvtV7||gP^`DJN}T}#F;0KVQt=d8}G)RU)OAA_{jIl zGU|iSsxm6-hqwB&oVn1}SyYUvhuy&{SK>0q+gM}vZ-<;Nlmo361`b;`$mPqFtMM(` z{7OpjsrVOXdZl8D|JZ{Xzf*W7T3}z(Y>(tLU(r9ls{ZTki?youcuwC9_OG4EMhH#T zv^^=c;^I`TYIP1$%Z7f~^W=D~wwHBv*MO75RH5dvj`CUJ**#n;Q{bz9$Q6em^M}b- zBA*Q?3QKFXm(ueo?{YYt+%AHv|B8QJMP-dkc4V8BA}J{eGt^B6m|h%@m$$5B6q0)w zwOulY>rD}=~p+WjS3Iol8@3=h$3a^CU#vewCy2-2 z{e2{@_D($gLG$1`+?=150ln8kU`cljiRF#a`S$dJ5KT&g&D2EP$luFfFkm(v#jyzc z(9ZF@zGjn^tZpg;FN7Z^NXR@N_(hf5xet98FWc_)Wi2r|_NHVulaAttvEC5=GQ1z) zGRH()58{Mndk4@VSsmMDI3YBEB3_LN>k-H8)08C99*VFTc+9K908wC9Tr%SBK%O9i zB_0cp7b6azG}(Bn%k=)CC4eX;V~Hrbia%mXo5Eo#B&{YjHel=(H(nW{3kWfIa-;Yt z>-0#R@O#`TS-VF{5HagzT;Ws@_FsK++Am1Sp~Ue$qQpxqs|ht=H8{#zz+^fh=Em4K zUi)l_iSryYQ1SA2+x;H|p|g`-qLFMvWghCdIfNbT<>ghx_LcU-<$P$zFOBXW--yCz z_PR7U%f`Uu#v?Z8mgiL7Oo45YbQ&Oj@daB$MWVFg+23dw-Rx3HqHOityB|hAh!!VL!?5oLf!G9kbqf;xezP|fKc+msgRiJe6T?qbn=Es;8RFQk^@=@ zs{h)Th=E5#fLI7%gYXPl2U!C^0M0Xr=IByCpEBAWk&MtpNkh%!d~HJ2c?IN}^B$4EVt;Av`h8 zYaNdEk5_Di+?Y%Z!9*G$gGB3GVZ9)Ce^?R{mIT1Zm1tpid#5 z24i4QFK8MDN4La_?zuO#fT1wJYaJxD2TBq`*dQS2q^x8Q=Vl~iAt_8B5)={wd&@;y-G)XbWlJR@NKz03yr&ff+D!cflK&ir_J^j9fx_`I zXiAdJ7)d2GM!=JvwimKu5wzCoS`*?q?T!G7!T>zI0TNP70r|rKpY|kSF~qG3DBvGL z>jR52IIIQ*w|nt((OQH`0h> zX1x3K{Ffl+>+ohNm^+DncOblX&OSc`dTlbW3{Il;3~H!=dISFS&jMStA&BrSaaeX- zVzyvD{p*`)^z~q;F~@jJ5&`b_HzC}M0vV)+Kmbho!=0QToVk!n`qdhGd<#TY7Z!ZO z!D#lj)w+i_9(;8d9*BxqXaj$~gdmRHF+k?bYuGiSU@>8^oCb?CN42EC(t=4{*Fk{~&ma@^u`~ztQ@SuB1r#OZ=Lm&3l8Qhc zUZ=(EY3uY~Z=RpzNND!IhXeebFz{lFP)Gl2<5~{`BoqvX?DhFZBA^CR2p41xXuNvk zV-Xcrj2zsJ*`@ z9#MTsx_YvJ-k<`!@CHA-Q-;Pgy93ESMPMf>1dsxKa|z*0si9+mwEwm@nuTOtg2sxI zUFae05vNk5e|`bvwtpiq26juOcS6;E{c45_I}j%Se3pyYQfvx63*5SV&A_{B&@dphcpc<2 z_V^5KGp%ssMqcXci8zNn`lOcNtV_kjTIY`qu$z|=Xxb@^ zt~&K`nF>!zlUwBn)6h7mSejrBh8{#?4%NIb|ezE+z3x2fseR}_;vU)?DTz+xFRBl4_b_e7VN-dE0T87damm| zW7`G2X%CFY*MzOZx!*u$IosA65O%m=&q!zvf~d*mOI`=zT43?B&FJlrj9rjh3oO45 zoZL_|b`#+w1W|a}(o6!Ib8?rMHf|Gi2R9qndJXueJR+HgQ74gL_ zk7IGf{qg6cHcoUK?q4U&a1;>Hzo*C|z4*Yro>WA6eaBe{n$ppF`E=h`&udz)6_icS zit=&~jnVh^oO4g=%oiFr@7mjTd=G=iwL}73&~FV-&fiIMZvf}J;Vt_U9CdP<{d+>! zZyEPT6fXupFz}iSg*`3w9nSSHg7{D%x3|C~VyLIjm|30>K^7hw?CxnkMxr|ah5Ppu zXhVMY7dj}02K7H{o_#}>8v-by>vEu!g=KfH#aqa<;h?Q$~t0Zu?*_5aH?8 z6E_huJcnz-Au>n-@RZ6o-NN>?e1<~; z79<=D@~g^qVPyQ|B`^9|$pjMSbDJ$ZoJ=ny>XFwn;gRw5W35BI&=)#K`hv58arFp` zMDNR@i1La%&dP{l#({F3wdlrhCjt^M-$yA!mxO#1a#b`iLKNy88H*H6(E=Fzx) zFiG1g8iT&omGqUlAGd#NWGH%^x!0*V`qM4+t)ZQn1d)K*;V%a)U-95T)U_$?5T}$C z^^K=aQ0zn&WjurXlu&u~1rHIbZ_i4@#YZ{Cbs zhhA0PLX~gn^=ui;Y#9n}#jXF1UEeZu*tUq>#>Q@&mT%jtZpE%|+c0n91b6UKJ8rQ% zF3p=BJv*M|n?6}PDylouemhR8yEwmHzw+IPp53UK-5BOwyR6L^zwO(Co6bfE$=EGI z&tCe>UMBOl7IiO2b^lJ!-c^S!VerE+*o%TdO z{Y$TL;{A#${^MkPb!}ebw?2p|s3$axgB_)#s9@vKTbxAAw)R1Qh|SA{GTbtJEH42Z{M9+h*E znbtblc=lENCBdriFGaFM3ZM>M3TAL;^<3rXllTFaMNE}ehJd8i``JbrK6>%!4!7QS z8L0dAeO?dGn>Co9ArDfK>tt**=(EIZvH6Pi6S2?T34Cn}7O7W8<-Zo*uCxbyF31FZ zCexh}mX=F5{unF_yQWv!5%sgp&H7p1^^PZ{R-105JAU7O{#hsSj?|z{tG%zUxIcHb zV>`Fv|9ANF<6AQVHY~foUpT`zcaHf&{pX%ub5gl$yFdOxUsUk<;p5A_8r}lk5#Qqw z<#MsBq`hlrf#hp0d?F*A*`(mjI|YH-C-x^tO`%wyNsI=onzSfqJIaYT;4e=EF}IBU z=w{ywOUPt9IM))-=s%XCa;DYmfzaW4W95r$dMFB5W|ZKZj5D^> z@iJl45zYh7=tW}aOwl*D&Ego-G0q>l$>%iU%vy0DyDSS5#Ejj_wLZuKF3~{@@JE19 zhF)NvP!n2_f9g8*J76OiW4Ln4nW09C}YEL@(i^4JxPcuZV!da$b(DE zW`dUSKl4IAOZok-29m7<`maZ7vB?$U)P918#5@>i1`#BoI5;hxXW=lyzf$l~48OCx ztQGP0+iMP}z;ON8pMiinwIc{HERYMXsij#E?USKd>B?~Cjsqbau+f-w#VV{wp z^CNqcV&6qL-wig>Ic4LgeMJ?V&XRPssMf*+<|z zU{~O=7d7WJMX+kX4ie9EVF1G1j$l@~8h>NXj@Lp6#JboE3lAi41G5l#O9j0T_snG^ zkQn#aktPrG(v1GQYI9)&J=1hDtdR5~y_A&Z02<`vTu&)Gt`HQ0F{?#XT$0cel5@n( z*0;dar0m6vZBPJ@!(8h|H4ES!1?Ex0kU())GF|*VKXQ=7k|$K;bXJXXz>~V9M?k zil@@iP|jTdUZNmBv->p3noorYN)lCP;2tHMu&2q_C4?m0xT_b~xjV#J-qKw*y#UWG zDiuk&#+(Ygq;*+`Un^5%`8aJWM?<0{M6s5D=gyw*ujjnFY8v}9o=f55pkZ9sbyI?Y z3*(QlQE0Iw6Q2~((B2Ws-0}#N#0?@pt#}1acVxMR!m~WONMKubM97mU=KwricG<<- zd{`PGkntn>rOmYCtp#}wHCp&lKMal`UWzHiGjeO&|COi~)dHw#?vu{A{5I?8U{TQfC@nAR{kzV~oNN6uqm>=S;_i#FaNodsGm!S6@8DOhLiE2i z4&)1$6){<=zx?(jy`Y;Tuo)ecYrjoic;dX2`;>c$`-Cd;zI%7L-240^dk|Nj6<5(! zBA>w>IwNcxs~nl6@|{&7c~b%Qpd~@Dc9tPc{tELB`n!~mQ*L}=pPu?gV(f(W4F@RhVLaMs7W44ov^%WzDC5Ju}m7 z86#cVE;HTAZIzH66F)QLJfXLi&+j6`2Y!2N!XQTRrSnCN!odvU=J1>6vr3BC;X|#p z^1~?AYs?WUw;!~|EDX8sbblWE`#CU0P+3WBs&F{hp1jmVD+*C`W|VzzeEStGw)ktasNOjh=k$TZKQ2 z%yG%#SFE+sma_>O_IBU`O&VwJw6vaeclT4g@W%IHjn=!B=u>3hvM59?;*=dJpSmy` z(v~%N)-RpX`T6^UCwar@wW{h8p+8SUI`@xP2yZ)Qy&m4E>}>MCw01a~8MTLE6$q$E zFaFL`wAT*qUQ8T4{I0Pf-*x?D!ywmoN|mtosCC&t_fy+XUY`B83r(IyJ)PhAj2@G$ z>;oI)Pa&6uo3}j$g0g|=iM8#N(euv&tGKk57UUw{KlvM!t8@1JkXw6h(Ut9zz_aHp zb|W;O3hcz;qla@wLi+~=xElPXmc88vCO@5o2wk=PaX|G|oDNtG?)YPu6VosMW@9+u z{=(VyRF$ZiIp2+EqIL?Sx}$N2kG-CJvg`ZW_cTWM{C$;Y?%mM0epydJMAM3fUR(e85VZwkc$LJ3J;Gu&O(CU)b0HiQBdE=hy zpT!>Pp(>5fb)NNmNN*TIMmb4HEls|+*jYIarAAHl=q)a3=em>3rrDHSMU<}tonOS; zzN3Sm`o!;vFTZ!4OUt^mNZ@TDDz*^sF9MP%bw$i2H7q{z8BuXjAW^91!gHe75Z}ee z>dU4j7t#x4;V%^_ba9h3{9!NduLGiHFQ!@JuQa{5{J6zLEWx2u?je@Ih-2aPB(jN# zD+?t{N?l~db{~%AypK?c_D)tdcxCB9WFG){5SoC{s}bvN<>i+Z`s_MNG^!v?y=j>G zJo{SUD|Vb}5ubulb;`fy9yK*UfQ11;5&$7^1TKKURu?CTquUUs5pDoo7bb{fdDKX` zjFSYty*?03dufdBCJjLxm0*biQzd|0t~yOF6x~ZKjXI8&I#u<%@%-a+gf_i|IE09L z`-=obx@CpNCv5+!Zi?KVNQ5m+c#&X+EsPuMH><185F%VhCInqb4v$I=P1j**)lgD` zNedC!5OikAbZ{wJIa2Ny8$cqN$cx2maTAkE2WUInE6?br7$nGJ@fWbf^rivv#eq8t zy4R!ziuKu(HFfh`Xw#?hS{U8TSA;AET?O5KEuZ$p!ofSXgZayY1?jq^3p5J#Ao%Iw zghVhyfe%uMtm~Cv4_ZY`0^1_{wT5ywF@l`XS>g3c5RNwX5=>pJN@h=3guXx&OJv95 z36lUE6^FCJvjKwCuxqE4JD1uwvP|E>6|i`AA#n**zvv=>KmjaRl|&M;Z;PWJ1Pp)( z;0l8{9LFgwPpUV*An88S?!P@nQiI1Nuv7cd$N?=FbGg<_s z>d2Ynpz{=E9y2XAgL`aygoHg1Ge8WVE1HuSK|CJp2YM4QhQE%`*RlA;3nP|NBl&y^ zfPC+A6yHMp$bhinUxuue?07KZmDwbqgd;YM6G52Vw`RGma{{hGI>KM*;Omq)9PO$w zEIP_aLI`HXLW>{y>)=sg34Mr$1pntUh7V3Zq}FNVgm z)zL`bMQAPJ!C?eRoat|+5f%n!K4lu|KAP)Vrm{axIBgAeNq`dfc_6ILj6&nHq$X=6 zqGm?`&k{wkfJ`dUYno2@LmJm2hS*LA#}=zP5iF&~UvU$C8qUgc8)z@p4mgrZuw)}V z2p5sSg(X-DfqvxViPnj;3R$4Bpy_)&oB-aTD+Py6P;FONLIDc+6sm{aY5hdJbu{?e zLA*0Z8W+aG?QT9}7_EG#VY}z$^B7C%FtDx^-JKk~;`+PMMumA0V7kYAy8jXk212(7 z!dyqOlG2Ym3{7Dy!RD4j+40xc2f(CHe;8PE(t6h^mRw_&G250S5tBbb0P|SBWDDKx z6gtFWnUGnoI2H*0YIz=$tcas!#fSp1F+qvsta^CgJkR@Z1Y5>ggjg~-Ipd7vV`M9F zRpN}qVri{E!Sz)fxi2m(3S8})TqAkL996bOG8qz1e$_$;Uo2En`!XCzQ?gHy@hXo) z(B1SW%5XnmgfV};pqpBPjgz;DFx z*#PZR@&i*{%4$+#G$JT~85K7^6sJ5OA*@;co;F?-A1^KsvJ6WQN8z=kJ{M2Yu)=D1 z(&?bl469On{;pzh{ppXBSA2l1bXIr4q8*#p7*dyB`^XK zW_3M^llbHGmyz|~GTQCGUHocUSTM^$yR}I8uKaDuRTi}|&niyy(RA7Lv&|Flul5Wt4?NvQjcT@rsmL?8CWSBG)LG^2qXyEG{ z+~2LH?mJBue>CNhfKzBRu7O!H8bwh$TKX?s<3KTjDt5qkZ9dqvC_k$cHx+eSRsn_1izY=N||WH#^hKmuav*8$})cGq{pl zDK%0#&PrcYV4oqYDJ{1iy z`@okWX_>kW*bx@QntX zn+Z6(7I1+YaIx86=##(b!ut7V>wGupDqWsDdrs+AY1dEqx<@BxMV|uw}TrWdsdI>7-ypw@q$ro9YDbPi&dS zCYXh8TP6kT3T|U-x2@Z@Eggaq{kLouw(WPf^&PeyxON;xLk`Qfopg3wcDHd?w=FDp z+>>^wJ1RRKwL4zaEnB}JtCpQx3n93*9Y5%;@&xY{k{?5exRx7xwgw_A;US=(atQXn5S!{oJgr?4F=g2QqACFF$FY%P%=RYrj}D zprk*X)qTG-DLk(ytnBJ;0W>0qx>wm2UVh^slk1>*A*|XVoV>PElXQ@B^`KrgytXYO zvEZP|A*`u+>+V8?)67AO;9i61AzAg1BzX9EG_<)ksKq_f-r=ylHni0!wBu7KCMlBo z++n9{Au=lT5EQzD7d`4}-hP&~WziqjM_uc^airgN*uS<*DLC@iiK5#*d=ne|hHJf~ zFk$G^k!jD7j(hkQ%F$Tu)__iQfy412^mrocz%A+cWo&ep>hWitpyGufQ_As6=HSKO z$5_E*D&%B#<_NRUAJ-4R(L#rkI!SGg)-wX5!~CRg`!7sQ52$4vuX+8s_6UmxR*Ap!_1QG7i{H9q>6mZH z{q{<=5qG$|ClxZoR#cT_C9Byv)11G^ZvZv zfqPqZ%aQ0lfxF{f6OhzlP&f?+@5+s_i-djgtg-4L8Qu8u_(yhlz7(^)QPnQ)Esx+I zej{qjDVb$~I+|J>x8Qu@O-xSg;agA;L`a?5=ismh6x41)pbMNe20{2P)OLY{M-j`B ze%w@1)YmrQ)HG((@Ca_7G=97R7a={%{T2w9;feA}z(7;m-@k)!^uykxY;Z^*m=*oUPnBE7v|3sp+vhBI=CMqf$m(C?lY`Lyx6PZBFs_SXR zKr^=a;kiL*0U+-klo164DYQi3)DEa7p`rf6-}-1d$`5XH3kxlFF;xmp;K8B^o~aTZ z3PDAhsYgft zEpA%3kz;{d$~>CFfkv5&)1FMDk|mTaDw-0emmD9?-Cz7l^*K5clfs^{=@^Z6K;itB zazeJtzBrPm11ll5`mQ6qaJ~A5zPSbhG{b#VCSlBG>WtYtrrh9sXq&#aicJ7s$m^2~q=5KD z1wGCXln};LfTopY8er5)$os*s@BUhbNzLVZbiTqW6E7fygB8Z4PvZ!y+Z;s~e&S#T z`KWcyEHTCi!1RZ!b+7j1F|@r(yfOPV0+Z?F$MCsZ;LiaQ&nET-!z+m3Y9iII^}YM`rvRNOs|6wEux;!kk0lu|;F<(N1+4*(4)lV9G- z4T-c96iTRYpfjy|i~WYg%hM159B)m60PE%f1%x^7 zu4^O(Et%+hY?kMIgCmqiPXWe;!U3MTY4OVEMnXZoDaB@Mw7cN&8%~bMkb@)+4TuO! z64}=von8XrP2gMvILaBRQ?nirq`3(RSyqwaNk}|z|7gZHW(I8YmOgi=8-)V02z+xq z%(pXNsp>QoKCjpvDBx>$(+7HGgVMlSc`wFbCIzyek{SR_!30Fdiu)Zxp7H zu;?x{9tt!Bq=pp$L#*#aN~p?^sr?S{3>Zd$zowv5cHPp6ve3f(kfI1$aM5adTdt;L zBzpKAGpz$29y&fPGn|ibF2*?SBKxegmcd+8Lbq+o5OP7jby>$e97d0*xKT*psx>{z zXh%%0{#`@2R3uB4>`Ox-B4y`}*Mxc-dAc~nav>%3)hA-^l9NBO`s)J@YB7vdUrL()sJB>FGM20>xNjA5^M00 zILL>|C6xDgNZ2Mn(0b&qW$Pg9c(|JZ3*@}b~3U3?S& zRS^TUFrW@isAclP(9=2`@H>=;9~7D ztNlplUV-Uukl6HFK8SOmM}G*cbS~squOqFn^bQBYC<^6EWTq{#@?v+}*+KrS1$A{j zFzfP?=O)lW06pwN2UOaNjud8&S9~oBBcAT#uWrm2SKaKot5V=Zd-Gcc{QwfLU?#9& z=&WlhK3P&GfB**Tu1cJ?C;8@&=X-Zr){Sk4Q^F^qT{33akN+iVy zvo48F2Ww2_QGBE90flf0UbCZvw;MsL%s*pq4)>CHI zemcGY;@c4{rx+yLm~JBg4B>vq7k~ye1Cd&Qw8!0yFk&2RN^%neL9;=aQ<2s7rI%<=x~`0oDCp*|X9N;^BiMU@Q9YOSbAK1J@dynaPT)hdx|3*n zKEly(Y&W*Ki}e$L(2iw65uJZKSe|ENrXp%8`qhI80%DZmANz7TmNw{&$7$3hQkFDk z`RyL2g&pOIwOHMV1WQaVp@YeN=ZIt-2Z${HI$wIIm>;4pAd1v{j8vDP!&=dYTG_o2 z0FPpGyJh$zLg>H}NE%EtR=64>_@4AG%uc{cITo$pr1@}Ipn!104J5=qVj4WmAO2j3 z{rdgl2#sQb!0ECiny~B3&bPjd>EX93(7W^`|FNxLS6&Zfgx`y9(eAMz6wi$f9`vzX zQLNM#8FUn$$?vd@oY>9dwpbZG<*?BE#6OxxVYSS-JQFcHD=J{FEb!_Ir+T>bt-+}k zQCV^}*)3h?TWE<0$(x_mt(lZRsV`X-Xvz-@aNa@-2x@`g*9G#!>R*L82+AAsR)}a5=xwvw+e^95GTj9_ z)k5ZeuQ?potP!~u@d$Dzo5B0rwxivapxc@ZB95wSy6nO?CDtD`zqXQHzNsqWtn*q& z=eC?|;mua??b>vE7wQ|I)D0?MyRPTEr(ng?s7x)^$s-m|6IQqGLb;B0ue;{XGwU3A zg&xnTJl927KCa&zO!k7h!YEyR?iRQUh`!xj_aLm@?;P{Ny29WazO3=S)*IRqu6_ia z2Pf+f?ibBCxCS5$9wu!}#BKz3uK1O1ga?SapSnDf)e9OFeVgX`I2!tRxoD|+<4Lr( zdqLrY_=2bFqWHp*$DD3ynj_u4EMZ$XO>sA*dur=ylG9f7-IACmZZDi(#X>ht2=11) z?&*H7pXa+jt1P*Pc7IvelaeH!S=*ETUR-c=Ei0ca`4`8uyXQo|PJ1Gn3M$n;aL?Iu z%R}_!fwprbBryG3Hmchg>Fq3$?E;I^?5o=atcAJn#q#cZV4Ni~Z*ISem&m%iU7#sp z?;>6{;}#U{63ptHL`BN82z^zNFJ5l4{!1~z#L-2gnctuDC7HY|;r;qae5gWDUlnNC z|DaU<4~IsApjhqdi<9|M*}||~!pI$QzuJwS=F(`+n?~Q3?DS$A_KKPaVVVWqjSNWs z9y|`IDP0H-^W}EzB#0M8h^Kw@YfdLKYHmb_iZg)i_`@aimR~Jxqv2lT3eH}^poe0q zL~)VE(QXcuo(?(`O-JQhgU&83ZW;yaqI<9~Yyp{ln^_vXY<)l0tGToL-6*#2?x(>| zMg8x4bTaW=$dAa&$&O}Vz7#ZsU85v$)Qsr0v&G=WU?xl!Sp;|MpL+InfKJObN}_rg zZ0|7VgJ_CL8g{|45}_EHc#Ime{aGN9V|e#dDJ6bnpr9E|F+yNhrlMg7Vsg77i#Vy3J&du? zj-CZZlwhg7x_GAWJnD7}y?CBgJWm=(Eq{UY97A7$mz;dbbpT{S0jAxep0neJs-vlk z@w_x$^Z0%Su_~T}F8|AT@FGr=22a!9#jE_nE_6qc;X?H|3zvdUCQ6-ca-i07Fq@8q zrJki5o-Ipo63uXcx->&FX$CVxhicPwphD6{?H~#zcm0gP-BA$WnofOtMOHt1H64LE zMT`0(dQoAEqG$jw6z+kEro0HC8aseqikdF&{x*wuT0}!|0H$hUQ|J(6iY$DInY+FJ zG!qR9PM4I%C{7Hi7hpMySs~8*l3G|s9F7_=jH03I+DsNe#&&}*Jlx)6OrVnRwbul7 zL)_JS^zIF!2*-!vYF@+W)HT!rkk(hzYm!Ji3}OOL@sSB#=`4Hn$>LtPhf+wS0~I8* zt0&==mRsJz%!`@PnI9k_8>gMm?IV-y7_RZSx#l#kMKq-t;Y%cb7)2s*`{I~2#QjAkhLcqk0%~Z^f(`OMZS)uL(y2sV7Quzwy91K8a%q%fs0sAml7#5tSf!T$V&^W zKfoLwr>}oS+Qi8doo5C;M|&aR^iuCo!NyF#$Fb_xpng)6oWF)Y`WUNs%z*;%6?B`I zVSUb%uFuAdqoZtPO=7XGn23q#w{z3EhGNjL8D3HwEuh_p0)DW&q<#*CinSODPbU45 z>3WrT9Lk>!J_m$);e;GMia+eqQ4FPt1a}Ke(k+($kduGtqK&(6{t`~3C^TzvmTuw0-Ocm{E3AbRTDX5*-2VRB3s@SS z&9D`m_8BFH<f*SXv0jmA#FXxilr~iYTHz-%gH|_ZfPu^TxJgJs zZ>b#3#N?(H_N=Ek@7Jez1R*Tc0VTdp)aa8lsA^K zWm?Cena0cVMjVo8NEmDXca!QdY!`7tLw@I zxfr~FGVw}$n0t%@(K-X8EaZNZUyji zOSIdxOGU94I|y%fQMuuh>Tt)dINEW{$yi&+8#%K{V*lYRsJ=_`&BO^JYma;O_|?tp z?W71nFnW>XokwlX2D!tWmA9Cxo$ExQ$}gQ{A;7(*?#CKB=E$0=J(NTKW;``VU8$BsomL!J zy2=(ueAOQbRw*ej&3GL>Mvw`u*6P1hcAanuBAhUBMiFZMLFMYW@zJd=q!J<)UHbu} zIasCXt>ps5j_{*sXWC^eo(K4>^d*Xlay6NiG&_ILvdq;szXcI^H;ipiBlvP;xM;k{ zjUvTI?g?y)-FTDz_|cF3I9kqMI>E0Eu|h(`%0V;N{nSleG(l(31`UF(rqOj$a(Inn zsKO|~tzgz-FpD4<>_}&>x-?4M?;d)l45wqpFf4^XGU{cq@;a3KxmP;I%&#M~lKKZs zhDQQESmqMox_SqxH;~gnLAZQBh^69m6HNe*O*!D{o=D$j4WUB;6K-UrAQ>>M#ZIjH zPl|I1%LR8^*dT|W6?yHMT=lA%%VX|rb8_W0lhys)r?qtsdmsCvRDfJ z1)dRpn^bOX7B*)w_mD4Ey5feJqi;Wd?{6WyYKfZXbB}-CskW)_l+(A>@6WPG4K@ya zA!JU&zk0I<*>!B8#jdgApuh34Xa0%eg`L!3APfYMo5!v(s8S`aGPm{XP$n66V{a#V zHk1}DJM<>`&&#l2dgY%PPXubc5N7b4zoBZiy1}e;*Sg|Xj_IDGeu>5SR$0x3ody4h zmoxRg9i!H}kLQH<+#EZo{C6Ab<~gMr(&at-Q`{Jorn2@`f9*C;-_58X=>Vi(k7)=^ zgr-=45;gYfi}Yjewy`bP+-q0advvEbc`ZmbV}n9hwqJ@-#jr_*b??ErXtKr8#~7(c zQUOD2FOR3Eg|o`_4R6HUpN_lP>Qm?L`s1G2QS+_DCbG0Q*~~dHY;Bp{U)t;Af~L}G zyv$Qw|EZ@2y>}<87~iOT845a2%^#w)KR=FpFo#+wE6o1=^M+6k>ifj!%Osc2Npt4| z`u=a`ChlP#A$pL^{4~vGv@Erez2C1Ewf#}?dRo&Kb1va3HxGvyJ|@J7m-k@c^7>f8 z%S)Y&zF3yKWucP3{K0yTb%wzNSSEmi*A^pPHnkt7;+#Oe0K)Py)Q~i!gqGoKDOjNk z6Dpd{%S^pVQ1Pp@h)}Iweln#?xPuU3bmU}(V{e8%NsR6BapIUzU==P*jB`}H#r2|} zRpWe#G5Qqj+)Q&_#X~q2JNt@v;k55!rE$V-I%obHZmou9*jw)h1qCLi`ed+4v33Qk zv~&IgqShwKU}e4yhG}g+9g~!stIpyYY1(EChbd*N4q|qJSd(|(A}b1BpPB{gvdoyg zSPHp)aqEh%Lug{O_tOP!UF4=48(!(t;*vvdUO7I| z_rCkVYei_|WO$%u`?cv~3&#z?nv&s@4%5u7@*>53#nE8GgPb{1xu~TReB4s~yHpln z2?NhC3cHY!NB?kBji1vv${;15rD0P;20CGw3u56o-n@?CG)at4DPW%~7Qbq3l3JPa zTI%7J&Xo)@VJf9iuEAZ~P~yYOy_6!A<1Gwi8xu~|V8|@&VH+DXi8L@P(M@$T?LD0= zB(tF*8ohK8SIrAO%uCJZN^i6UnUzK#mtF5D6;}ls7ssa-d(oHLK%k%92F;Tk@9da= zI2&(x-cS+zxXgY9I@JPgtb_}1iz@>GhT|-eu`CjfT(r}DGsjga^yRmoZ9_&hgLU ztNhw%m-clO+8G$C!)Rldz@7nJ%v4f-O*>0eF{fR~`06Op*kx$)X*X)LI_3)93PaiH z+q$rdxZ7WhW(L#hl>NM7@PiA86@|9Tyfujths6 z_!mv?!WXx{HX$9~k!RdrwJ3ZV2xS*4U)dQGC|NIahEhT;7e8q+Yr;d(#sw@K;p*;0 z3IJ;oM@G$#NV&JV7}|#tz^km6K+mp+dE3p-7o@>rk&?^y;_kHM>h+^8BJPQ4!AG9J z3=pMS*154_NnSq>?#?@fBHyr{5o0ZNA7k6h@8i0AZTs%7^m+CjKb|nZv;%3&TMes? zuyEX5Dmlq^RQH!ks(EeaP)_CFv3@*FN?&_!b6Z&RV*ByCUZQv9$ZsIsHYDuD$I5h4 z+{r?jlQ$3$!ZwQY@Ow>jy4;p3{KCPnqQlSjaoZ>R_-hpwehY79_I_rkMr3bn6kJ+Y zpiCGO4*b9yb+cvOf5NUQ>GkKz{GG>NDwQm6r+bvzm+5|i?>(n}-Lf0?q4U?bgO>UV z-MmW|RV+Gwsak@&Obyy6S9*DaHam&d?KbWI`E}5Dk#v6anT*Xj z-KZk{IsdUwA_3@f0n}PV5a$7oM(_Vg{^)-SoAY1ckCL%D?!lB7wiIaXqVKVyfa^)2 zEkjNo;c2vouhnkm>6y25r;QKmv4g*XL#y!_utatC3_!VCP_k%{TlY~Z1SeO$3ULMy zS)V&c#~{Do>t^1#()Z0^Oa>?x?M81}6)z9+w!!mHxvYJubBzDYa-C{8$-u zT;@RkzvPcT43wqUzPUg6xqP=l=;_xo2TDo3Jcg6%cd;c-Y-N^_(kC_Yk7=Cwccunp z8*886K{>%+PWL)B*5RdS+yr;XQw_7)!a3B6Ug^xI#`o1uUrRh)x%li!fAaYAURT_e zqxdp+BGP346$p?e4uHK6syaS;+~=zWXt?B3^>i%Wx1lA&xzNo~!Ia)S&2w){vGBsQ zJ>Ey@UGpAI;(rr6mO8PC3yA>XHS9V5ERM$GL$n6B1V(owJf#3X2-F{+>a3C#% ziD$i1PwCs4oe_0JqdCb?DOpFVzMd|M5^q!Ca|FGOLK-?pYw>lM62Mf(1qqJ)P;w6@(n<_R}h3+=j7rMT; z1+c&1&lrE})ANN$Kbc!z=%SN-qc=kTmPQ?;+1nz!tUmJ(8J}8(jw}4_5$`>pslf0XO@rq*Bl z(Rp@rvBw!dH6$fcF8I31)@|!W6pGXueByM=e`$NgGhmD7gk~XS_qMBqOjhK@2miXJ-Y^_`Igcj9i9#QPZ-5$Pjm^{mb;Pq7T zg~iHXxu=0{RN#M&TPOf1000Vb15*G2G$a5u4Y$}h5EMcKhuQX5=e>=93F>5O)#Ufa zuwU|+?I&~7|Kqr2p!W5@#w`zAx}JgHn6x>!WmrBxDKs%nVQ zd?yWST`#QDx%^`}Fqqie#RAxIstj!;Ci&>XS!b$`4-0Gy0My=a1Tq zM!>(iSz`ZqudaPw8OmX2ZTvZ?zeN38<=Smp>fe-Ni#Qg!+%7af9h#CQ0Z)13k$BV< zz&$?UW|$?j9ITs$-%A0c#{TE>b0)fPem8<>eR6X&&a<=@V?G-H#=kpjTrivwXr2Bz*Y8%Y!4W(P10W+_|8Fe;^+RCu(BtwR@>6{(0zqq{6* zdn3swmG4fRoHsgIUqTES61*04DCm zmGXKWg#;|a^BePkXX5TCBift%FqX$AtE*_bl&$hC|M(Zv&SA%EV0xQ5wiI3pTW^$! zI^uE{c%_im%$g!aaSgyH6wu3J=8f)(rna|D=|u3lmV>rTsB?NdxdUnIe~z8%htd8UT9aci}=|2Khs8 z0VY}#mG#Ewg9%LTw>a>ODMfQcSeOQxaW%vM>&2@{7l)GZ5pk~|?uKX8?``9ZLYe3o z(IJTECgY$z4>_ZJG&95E+dPW;1V3hV91kT0pC*G^vevM)`f9f!{O3zoV^tg#&8fA+ z&3MMkZ*Og$iA}VCdI4d~YHmiJw7MvM82I|-3)kS%?HvK9v8H2l*c2OBh-F9}Jh( zz5-6iv#^6hGmp0@JS1@C(qb@1G!cZN%St8{qC8XHz~RL>gD3Zgn1hW7z+f$;d?W~}z7fK>ii4h-CLp|j z042B`?un$W^F9Evuj>fK2}GG`}MrOtxC5 zb^}oU#5h0{175PE6xJWexOotP2A1WyU1lu@&jm|(?wzUUiKn?RpF% zJf2_Aj06t$Iv_6-IWG7p0%cQ-khW=s^4Afsfd>xZmz<3V`8cHkEv+YOf{`m`n=rpM zVUSehYa%-&^AkNeL-xC=ObZPOzI;R<06ql1-Bu43RHvsfO~X%~V<~T0^9MSZf(EI) zW%244JbtQ!C@nq;@sGAHvgV+TVL|Js?k-|Lw6iA7aYf2PrVXrSCaRH|o0fTt}|JUqk623`tdx5R;rv8Zo* z0~1vU4}dBA7l|mNadA?x)N@3-L5>IqMUK9flqFXrv$QvbxERqK?e?0P0KoKpEelpe zv%!gG1fU777?~6caWP_R2x3#`Hg+-Z^)rvf9Yh*s(#;T|i8W7NpkZPm60v9VXE$l= z$q;1%m3V^SIYf@4nrrXiDt3w?w6tgNlkQ7)7EwA3r(P_YF5dNdF;65EQ;mULkVx#a z9yFn3)uInOJd``ytwS4^o+PFN&R_2WQx*frm2774@S| z`BUv8?+qYyYyXJcp}R^8&4dx^j4+&ZLF^lu>XghqB?Ub3YuqoL31X)J3iSAzG$o-; zOu0(WU~8Rnml+ct7W9g~4n)WB8XPeqp7${NR^AyiL9%!e#LU@686GP}Sy4*4ku>s% z6E+!zb_8jhCsBF?0L9N2L7Sa;=sYW!%3CpY_^~x4^8im{`*~RXu1--V;i3oQ+1*V{ zwHj*^+&TV^U{3y~q?|M5>#L4q^gj233#380kh2AL|2%sKBW)%J+@P_ga6@=3j!WAa z%uOQZGHJGhg%dqPFeTZaGVQt%J)Mq#2atTb8{o1Q zJS-R@b1+AT;O^~C^8#onWNGNvf9^C->hDRSze{b>)n1S(cd0mtB1sp|P4mb~(1F;k zdcMSe*&RHB9k%3dNr-W^wNoox1Eh(;L;<6bKQpu~EmUz9j7EzNS*=^LQ0 zT)4^sU?;OJyzwl|1VC+=0 zVVNG=#reMoAVqa5jip9EHpA7^OMZP$PcruTX`G64RU)PUGVcnI4IdEn2^0p>loa(E z@DzEqT*YhtC=T2O4kI9k_fytLT~S#NX6Z+4LNbLvB<(S*k6x&7j&moq3yIE;R3X&J%!8Ia*5##bbpe}i??QJU3<;L&|=t{XVkLm|u-;xZu)s^f)`j9HW5;Sg5c zU<_-p40|ug_WYAb)_az$+IuohB35Y*9(f}42*0Hog0~sy#3DM7pUV`(;v^Q#f5cTk zA&p}4L!~{{5@P-NF3isj9dE{VJQ2fI>z^%yn{br&Sr&RpkakDJeuvY(?{{G&um^4m z%@YJtTtwbPy7(Jwo-al4rP+BohE*O$`(W7jWqhyphdiHBbjgzk3hGK*K2!1GCd)jH%9RUgks``Puv56pya8CbN#SYc2vA( z) zlO^A?En}WuTuNYQxg)rhEN2W55fWiLysQ`XG~Dstg;#ORaQ5|y#4ZBYU1K+gKDbM= z!?rNtG$0m#l5i)V_dp9JZN>INCRxui883$L&wEA=l2`iz@~_|Idn;fH2{`V%ka8Mn zh+zs8hY<-PSoSm(p9=({mCj( z@_fJ9A+Dd`GV9SfgTQA&vO;Q6QvSuNA@yFF?&^;XATjwmY%)clD#{f zO}NAUGhArBrT&PqqQV+rX>5UB$u-^|7vN0b!lNx zX>mqrX=`cuOlf5hIm@-I_G;O96r?eztU05swY98$rmXXPd`))k+EDyA|jW?Cy|XDa5;Di%2_ms=}d8dbhT!`3q@w_7WB zXDav3Di1iTzFn<4vaUJ_syfZ6I%};upCPYoRROrFK}ywNn`){@)if`wp>5T4U#b~? zRl~Sy5K1+SI}nORNV<0o2Q8HQOAYU@8edB|QmK~56E37%EApro`Lb4Grv~+Zk+_lvraUoPE4{^+NM_dOC7&19L-gC?MvNNrP}LlwHiuwx;AzCkLnCx))}|e zVU_B&f7RUBsWpwMw<)VPr>(czsk8U2w~J}GUDj}GsNQ|2-jlY084mU4YVua9$0)&l zxf<2KG@6t(nRzx@JZf~>X>y=#4wP(m9%{0UX};;%>@n2rwbOi;w&jsz%VSBnzi#tG z&z7fU%`QVNZn`Z|w5>5^Eg?HCc-__r$=0m0)|{BuxSiH#v~7u!ZOOWAsa)_EzZ&mz zH3htEX>MyNf7JTMrnSqaxsj{2PpS3o%hrLm){!r*L%&)lxY|A_wSBZ{`~0X4me|(2 z)Aoh7eT*d8zM$K_zQ)4oyGzB1IlwbTBUwqr-K<50KbJ9&vCrsGFh2V+;q+D^wW z+RptiHLs^@cC@ z4S)F?hOReEyKjW)h#aU+!Cj&hU6(kjOH!{(#;faMY}b|YF1g_@rQI$Sy6$VJZj4?x zy<_(!Iw++rvA(rOZ?;D%u?M`{W1`$^7KsrpTp|odDmG23X^Aa>n6rhlfCpBOi9{R`jx_Y?&hxvOd?3B0NSn z&IP_HGaaK64FNRVGouuMG5Ge_cV(orG(ZoK`?I~L%N7oqd%4d&4z8sXtQntxjAI<3 z4VjcgnC_oJ?wS?=i4G&2JQ>4mrU#MQMp2ncAhA$b^E7ht7smI7wNfydwj1 zdgGvpk*~2MRXC_C5ls1&N=!dD2??Vd8FqA_5-xx`A}5(kCcX=Qyz+IR)O#q&`(sP_ z1W3jnVT~2lhh<0u98^A1NPkid9J00hm=>&GxA>7>hF0#*r;nDCLh7H~jz9U0d9m`!emosF zGDRct<@N6`{g1huq+l&^U)r)}+OuZgtISQ>&3$@2H1^(63}@I zJbBA=bLz(Pu%LOS(s{ z$)O(2fv7Hu)GVHDE&hTmg^nzu`ImmUFERc3$oz+iy>psnX6XpB%#{rXROW)_bA>y< ztf(w2B`)`>03Hfq8;gtX#R!wL)pV3XNU` zm#&Hh4GG-LHs;MSy^v%6C;P_T)d_lLxw*BQ^J}b!Yfd*mII6BY-CTFsTXV}^caDc! z#ji1)ty@2tjp|zWxC!@TSP#hF@YII~&u=gtZnU5_zG`o7yKmBvtSQIt%=7VXJWyrQ zGeAUkx){XgCT1f%RI*b4Y>N170b94Iwzou=J_f@!nIPMls)+pfMKX>sc^+PsEmxeq z&0n+4C$l=PxI^KwBUD2{Q4O3d*^z7ofFzc#@a{Yj*`+vJM`Qy)CA(s+Kv}>ppmnkT zZp8SXEuAGGMKz%F=I4seqWgBc0{ESk^sgT)nM=HBUI9LLk!2_nL#uo6useJ2A^TLL zh?PBfgV#QL#D4t~c)Kbro%e$o@7~GWQuE$^lff1Z-+`pe0o65t&Eo@^>;vJNgNt1U zPsj|w90bDfkm=&L1IWP{$2a=C!wX%9V$R?AF2eck4}?gJ8*GeuVq-9g1qA9I`U2^j zO*Xv4_VDt(JSYjKv~Y0z@w@7^FI?~=u>CjQH}f3#jxPBe`M)~S-G@=`9SPcR8k6Qt z_hA+nM^D0ztuD^$8^W;r*)I2TG%lW)+n?B9dv$9e`^@$STs6<%5TVGJ{rP5Yz?yPQ93$cP+c9YMJ@$%$f0r3Bws!;urPI$@i#V?uNfsTh6+Je_?fmG@FN(8smCm2>qvzcV=N2U1-?L8-X6%2zf3`56^IPHU z_pJNx)tlcLOaHJ>?0c)u>hOP`i~93r>(AEcABJescU8_i4B01DS?4+XXA8OKRbO9C z04c`FJvqGSPMR4Y{j4O>50co7A%|lyIR|PA2WnbJYPCE{KWTuUbXJ4jS6YufmZ?={ z^0xTv86#5@3QPg`kbZ|$=0!TZn0GRk-D(fNle==lM?!dzc1wP-EbY#z!gCU+8}@Vm zWCIn(N$~A`4je^{Bk5b-FZM%f=Fz_@<<8qU93UYQsd`k8T%RKTYTmV9ZP)%(KRprc z`s)CmB`C$>-u~Y$bmjZ|fU*4(l40WcMfl#{@!8Xph$!|&*Zuhf@&SQrs6?2w)=8*SZi-VTppvACH^7Q9)e}5X}_i_Ix zG$$7l-~cW3{z&_GIUEC`z<}&X9ohe!R+S4$J)pRVgXZ9%wRBT|eL@%EPjjJlfQg$` ze|^&AOJo>9t^oiSbD>MaA05BWiW+YVz*pQ4Af?s&^&=#B9@OoaqIz-fjr}=0KULO# zHn}x`Lmg9LegL2yeH;1_6;9zo&koq+|A*ZfkZ7nG&%+PpJP^k~ArLCJpf%$)o##?^ zouM42>v|b-cjkN2O*ckka8w1ekQ9J=u5ui&Mh5e`TEf*Bi7-y{ZL?_A9FyJ*^BrS6 zn4STBI>7%nis6}TyT>K9*UAX7)~r;&9oyE2U*~&cK5vgU2mb!EHo$y97L5F0)y!0I z{Y;Kqc8LhtG?q{3DCsjSCPyz53|*L?Qt?7FObAv~ENDrYIuN@^2Gu4sMp09w*G8$>>W;JLqa1#gyyc-WqP!swolzLQN zHoy|ST00OI(Nj#5v}~;|JFsqPCacZ-GPG7=KcCJ>SX4lj&g;g3E9DX_aFt*ICo(NnEh97Zz%ms zZ@*O;vAS=?^~1I`dd58Q+8-n5_f8*QH_fNNZ@41!;5$9N{gYQ9iPtH^ACkxB+J9eh z3=_<_@A#Nn`jg{0HdR5w{6f6Awe$IwnD*ki+*TR?=o>Hp@m;{Kb`jfG{cK(b1l4F4Z9v(95~P)>{v zZ1;~H^mLuuhf+JqWCDMq_sU?FZd2u4Tfq12xuK@2g*P|~T3)^8>ZP}lOp-Ura;%lU z1VPAM=6jM>0pF} z5x#yqAcr;i{8B|3nP%IrNdw+KIs;IV!9s?2#ny1rD82;S`34` z6fcEytMa6aoiCQ8ht4VtDTdT=Nn&N9IW)|*isg^D!YtL={w$@%agp05Lam#@DN?$bA1lAT`6@wEVyhs?ADEIN`9@Mv>>~fO}UhPZJhPn`P#G?F1gpd`rLD`WwWqs zuXVR^XRqzxo#cM|(I?OSj??wB{m%1w1zn9gFzSE^CMlVA(a_HBcgJ%KAH0QKM;-Ps z-|#x@Wp^zq@0X()DL7I}0BS6#S#N=O z7LX`h`Yg)GXZcrdGqd>nXVE$}PDj;g%u?3RVzdsIPly4`GK6QbnliWQCL=XhfK_qc zv9Gu{wEF%xax6s!dD;7R@xjimWcTm~#R!${_c{0dIp=)7zw7t?-?%QWxt@>L z^RYbvVoK2(H8%BbFQfP8n}Zs`7}JSzPd7r!A)J_8aHru#xA)1h3wbI@>s#UGwp$n4e}`$@HmVWrco%ZJwnXA~}>sD);mIr6N;yY*N5FKMy^2LTB1D1#2q zk7pgUx9L)zH!&bg(rOVjd4URu`FH?x5Rs&1GR^8w zgend2mo*#31V1*K6=IH%Zc&k&c$}u}Ey9#mlpd%I*F-q50B}H9SjMpYjJb#iGC+c%lZ)%;s5BSo zICdyA?9iqfiw%e53#}?zOW6DLWJb=t$L4gw|5RaKlc*cbynH)Y?RC4yH2BPA?C5Bs za7o?iLA#*h@+Yhc#~TiQd=Pa2z=_|n?ezY5ekQoCT=!!ALhM*$g?#@z2QF{>uVp^% zdassJR`1U;#$XEK29}*8*%w4;Gy-*AZwychvw7FL_! zA3qUG508fmuQk(i8smUp%{G!CDhX3hY@39CMJ4Q?GTRhZ1VEsSRu*17W_i6g75@g6 zOroTZ2?}@sc>#ZeO5Q}hWMkJ0zqzex@s2h??z+5Uf9+pICHAzyAE-pzNPY7MDy^)` zef)t+m+S`e9|UDHWvT@%yy@7jV9@8kLRH^%Q!o7^moo`HSREIVmDxn3=fS#wsHA!t zig^39`1s?7gYB?|m)+?`jSb(vu6=&@`f+39*7FjCbTim6{^fN5T(kgnJj*FdjRv|` ze1gPo;W8va#UhKR28$>rLQxin+-|~SkNff_yv{p5GIfK&zCH;`yHmDppuGoh-iMvQkUc(p_0Wnq2+!JuG7m; z2x15KYv?Mx+~05ff~I58-14*>%H(9}mtmWWAHF=Z3*ECa;*@lH<+)3K>B^}4oewK7 zJbsT#`yIDVSHJc@3iEj#a9n<^CzMO@$fV4^vO34;M*j6Tkp{1--p20^S?{`e($;DQ z6ZG+}T~?CK#_ZKJ)vEb|&uts+<#%pbzNdS-_uinwiz}Co*3*uC{pj}Xd-+0Bx~6|) zJ6HMUQjfx?&ClR%&2P(tmS?|x897=0ZDs7@r*Es{p;F)1rh?@4)?b}M_pi^MEGK+D zbxRu8x-QDRWd$oX-TD^ldjHT?h}!clz~$gq7U{DvmGPIX1x@ub6#?hLf%!(XnXaKU zkkg$Hwy&<1(Np@g;O6*qym(7h%z`CV&JlV&LOe%TPp~9{9$_#4kb5I1WbeaF#*10% ziC;WI71uMnwn%V|8^|Y4+LBqiu>@IB?4qzC^%3@TLM#T`6Jd^^<1|Wa<9p>EdF(x$ zn{J8zaFhvN{D7n9;E3qPiHK{TgLVfl&uD$?Ffs7HKPYgirhR<*oTRgR8o!x+gaFIH zp{s)tt)`iWHZxl6?4t%Hj2G#2^UxgOq%OMMM~W@|C)s>FXt4TE2#xNsan+{5qQXKX zE`L^zTrUA^V*+A$yVp{UbdsRo13=wFw6KYe{v=HnN+1C%kr{q)48r=xzZu}L+=`TH&TkPgVoU-M9xd~WaUF{}M=kk!l+zxC9D%xa+FJ3=< z)A6!gWS6yk75;{Mxn%c|9@RnH)DI;mFJ&FE4YsJs9@25W=sntGby?qnk6YG@reRPjGYV%h1&fQ0s%lhKGRp(ws)epDb zIA48g-}@COmc!#^b+z}{g#7XM-w43ZTsA$nd?E7kOypS?+J4*B3#)aS^zdIH2M+o> z3DjW3gW~U0L=rs4iQppi=OE`7e`lvhhC$#zT!h}vg8oiwcp~MTGq?zG@@b6BR|X76 z+dgpEft)?N5ypB0h0ubtPqr7KV`28s&qOVJDWfbxujTr2+l$cCmt9tfByaZa~feRISSw+l;TEuTq>fjh`d+(A;u!lzsBJ$D&Yl}6avY3 zzitt%GQr{c?yt|&X$701K2jDTD~#RizGI6CS)=zTi;(KcwWZmoNsTRzbsMV-Z%)=2 z!xA^Yt_8d0p1F1P%16Scm>r%I;W8c|HkW8@d(a?s`~pPP$Igt^!ev6!|5#pJ5SKic zedwAAd@@W}Fz2wN$~h~v$F692i>Ji)B6K17p`n`zOY1QjoaOc+l;blXS@Q`~ zSBi)kT^a=!p|%qqkSHQLB;Ur5b?9Vfl)N=hW;E{waqDoV+b%iD&b-OjQ#R!0jwH-K zoBLm1gnmE{xCn8%FEqo&N)}oW3h)2vBILf*DgI9(XL}L)0Xe111NsUdmY*7H?*SJf z%hO+mto}9R=supzeeeyN*H>u!&T`Wpe1hZ)wiMRkHZT`jdt)}2nKuC~ zVR_2tgs5nX%JZOJi%M5Fw480jqBrL1=sk<(pvE7I-xX{PQWqDs8?wBwJ*8joT|Hu; z{q`>H78`fvO2fT{j$JN4AxGi3$?~AtC*x1$+*`U!V?mJ@KfTd&y5Rm|ft6L?pq%4rc^)u-YTg7nH_Xi6^Wd=~IJ>(r-2)P}X$#k*f zq2R_sC=QW@+zKVMqInm?2>My9NgWzO78T*ftvzhn1kE-5$_T5}ryN1GZIXVAk#>k| z?(WcFnUuvSV+j=RGx1v=7{{4e=g@pJ1no1O=llz{DfE$p&z z2u>)AdTVZn>9$4(C)WP{oU`wGgoA}=a))`>_ND}m;?5{h)716w0~sysMdUpB&`Es* z_ykQ})3kj1T%5TJo)r%?F_h8uy2pM_la&!uhGg`a`%fk>^vvi^t#3j7ir6?F59Z@m zefzF#e5NU!9m8?Cv0mATyS29>|G@dI&hv#anLVDf>JSt(+_T4r`*Nbn)49ij+|6)* zg19PXIsj6`eop8_BDU{FpCAzc912=doI-R487iZ#uv&Xdp>xsI=zxJ_G$duy%-BF zLI&l2&$?f&)UQ5RxK{2zqxX7abhTlvxBSX#_v`N)tBn9t1(8;NoQiL)Not=|;Ddtk zvq~46pEwDUa@X(E-86#1NO?9`cl#yR3lI4}R!C((lieLQqAz^rhJ;~i?)>6yr_d8J zi8h;dv1$%bJWv)Dtnmi+$tQIG_j8h$B&RG`?{*Zb$i^BJPKiXuwx)Y8i64`EYi4@4 z%dG4cq;j(}LhG=fjYTf$;rp(~8_7K`hSe$0dZy*?t^4+RL|3QI=+7v>Snu=ctG>0` zGo$)-{V|cLCWF?%rHoQsxXVZ9L6j zx?P}cFmHNuW3a&Rc9CW8yv4nZp^E6+B_|EuS$79Neb6FT?v+-2%J%$aySBp>SLNO> z((I%ywrNQU8r%IqV?Ho#;X$O(l79`2`E|(SJ%6_VKFKDWLvvSnxenx0XvvKM;0G=F z#VrUz8z}!lx3*-5mh7%AJ(>(_Y4{B-Y3Twjz6{cmD#_4oT9Rqw%PC{wNMFvVAGBn3 z36Fi%OBE>AC3?;mq$LA#UC5E(0+>Rzdn}m7FYsM*_=S#!-g~PSFB*bQl_?QH*CC7p ze$v(H?&q2QY&|KR{wB*ePlL~PZqt%a=(M&fm>TY{f1YL0t&D9rXt@Y|X$IR1E`T9i zAKz(X8}^NV3lhM=h}4`Q8p|H$Y7Xo>EscXj3vDleBcrSXr~)EQ*AXx!iVESjBGK+S zcbta4Uu>I}bg&Q>6u!o)-Xwg0-7)^ipo z(`j!tn7YN>L@XcX#t97rLs)L2Q(|FqgmYj=u9mF>d!D0X9!N|2W$NUUPB{-wYo1m0 z{r?gzd4N}R;Sodmz2)JXyQ6Q8M`l0RT=^;_4$vYh8bLJ9Xrkf+(Re9la^WG{h;MS{h3AzE!no`iNuAcbM!AMwB*GEgUy2{ z#{(aCk#aj2J$!OWT+wE4WYu2Xnu@l3HN+icdgjzC&U0rnW)d57Gzl4cb!*1y+$7D} zk~<$a-c_{kJwWhzcIN8`pVy?XA8$YYc)&b&YwzYlE7#f0#SXE5v;bbs{{TN%&h_d3 zJ0{hSqe*8Q@`*X+S2kvTpAtR)AS(h}m=n0QCFMthRgIxH%b+5{*`G+LX40u3`mfSO zjg!V!=nc##X{87>Sd@4((-lLu*flWbN5CgO%}J5V=IH32{phSBnr!f>$n6)I8qyuLV- zGkfBLJ#S)-P3RQd0+A`eLjf$Dpj_`6n4N{fhO9@J<0g>>iqyL}?dh$)FWp#=%n|!R z!HJNZ2f}9c@ozt(&V0=h6)cQU_cptE^u_D%ec^o<>OZF~MCGf@=sflt{d{Y!Ctr27 zbL%k(!RY{F0ghI;KTy<-6P^~V#-$ri5{=J9ehF9K#rq^;(kYAmc7fLMz$c+tFYqtZ z(cZ^95F6{1BP>^_doa+HRJNQedAd;V=of?JCA~aMF8zVi%7;>?&9Mp69frR1s_A{p zqOr3bLS2cFtgNbj7HMFd#fH%3f*n}qh$murP zGFH7}8OXbeqVZv~%-hEg6ciU}6+LUfQs>G9WFMz}!BWL4?oA3#v1jWZd8Ev#7J0eE zNlfo~m-R|ja&L*VLih7Nzm@6?#!?q;z0rY`m6`&BQa8))(c$`)+ZESJ-St?XKku%u zs;%uUJ#$g-=&P0L)P|uMx)r32e?&%I$2T7C*zU1u<<-0W*UG%|^b-Hs@?U7lKZVAU>C#rrcc=|30(WUru_90f47Y5Ji^;+8qec~+(YFMVsS`|> ze6(Lh!b1<~PqN-zYZW)FjIivPEE{?xVFFnKjocm zb6a-1UHmM2SH_j!5S+E8FYf#m*{u~OXj*r_3L)9IExT>x42Im)yDq#>Pwpgm+FCzg zvcC4i3!qh5?b^}Z?_Ytk+pfKeEpY7pi&s$rY3+$l~oLj&dC;Se+y*?N^9*B^i&2XVt-N83Y zD2p{kcDt~RZ=mcZoaizcE}r)rg7g3PvfI1kr@R^*&fJ-8Dcp;%>Zsa#`$O5fF7}X@ zGz|FE_f9Ig9EZkZQTzj+8h2f=59Pii$1=!f%48ZSaZ*~S{~m1+gG>wE?dgRJU;J_j zFhJb21x;RvlxckBhnQ;rcDuI2yO5iDpJl8&&?!OXg`#2-^uo1E@SKvUE-M1$^g4{L z1U}>eh-6wUM7*j45ExwGxu<{L{lvgYcU&M+5$J!otB_3gf~BN-ggx^(5Z(pLL&mDn zYE=8n08(RHEDEl6W3|iUB(8><;skdT_*H_V$e42f*a%UoN@Dx#9PbB76RFIqW;1CA zis-m`{3jzs=VQU2Dhfl9;X!tL@5PkE1A`Di1{w)BDV|j8W$jVSB3tkwcmp&^wd8ji>DlZ~WQqvu~82xH;t*`xysu2xZTVy;VFjV{`> zr~ahVh{I!f-p4F&0yQz16={I8j!2DG44`$-3Y)rwYKq>CSl3KBOrX|yP~!(P7-EbX6xawdS=rpGy%p3IOl9qPREf4gm>6Y29? zMPVHthEeFNiehcpvV6JB>MYKC(E2@oi^>@X#<<$KQ>7zfqFhR@@jOm`Bp(QiJmr|2bEEzA~J?9hHR`y}czB4^jLS*2dOCGuqp*Nmvr{{YXSbmgOv**4_7};G6Jnz6iy~GT(%5t$B59EOl=F4&Qi}GvEdVH$4mcLzI^@ zk=F_|#B`rTSTARB_ZDa=bUlgoTh2x?780~|2Vzr}bHoh_buGIF66=?9rLPt0pVWPt zGP<0n*js3LvFqurjpclB>HcjCLV8<&u5M+ap*Pw*yQsC$^slrad@1wkE#6yNWLds= zyPU{aVp)l@0=}15gc+1La8dAWrILK@@9}LoE3e~Nq<-c-p5WRVXU5Ym$DJaEsyKnN z%XYsgULYWFf`Fj>CjlY*Ax!YMwK#tR2nTopK=$tep-_!{FzpBZxC02MOrS!5;=*qi zp1%eN-54H3PV6#nFyLUCN>9Mu8rK`9hQ+qmEcTi40g2rEE6(qKx9!6?_Dl}wBZLy- zL`TuCueiie$NTQzJ)hW+FD&OVuFyQ%#wTc5*cM0yOHYs73gzd-tt`$yJvD@SS>X9) zf#)cs-@zTEA0-+eKi-m}1z1L&y(UugCh7#hUk#c0(8)?%GC;6^dVB$#@j!Q{B3H^s9zHUPnh985(8dZAQUgTA_+vj0>^+QlD^cKXM=!+V z<*~PMuE9h5zDRFN4cYJjcWoTc*}om}v^uuC_v^hpzAH*IA)UAt(=1lz61$fU2+N3o zQ-w>1Xr|aUMY@VG6dZD{qPOl@!RtN9 z6@5M7IGipiW zImSS9OR^d(-R8?Tu&ky|c6|mB5`puAV;O~he3%`7cgqGshetZFq_4H2Q9{a3U9Vq} zeQ$TdI!Qgq_?#53$AS4omgb&Gx>K|BX>2D7aN}wpW!UdIa6C&+dVjh+$Vg>3-wa$- zA(6$~tH&{EA*B7lq{($+YwWJOVvRW7SiK8TlR{j+xirerG31)q-EX-&b@#f)qH1zP z<65Tb$@}y3;HCT&N_j~&B&jZ5Dea;Lr z)7n7lWGkZ*TcDwB?Y^{PlieyaH@JMe%o0~~{(j-v0R%i(*PjCf8G7_jK=5J#)6$Tq zDZIjvXY+wl-t+PPo-S$fzXycvS{!dZ)yw~bTAXb_uwCtX*0Aw~0tj}rdLu2oVBz0S zKuDA_x$G{pTjIIBX>C>WeaU~l@SN0pF?wutrM8Z;@N~a;wPBHQ^J}TNoW$59?`mC# zL7Au28+w_&tK`W%?UiZn1^+wK)7#EJkB#$!Cdsl}iiQ(PtDk3|W*=ONqh}FFloD?LUcUpVOe%hm*&$JzkFF~UysSQHL+_a(cuG;xI8;R(kO&`Ae6 z|72`4-{6eLwMbTPzrjK0U*Jl!mC*Cy=dlJCK*4K8=WR29wi&J2iE}__~F)@q~*X?`lPAqp1O@RP@?RL4Fw-Q*x)z?{$pE5){bE&k7eU zx!O`cfB&j#_ot>U!ANYpv8?h3sgdXiY}4vT|4)@3fl41bvX^wQ<(uC(SJK;AyG5Rw z8P#LcGg`i_-zv`10UO}Ry6b!8r1~XipKX1XC@;CH^5GENo+MaSXR8;e0Bk(}L_F{? z{X5VPWdU%A6ch=Kf;1*j8(o3-Wc0F!DG3#T3d$@IGh0E6C$#u;-p_zpT2&vJGGYzI z1q-Nxw)!c1WI{g)F!NE{a4jd|oHCJHMtKps#>ULPpoBsQr8meyUpW{xiOjc>-Moxv z3nFKrI3Yv;m&Iyi9uCPSXkk-WobKGq5-uZz8F@`G8EDw+`V(**tP4>-?;|0Zxe;Ka z5;EJkm3efWUT{S^3^({n@N-8;VCGA3t?yx{>I{_g#ooJ`li|eF{N%LIdAM! z(U12XJ5~rr8dd+8V*87T^OshT(-_4#N)cPaalL;NaT1i?Z5IE6I0DAz+Z5Y{U`3Rx z)2`o8Y%fOIJcr9}eJl9`ij9Ie$yOnovlA9x(vw^<14g*$DbpgnyDq+a}4kYeH02(v@w5TIzjjLnW;TDP{_ zLNO5tovLOafiblo<%-G&b)Y!xv96lJry(jPx|&J@PNe*wJXyK1`geZU45xmGQ*+TV zPzQQ(XJ48kPlkOC^WF1&2p)zX_VnRdQkPBquCR^-(S>>9gP?7Dy62<2EZhu|vX->g z)SQyr_H@^4skC-vK1UQIb-rWwErUz0B+f%LiTu(@7e9_tcruXHBr-z}XCZkr6&67q z=+N`bgVtv2dYZ?og9 zoOO63tJE~j2tMIO@vVLPaNgUJpuAq z+C;qNcN0vm4=bIBPll<^SWu{{l3G^inf18>N7CKtSoj1U8}Ehh!eoh=Z;X5Amw~;A zHzvP+YAElmM*{afbl;O-t15r$v1C$NXwgP@G6U>aBi=A#u3!2*_W4Q|CPf?X|3xYz zt5d8Xd5I1`dg}GJuRiVQ#!YCeXZYGs+;w_XQGqN2z6wrh3&kC2`b2cP6ijtoCKA?% zCYJYWyj#+4FamuE5#$6r%=+2i|A0&gjuFUl!M5NnDJ!kgyj~%?wo$Z-KW3W%IMN zG#z1=C55`91i3J`;kph;k}>Hg;srU`3ut$A7%G3@$ScrblT!;bau;GQ?5F0Id)|WQ z9EhuM=fxVw&>zmBVs%l`;A5}s3X+^;3vm|_Ch~MUD1Ts!0H{&33*mx$r>-(N*|AMF z={Q=mY4+J9U{xXQ2Mbz+w)BMA3VeG#(WQxj$pp5P{t!__M#}X4QC{lFJ}5oA4PxkM$g>J7!w3eU_1g=H2ZzO&Jsh?}nKjz8)nGQq&sZkK5s*3^y zU==TJIcF3#p1xssjsj8&%&g*$9{Ke)Z+@c#XJk z{n51+?!Jl;g&t4`T6>6MstnWqV;yMikz!wE^u?Yxf?wC#aZFX@Q2i-1-+BkZuqrmG zXG-*dudMIv-eRhs<=7zHHGw-B8G7?y!5y9H2q6H{9?gHy`PXvnA3K@zW|*3Ahq%15 zEcr*tWMXT@lWddgyD)Z03fyhm9(29Y?GV0G=(NDwjzi^k4h|YYE$GIXE|tl2uNu|TA^60RbYessdd|FEJv-D!w*M!pr_vt>ett} zlDO^cIK*QkaL?k6K)AbCdpbN`9r3=vLD#VCP7nj_DT}3mG$k1ObphWxitQoNz&2Go zJ`3S*CcYPhyCm%krdvW;*)kzKZRf9maQEPA#FV$k?e8(4fc{UP-yILLFFYa<%h>+{ z9(3f%$Q97{K7KwMq6j6HKEXA!ukCTkyi|WzUK2^B+00=At-CM*%0gk>^u{(aL|QDX z6BK6FZ#Nm$ZvcTp0}Pruj_NW3{MW!VR*tb{jUtl0jHP+#f-KXVuy6b6^I;*V9&|{(^&Rt zS4Imni~rkctp70FaZ=VS6)=s3SH0x0zn?BfmN=lUz*sGo?=#SeN%g8C59COHSRTeE zQR!lGZ9H`(lB`Y}59>*l$~|*WLexHsF%E3UocOA5JnZx4<;p9*nXR-{T!scZ9J#kf zmQL&t^VFT!{tC8>lP(PGKEillp#>A4yazeuSN>sbh8_9=+}NOYN-xtkd+*L<++kY8 zn8exMol8o(Og~y&{c+`Ys9WS&CSG|Cz5FEXQ`ZESZAX>%aOsf2nJI^D!E}{()iq zL7C;j0ORs2W6&KRLfs@=!R+gG0D^;9laH7C&`@!RQvp!{Y#^oxqr}yg=p3%TxtBq| zn4m^Y-^}3(G{N-G(W)ZxtSpiflHyj)92>^Ad*WM#wv6pVjo<)qkw_BWzZh;F#T>l( z#-9EvLDQ!Y&(`)rU69?Lx?4z!WA5n$(__mv*;>7zSZ)nCO(h(l23QjSM{d0i^?jq~ zj+IMmif9$k;r$&LE^-q^jfIdh!;8^jDqL7&mIia2Ll_D4y1|vS#bZB_!+WOgs)Avm zg$ZQ3aU0GnOvfO_)TVHaBnrc{2kCo6kpMUOgej+&No-`;(FO4BrvII%mPLm z*d1&vo!lYZ$rcOBLIWpm^!<%26fPmNa{cBwDNbQsEdE@qOlnh(i1M?}e{6f`{0Fko zpJoC7W+&4|2izE47M6QZXt*z{FKxpMeehf1Z)Kss26q-p%~hoy*NSasHq=>D17f`% z%u+4=0~SzHCupPZ$1=0cxYdEvJ^5cxcOESlq)=eMHGW19ca&`Q&gp|+8Ml4A+ph`o zAyCho=oqiV+UWv|+%H}TqNEv=OySRwr7 zolCk@(nqH^mXnVvL5unE8iKKydX7#sGHAtUJ8OGf=0Q!@%QSjH1FDo{)Q!F!ESLyts(ee?ULZG!e3WG-`Ua9FfLGt7--t6y zJlo%}X1vM%RBtV{c7HD=Ym1hn382O_4xTj+8okJx;8P_aKj~$fVwwP^SgCz(cw#Taja)82FULF1RCH>VYQ z{XXvj=X?%c=eY&jnbqM?%LdQM7>#Y7ZE0;hHvRPatb|1GooT>>X>H6v;c_hoG_`$w zpGQ9P^-(@CZGF1%;@&$0u}}B zaSN|D8H)Tt+gf$}*#=3_V&1Uv{LYrg`fOuX=Vb5IU01N>$>8aO>3g5HzE*SNB&W0+ zr@u78@g3^etoBA&;-{-fuMr7&-CfEi;y4ao6M`HxSF8wNL1eawDjpJo{~YO|2f>jJ zW}Uuk5Y&TWjDI2D#_U;Q`&-4fOida#JEe(GoC9OhtkhwbEY|dq?UCMRAjLtYGzq=Y zp-E)%`0XlUr4L#GIv!nl(88WTyd?@>q}wxQ52WBUIS&;)lHV{nUVziYn#a%+rpT0l zj^L_`29i}H{AyIr{huS5$jjVv$S9@CmSi3*%8}J*R=<=`5hda+ zsz^Q@YZ^|D&)w@-MWY;Lza#q3Rf{5ji2j(Kz0#j=RHkNtqQ8MP{&PxXQJ#Emc>L)z zY=0~I|Iu`>`}d|hrf(o)AQ7}f?!5+Pr7%xZZjtij|4{V*Q`6nH1nO*1Z2hdu!g48d zXS(Y?s~`PUdcKamIC8)Rr%L2~%;8FZT~=m6%NLCL2?V6FBxz^b*Nj2*L84Yo4o) zNE-k(1xv;uC&A)`8{9U)bQ+g5ZcsZLWTxz0^VVlFNc23jnUx$x1y*6OdayX5{#ijr zj0Nvdj?NLVIH4JoO7hbUZ(#CsHb@xL@I;WA3iYKg$`7sjFBd2L=ZE?EV<68&kIz9E zFFz)Tr5X3%+JA7rnr0mO%M)G8Z=ZjRaNNN!gBGFR&i{C?d+i|)YF*v4@_%CphiJX7afcF?u2i|p;5;p6EF zTY=d0f~+pdK{KgtFrs?(;L@17WH*o^{d)6VfBus0m)Y#s-!|AznbLg%Hc=#`Zw{6J z##(jx)raNxS+7hTL{g&q;cDWO7Ymw>Z>+R8k-mJoiuc%#>YI((Gn2S+R2)_hV15;L z%;59;=j+>wBn(>!H}|Lrf+n}oo?MeUT=$9XQb!Ov3Z*o0cOh6d2b52?-X79H{F*f} zpA41a&thNyLT_e1c@dOoL~A@~7fwrG9lV*v{W+N4JO|HFNNk1ERfcM|BEx9tCb?(C z%Z)`sMVIKbb zVLlj?p;AD3sy`I2`A;~wUUDw|nr-t$$;GG?@%XzeYW$f3dcC~X$H2)!aZsV!|Hr`!~Bm6(E zjIs78Rm~Bu3+)#F`P6nBnm;FI2t{3HS`hatrsPMmyeFNAu5R8vt&P#HEI-%82kHVUOq zw1VTZ<1JDIvW_L(ojsd)A%ZI>LTesObJixNq!z}+WAbxr-8c$TR<@S2i))5QpA}N& zrm$tz{-mHG?+i4ZOt|TuZ&5IcZ;x z5KBuPpcA`gb(uWkn6zj0iN$dW!$Q1<9CLUK*4p%EXyEAt^QS)0y$-wn;LGc%cl;Dd zyT3~~mF%fI8KzKnx9^q)YdA#;pcnDuqP~Lx#qEvhl80mKGXTlfXO3#IbmK!_P1%9& zG#@6v_fiPERluA%LwWk#r?UH};qhH@~v!B&K~=+5}4qJ0YBleb?3ykn9OQwg1jeWg2;z z;;%hA*X>a2mfS%tY8rb(-|^4-YyW6Er~Q69Z~JTifJnjAZTo9Wd`14J{#x*9E zT|}nOrDMr>`Xr*JIj$NkBI|S@#vDfJV5#hn8iLgKhZl8>)=V-B*%27!d((o3_v+rW!xA4iZrLCVGEdN)fNsiD*;}YgzXlT#F4nHlKI!pOpb4q%3KM96HM-xt&3`{h zFo8DJPJoFBD~=uhd+!eaoiTY$@yvekQ4N>Zv^*mtNAysl6p@J>V*yP_OixL^1gqde(Fnag;G^1-@~A!q7LkQ;+u){eaY@^m z6LMc-#IK&NRRW91x-4h2szv5!y`nfbW^>|SaTaDKI7ht5)pG^yNRi;9x**%(Ii{fC z%%einYk6Q1+2Qal-J*iXmj7B2*?)Or^S$c?@(CJUfRPxOzh~O>GW@Br8Cdy3lQyX% zmhaUPE@rS#qwBd#dheG}Q-#YEa>UbH-6&r`?uE}g_d74C0=6hJZYp|pfZ@Zn3$Man zxUWq>*C-4Lg$dV}sPTCjezLDx><2@F?;K0aKixG4PVDvhedj+a0T~R2%J>WUXYOH2 zX1;rhrCnvZG@E2>xCZ1i#4EpcdtLfe>@^De`hpe)%~`@Gj&P$*NY*PT>Z}Ej%{;{!-T(Hri%)OHtndlVAGZf8TOqy5H*-gjTr&`N_L18ZW3B}kmc>8hNuM|ujV2{{3NoWnb_M1T-7@Rk5iwuT0p{<|T7xin1s8-U7@j|@v)~IQj z@of?*mGVe2W`ZF-s_<>< z`v`#^d0YE8saueE_$w0BnSZP-mhx473JIb8sZkQOYI# zoD&0NxUFuo?b}>FPU62%aMIL_hB z^V(MJfeCT2T+(5GFvxl@4kNvXtiW zt!>`(+ywWkBZ&|*rlyB(Zo{r(p^g!SVo_n`OO!1hHrHh8sR82{bVk- zzepJq@t-Z1{4dXRvEOy7T#uC{4w-|UD%*A)4GYHyUq+l12ED~tW3pC8-IBl>FWXC? z?3v~<+4+nqxL1D6AFN%~#U$AbbcwjIEw4_5C83d%msUUc4CWHIhdtisS)^FB&-B$# zdsg0Lhza-#Q#?BoaUPT2>h5<0H{NCG3I2GV2k#rKe^;?;SR)qG!-V^gIMcA9cJJQa z3ojZJ4xN|mS3l%4_mJ)CD(=b2UERR*?#XYfuNZ{8fr$fWzju#6Mt6%0T7q0kS`JuX z2HyH@{5CpM{%w7;k)PpfO|k6~`C^>$;Xe+9xQg105}K4<pvf>s(fS?vS70}d3C(+d}HOQid|l-vC-21?3JcVFskYNFCJCBvMGxU{*y zO>w{cw`ckvx_4UKAgYY>$BEd%toh&+ErWRra?$_%)-Q$dmN4im+zB-tE`kr(MKqbp zK|)HgCfgR%-@A9@gv}~>kiYUScHqQc_!GQ~+n7sCpf){1HE@$V_U|N46XB59-Pt2R zCo%8mb$1s$LQoych>4|wW&ctqEOUry!6$Amz7$mnzT&~&jx6&m#P~RSN36Kp9wg+_ zkK)E_yloMqWTB9pAt7>L)7?vyI^mH5YXpe~ZPM-7Wbp9XPMxs1@Nv2OX)^s9HZk60bjzmUa z3?6cX<@r^L#Oa*Rq6iJBq_|i%L5VZu(ihR~C_$Sgff2>G&AXWIP~-Q1P~#Db(~3i2 zlmIuve!ThZAn+S-G9({*^|7Rlr*;dUf*Xrw=~;u1TJBVx=|%boeNA7vl}Dfo&~*odpJ&Gp;nrufjlONPb;o}H`u3DmV|y#Z;N=hF5?3R{ z7FG{2d>uNFzSXbLNOeV@ZLRzDl5%E*C1T++ENZ;hHlS(ht(5;QLK{>F?CmI%^sB7X zppsgnI-HCT;)_bBwe*plZ9|iG|LEVSnr)x3=kaJZm~mlc}=( zp=fMRC-bf7p~_MdABj#^6UAdN`y zy7ZU`?z_>iKe9Jl$3VyMJn*dKmt6C)qm%oZb^6@G&BSLU^Z!>2EWhNMF%KUVZs(d~ zCjYJL?(znqXD9|1io`iognv-{cQLlwLf?b$jo9A(%F#doNn>!j1JpbAMCdPN@&B-u z$;6%nV?lGT!3Tg2nCOAuMaIBdUK+J4?9Wj^7tGKlY(KGj=RJR{i+$2C&e$MCm?yLF zM=R6qcU|Oz-n`s&`*DOUTd*v?yLOMIm?4!5d=7eM45sdH;r*j5p3fUEQr5|=F|Ny2 zr%*mlDT_DcQ)qDr(43r?j%;d~+AfPP-G3fHcsL?*0*Ez~vUsVe{+9fv7|7&w?Vjzj zc#&1af;~!?U2XR)6BttdT%yN)ozc!w;S+E(ol+KmpnLvF<$ z6Jc!TJ`>>zdsi@!<^BL}Dz&|5{OE2;s!oTEx%{(benaIo-@7D( z;-w>bbnY8&NLFV=Z_M9UzxMT0gp+h6S{P&{aCPr)`F-k9_!fbSb+71OXsW`CSaj9abC;1oDJ%qitYhG@q0zVgkeY6m$%N-Nx;eJE3$2dR}PNFVCK_oR$ zVbrYAqi}fU#JDI#Do@r32d8%UlQ0h0r#11EhVw+J_cCaK=R!RpwsdR~jh9Z=lZGFR((7m$nxwCsPZ7Du98%0}GiTv`U3~=$f+6{;`>cMCH1sI$9%nCTga+ zYKd22GD1_gJSx{RL* z#;pok96g0;5Zb?398Cfd3oIv}VrIT6175ec`^ z>Ijo!brem2*E$wFC$czlo130NqbgAwNDUR(IVX}yXmTSSaLiy#r&t_&t%YFRHZ&W9o<#&d{}_cVf_iZ#5;>`I*Q94_&1%52D;B4-LW`g(xqltG%-OF?1_$`?%JU8 zXt!!1@`(`7!>G3^6vk)Qx}SjE-Rso+85G^sArxYM>d3hxK+83cWR6%G3ga^!oD#5) zTak~EU4MeY_>4S1TVudN!kG{g%z+wTO0N-BFcrHc^|)FT^>bn~`~DgbA)F~z_Fw~u zg^dx7G5>Y&oQSZ7Wj|H9ec-s8u8m zo)Z~O&OHa-5Q$CQy8-I1u|qf@KdU~sAh)*5zQ90dYkt0@hRWNmC?9YAUpOc7zmE{f ziCNwlE3mj-|LA$JCEY2X{lW+=22Zc%R&0PAJ<ORm4$t*D^GMZh z$(XQydU!;KY@}r6pkViWb-dvQu5KoJPQeWMMwZr3gSUj2J{K(7&iF(SGsM!L{YBO-hXiRf}Lcfa*j; zXK{??ixESZ@{0|{=~QP|BKEoCs1FsW0e&dBRlFT%1so7F#K9L`&t73b2=y9QLd+3a zR041!mPs+vGG~%Qs!si*a|fPf)Yv&;govU7D>dNM9Mx+Y$Sn{pxH^n|2_+MZNp)2_ z7@`5Fs%fzH;HfRmZ^2;@hEE5thudi!`9JKvc|6qn|2F=fF~iu$zH5wqOd66sjeYF< znlvP&jS`||jBPAw$d+Wwp6nG;4cV!r4Q;kUix62_-0xB6oX$CQ>a+Zo?|t8ohd=$v z`*mH{^IE3qPYBWmCEl0w+1rDKSuQ_nBg{i^f}pH7oC^*1hjZxytjJy{tW59*D<&MT z(LYOtnC9l$<{>2QB^ctZ#hLAOq0SUMl9|GQWcMW)gxc=dh5&e8&qS~o%<)v_j>EhJP9+fwc4jXnCe*l%^+oLuofE_YNW>Kit2G?(u+GF ztF0R`{bzw~&T4O{k>GuqH4NFQ;5e!MR9Y$bw_YRkzOyZLB}Q#gHqMNN=Maxe{)4+~ z(YLOcU+6WGPX*j2;zSzy7b;4ZW!)Et1h3A0zsBP4FU0qI`@$aXsrk~|=W_eGWDsTd~R-MloiKj(lc zP+YaXZ!l3(v0v-bI^Zd(CFG`{7pk#FV zLB+m_+$$AY4kYnL zCnbXGj{{KjCqulC%M4qp@b=RO1Fa3zcR9oUMp*RZ2s4m`RmL-Is?UD@nCUu{Wj&wI z00|Lk9pN}n;;fxHi&dt@@*ws2UyWr$)DSB6djP%&u(%W>0NhNq4%tA9c(2~6mwgp_ zBmyKFjCgH_)_fkwWGfar4CUjnj#$rzzPW181z3m>(q4Hi+^uBT1*Gl^1ApE3 z0sCY0dPjR1s~LoP_w%Dd;0P!{cB#vU#`_vFR+qG?wy^O94*+7`vn)zvn}ljq1gm0R z`>X0ZCrDmG;_g&dLX#&yI>Zodh(kb|bom6E+)=U(HHNrmgff0iK}U(zqBoxhOM*(d zCTW=1&ZR64Ld7hdy8#w_U9-!*IezsM|9%f&*z_Ti;*rhT{X)&CO)^ZObh9KaI5X8`f_8DRa1 zz=ZzS=tIJH=>zu9^ud?aI@XqS!wzMZUv&{LwdZR>O3j;BVUJ<7V2xu8o(1~qJv||{ zqjryyAU`E?{Yj`g*Oo7~O_e0lePnPuUPMQizD9URpAA>fqGDo5+X6Y$ft{C`SwR z9?qs8jQ73Qqy?=LsweFN55^(ljMmjV;ofjIHK?bfxeQ1jj3|zNOt<_|^g5!pBP9ORsLHfY^C;AXVrw`E!-z$z#g<2q^5PWel$)}art4qzI(%S#LfI=?5W^u z^P>qJbNWm>h{yU~WQA2U-boTb#Ujc`xs<638{J7S&QItBzKTq-rauGuA=nGJr|P=( zAS1ioAy7rhiCMZv!DeoK8amhGle2LFYElD{0=xgn2=$O*h}cPE%cC!cE+2oV01u?= zO_baiS-@aTZ^9oPA2^r;c*w9iWO*>4k>u4-S`2i_l3!@Jl^J0JbUaBs%Fv7I@d}7z z2PcCBCP|~}F31#@X7FA%bd%Vw{O{EJ5?1%`oKf8G-Ubkr7xnbl0j1 zB%1w53tyHTirG__>_{Q^d_WAV6nM|&dIg%CHO zy3^?71qp_r+@}hi2qRo_Gd!IzHu_+oT_-Ju9eNm=pFI<)L?CiiW<()g3bg4WhuO<= zM^`=)x=wI;!eg@9WZh?(T>{DQEkpx_TsfqU<6H{69fKf@%p#Emz{)bBFf4toELFN8 z4{Onw;L|u|UK*Q&9G*V`?1yb4!5B~w1eD0MfovJol<=a(J1<&>wt?9P*}@q#L*9tX zgSYn-s&owEB&iV2y-T{>fD%IDV|dmKcy$=3MM70{*%o*ysL`&~+q?6obAbChjjeT& zOMG=X2r&n|0H!Ykr;^)gwhhe+T#uIdZ`Gpy_6(f(hZejP*SfW5AmY%2i=YYUKM|OI zqYvxN{rzL0DUNj|+f26FfdW&q17`(T`%M>^c)xZM-KiOR0@4SKH|tryJ``&@lOFg` zaKOI!`+stY;M(!;@CEzlzi^4Tur_=`G`{n`2Y)!cd#yiPxcCJiINB~qV9=eS&(;bSLt%Y?Dlbk@EDW12N4}kCVr17L5IRVbrDh9|GXZZ+G zcLLh=j9`?uDCWg!k}{6l0lfe|6x=sU10n;d9UINmu!8`T?GdM@7@anXKQcvKMtC>aM>{AEq%6@ZGjz}t!0%8 z8KJygACHgk84VewKDxSuKV`gc`O!(O&r8p7LwuK__DO}>B_VTU1IVPgqXdlEIF{EQ2OlFhdHC`=sq+b%%8vlhszSX&Xi*@{?tU7GC36z)sP+|(Sj+m|V&wBsV7@t)* z$|iygNBYggiO+cO%jRx_>jXgc5)}Ds1c?we^^L#rg^Khzm!@HkgdXAtkT0A*Y=wj% zTY{?)Umw?J7TEZd-o}6|}tr%gs zV=XF`!Mgx@Wl4P<%UrU^xwDwLz9=5>*ij*9xJAW7 zpFa!5ne0nmx7)|Wym8Jm@<@wdi$9qoPA)GPRfus>k^#^u&Q)+$ zH#`)1ub*EJWgwjmAnsjE&KO9@keNY63J7{INiBs7AEQAf*wCrC-XhHn?UAyuVJ0h- zfp7vbavd=ob>FR6=Su2oD}5irq|O90E&%9p!>Aw3Ckuh@zGGCgU^hoXkg7sPrE@6z3(4lcWoe!VmQ5vBd*OGJ-L2V>nI`w))##o#`~yRz8(U-u!_ zE)n2EQ4p)JZ@KId|L=+tNF}tv7lQZKs6;jR7lo3?A>@_E2`AhWl z%_ZVanjk*WO*8q=mx$<(ODVeGCF1DUON6hG?Ke~+a`(4X!uT&#qWvGJgy$NS*kr_p z(_zv63zabZol3m@8I@Sh_%4-@{YoX|h`NIKwluyBKHOsj#YJh5gfx1f<%atl{E<83Tc`aHuc6p_jVcLP!xrT033!{*nENph#*ZKVp^C-Nw!Dic|;sxM1+#~Z~x0ux}EseG_Xr*wb1=EbSv zn4p*PV7;lU0|R(`_e(#Q`4W?sue!Qv3QT|r^OTk43zveo>i_bv`TyrH#E&OrD`k4< z!{#UY=)QjS;llz?-*Jjl@2EXH&g4!TP83mWxS32Lu^?i!E$d$}Xk1$!&mGeyFvGJv zU|7=id{e!gnCX??czbJ_M8O8=@*6O&yE2W{QtV=kZ$bkI^gV#g6j-0EITG=1TDzx` zcZPmkK$Cy_@}n4Dp1J(_PB~Vt{~5 zfmOPU3~UK$K}pT(&o0cwU6~?_wbEoavPp3;8MKLEP)ttq=hpe!qIo)o$s4iMxU3ub zqFnqMYP`dIC4DfVz-r2|dOg@DWHWfSMnGG2k*vK>LiC=59N^}|EexjCq3m_^g@qp^ zzo)5bC~P@ofU^UsaS|+utepZD9fb z8RgP+EdTEdLatqYe1X3=T!Y8x&EONj^J_VJzQ%>NQecog-kB!SK4rzGLl&q%`Y zpOAzNwf{&GhQnb|ts;EhaH<=^!6saY3^rWnx%w&zGDI|JC^1;W+`)$H79rVm9z3Eh za;HO{F-Q{Hmy(%na3#&WaOUTE3EJ=FPV=l+r#ZVdu7~s=(vc}0PexcYgK^-_O)z&Y zdf$#y01>R;L8kY+6FlW#WT0(vP5^I4EW~QtoFVuGwA_21bufD;DGf3+?3#7t{ouAt zU&d}4!9I2zd;)9@Ci11gNZGmCqyoFMr-GQL3Nu*hLua1O06M4Q?JGWDtF|hBc&qsr2GEob9-|+zeUMepnvFw*9)SW<@oas% z>}5@JrkFeFt2NKdGU(Q%;TcoTBQSq5p4;~Td7>87Bk`kW-X0IH(gNqV!2>fAJTNb1 zJvT^?a{@U)S?4-k=+bo-a_=D*0uANe90RH2pdXkKXD^e*wewi^5%mBSk7oY31m?{H zcz~G4JexEe`f%(lB7qpAqLRlP=?_*kT&cZo&}_-3PSxF#Ho(aV13)(t1Z%4V=*{e7 zHx$k1SGyFg?M31+hv@>^$Tk;h9z*J|n1p?Oo2s`tk2jTuUKwHGn!k~V1|oq_63c}A zDDyrxueQ-)7F~ocG|s7hI$pg<1HMg`R*#gEco%%}?$XhMYibmM*4OzL^fPk%IA|5hFvbU_d9j{mJ8 z8vMxPz>hrY*OZ{@9s2(Y&Id`;_i#QNz)g1?8UBXzH`>N>|KMcs7o0!V!93`R!y=it zibMR-(Y| zF}UeD$NcPQG?IrMN&2B3M09a1*<976k57#Q z7PZ%av`PG=C0Lp1vMv(Nz4wen={VRBEhJ$t4)cfD3#Zhjf~9IgDR!1%gJwDeY|sQh z@(rSl0wwa3a5gE!WWQrz;=nktzX9ywsdzA1&|nBELCiKoaz$A|p=m{lp_sD5T+K}{ zOH0H-+tK-&mxZOJVB)~1)WQMt>Oy@*o!|NMmYM&9GiLU`xZ52F&KS^728&N+dR9ll zkNgJ<>hKYPr-8$i9_9McXtnG^qv2YL8h5vZ;2FmgtSS!Q`GWXixSmO9lKaYwl2s7# zL+FVA-1Yo!d}YDDE4M+BgeD=4uj!nmF&zIeqhSUf1#0O>flc(IKqYJo>+HSTYfd5% z>=&&$i2`S!m};l}$9lZ?pjtT9d;4#!gH$QT!?Lpc5z8f6mB&eU4`#MAuDMT9jl*za z5NI93z^bD_obP4S*@kk5P#{gCe5Dy}vfdtXcP`L4;zIQJ#R+=Us1dkG9}KIaq)B%U zZFv0*)jJbuMX88Xzn6ibAA@0>uqvP#yQ)oUhRAuc?kL&Dkxo&vAJzqesBM#x2m^_@ zJci^>sL)DBtD>zrk75b!ttUdC3#1jw_$a}$;WkyH1ZD^!ip!lEu0KD<6Py(#KyM9X8?@#To1VP_Y}+Xi$wu9%#v8XvXtEbWT!RRk*gT7@!Dk+QAf9L@xNX|~C3PZsmo5^5{h zK|!%PGKx$lO6#Wh_WFH}&%9{Xw*EqwMdb67nNR+_r1qna{N?}fBj4;*y0)a&>j~zD zf3~FdPfF0Hq7P-iUyg55%-58lznlzqJ3c6L%AIpK`0Xm@mv8x(d;#R2&%f0>ZXnpv z1~@>uAe_o>8T#!c4VW)b)F+D$0(g49AmQ75!PKo&)>d)YZ}SDFNnpMJ#mr0kEnje9 zYl3AK(1-e-s{i=Us=m2K-eW`poImOO4bb70s=wCu-+L3lwVqI-GD7cys($tpWj)p$ zs0oyMMMUilsOqyGf5bzJ375BlouGx$>yPC(?9%2Zop^c;5}3HQipgJTwfb-xHa_tD zX7l;&w?F%G<%9J-J)#nf`}5wsd-ZI?)@v%ao?9Fe1j=W9hQkrZ>{H$BGvK5H65yJ- zH?t$y_V1Q=pUB4k67286^HIS1V{&ko+gg85`g-Tz0K3W>U|*mEcEp)4fc?sPF7BW; zzz(yx^DSWCy$0BMi@ySPK3kl?w}4&v{#U>b%*@aMJM$V~2Tbfw&;ffW2-v0RfW0d9 zcfhXvJ7B-G2H0Iez^>Q$6|h@eUA;81TW$@oU;7=fxBs6A*dwoN_l!{1=~!bE)NY07 z#>%=cjhh%JhKvE7`3+cvONILL+>IABbkD7mIy_kte`^_kCS9j*sI zCZ5i7ictf!rh(r44>O>hosRRNTH~#1tM5=!v;)yxRidBcFchuIPq)gN(0vMV_PCz4 zuRpfVc>3tfqs!}R!MiXB=W7vt;ouX{2R;G0&#uqB0?)rL529qjL{}!QS;!p%-JF32 z;+-ScbN4~8Y@`0i1#=k(YZ=2;Aa*VQz=5!aNZbSXH+Q0#ftffK-%*%eUkjFhwwZmX z&#Q#c#%QfeVF?^Q*rNXoyXrO*Dcd{BW`S#CPZv~HYSQBtLAGLHO2AMd6vzP|iIonh zsERHh07T4W5R4K}Kmc%unNcT?#X@vn6dGIy<&Y(#Z$Vi-<<5z3a)bi~&`{-)rz3dK zND9!XWmKAA87^K)kQx=1Al23nFmsubIBG$ypUs4zpBN4^!sVi}{TWR%4|rOYkcB#} zA%>tV6p(cetbhcBsz#W10ArF?T|K+*OoIiPGH>?eGjHM6LkOvF=TC1SOJPU(QfW_d zVJ0_qnBQeyH(*h%9&AtwJ;`YVKt|pCo7iV0_;y5kZF(46wQ!ou$w2oJp~&1M8h^6C zq2|@}Rm-52Q$+g0sGbm$hSvz&J}CmQ+GQP{r^g)uj{fM(#v0luAAPpF#0bt$TVSs} zC&FIZ!jI`s=1wS(v6#AUUDluWG9E0*{DoD_fBKgH)dlo~>F(P3cfHfrv41mP@Z0(K z_tod^=flN-D%X3B59AIW1<$|n1KQ#Q(jOyeboZ!YmM47#P3?TE#kQ~T9|nNCnd%_? z7yPR6{PfAt{a4`sos93of3RHpPw-#THWvD;@E;iX3jcv0!T;T0ALl>8|7SgG@E^TS zobm(suk-`>kNXP$;a}iC<3GWF^dIma{w@3m{sjMb`~m-g@56s-hrhyq;1BrEeCiAQ z2Yvwm4gUiF-EB>|e~15mIlsYw0EGXUQ$-;B&)oTcEc_2{t(jll-1CgIdUbKwd~tmb zKAg#NY1CBYm^x6+E2Tb`!udvB@03%8M&HpLIz2CPKfGQVqZ}7snNka$UYv|RH?4W| z=pwilT7LQS3TU<9h(%O@cj0H1O;G#`=ut)O=}t4>(44YfWdw6=R&(o2C9uV8;l_rX zkMB|YAtWSs?*RgQF9EuwkW6Vd-~o`zRQ|^u&#DEXc;)!@Viaozgm_(ZoQViLM5NZE5g?l6_OnfGSo%M#0DvG@B-Z01 z0L}ywk1Ucwa6q;R$IA)4X2|2)BO)32qFXu8cq3NOU*n(eK6&Wq?1%P$5ENn^(jqIzQ6&J7%^Zo^4=t0HZKF~ zF(v?!E=7HpC*ONd4I%Z99-*DAE~*KNL9t<*oo;uy>f; z4&Ftd6>Z@e#jk?9qIuk{tUjBW;uJ@~kpQxKD_UiinP9IM4?7{(q$t!B=V+fVxJ^KP zWA~j9xD`s|4fyKv^(SSf6!32@HN7ECNxKyIYeULEeKIs8!>cn7Y3$s5-ZgBj`(h)X z%HIFv5IlG*^nLA77P;S6%)|pw1~yuQ@T#wY1JE(V^X-b+1BrkqZokV!;5(rLz7wLq z`cAa`JJe$0m#9VDFH?(#+@DhmrJqm>iJwsm@Bf@y9QbEyp`Q5@YO(E~sm0K5w}9_b z3%~DB3-ouW1^Ro`!t?)dYLTuAQVYqzkdXwZ6CtBa>z^)-TW{Id@I1xm^ZfIy+xg2A zXM(3SCJPkSuS^ye>&%aqAFNn;wI%1X`s=#4*dBT@T*!3wxMI&+pvm^bjLLOxGfpuI zmzl!V51+4KD-l*7=W(nOdKeS{M2l7N@-hPE)*FuX_)u{@LMFtK_K`~LQv*>zJE?7H zzVxqA(;Z3~vbVR#PB*0GK(70q_c;%1~yaxxyfT!Ayj3Q$Ev?5JTow zZwM>%kx|$Ixm;nSr@p9WfJX=lz#t^TITCIi%(jcdxaYzx#`Bmhj^qmpcr%6jk^yoC z9L0#dYTrA`vp=g%!Lcf0rrIMRw7>M5uqc_9FGi&7jX4N!39?g(9xSvE z26)@VYP^;rD7eq1!p+*mlxbI8>Y=IP zA#hAbuD>Yeb6wpY{KCBa7gT8&BBFSy0YLcU@e#ya`W%S6yNMC|1_8uv{g*~ zf}ayTx*Q~VB;<>;RN&ipVl9|v@Vcy#^xH`Rd@H`S4*iT%NCN*7r}$;-&>x)Q*Q`UF zz~55{|B`hG_+bj+ht?s%wG_hd)*;9*T8ALtScl-i53EDHz^__|fWKOYnEx~D5b%Gk zLtjq{-`tHO1@?h87qS&gqX}x$>UV0vo@XrF2K1GRos=-cB5rzWyvW^N&H}_mCRy|3 z6nQ%RiCeP@jf>Z+UtMF`GAnq2b-#9N)4Ix!bG>R{iP8En z#ZUA1!ZMbybSKNd|m;oNI!!sTpLzDg0*$4pOz-T zofdi(=_MwcPt9Sey zqN4t;e*YMvs(hnh~9j%J_}?z41@#Hyxs?($#Nwhb z70ZK_Fr*o_1~IQOSsQX~c}n3n+Du_{2+nA-wnRLB61=9Yym>X4EyrU-nPEX#_2qTr z3t3xX)146sa50w@5QIwACz-y!w2>=D%u1^AYP$stEa2fjVnq^)zvmt%0Oh;>X@&o~ zay(e20IC>Ys}x4M@fLx%Kd*AxwPAI_BQ}2A$5{dZQv6CJSRg<`COGr;RzbMRa~Ufp zo7Z{UK%MIIp_%I8Xz%K1L}ni`7}+VFfdWMfJt!wHVdAj>;Lt?k2o7nPwd}kRUP@+% z3btZb0VUE$$$S{^Y`fmvZvN7Gea6>7yfkC~ z$#BsdtU9{-`mQzZ+sY$_7=^UBdRtDRks#J2vAn%Fn_RNTNr2fSlC9G!w#rMF4|S(O zv1l%>EN~s>GZBU?cne2^%KZ{be_>=UW5P9m(HwN>eC05XPf-PiCzfCB*sXZBzc#S^F6Z;(V*GhH zB^($99gCB?Ox@tt?fidXQRJkS^xF6zqge@kQRJsm2EAS9I~mxQ_b_00!fy~&5mtJP zy_|T$w7psQPY|^hg7wP7xU|8)Y006B*2`aek$;k2s^0OhiPqqb&3C-%fAOr?{J14Y z@-Hnp_kP-v6N;j@+Cp)11@MM01ZTjT7%bPHzsZ<$F(3rT-u{8g5(9md+ zyi*|Tzkx93UC zy$g$dplE$|@#&f|@lODg{-yu?3Y%j0*%U~5oEnCg!U=bTAMo<*31+26opFg~hTkZZBhn#RhL)=0F$kz})fYgeHRfV(HTao1q z(nZSpbVR{M9dt>vLMZ5CPZ>VM-Dkj@fCRvb%a}1+L(Hm5cpO_V87VZ0f3Dim>H@w6 zB?vr*L@?Z6s&|k&KwI<0q|hCYtqMAM8vOXGIN$LHd=7ccxIK8Dsy^5Y0!n-2rXC-9 zNq@>*sZC`i$@SdWD2F@1I(xH)p%V1P;AdFu!Nlv+59g#x4IAtqgXvh3;S_Hy!7#BI zo|!TFQO3m7M`(^O6&C^H4cF+6CGw+@2GG%&SOU2srCvMjg=z2>x>D`Iwx(1QNVj4d z%!_KKmzX5wk`HXCf6BPz->?<)F0(yf6tjc_1i&0DS{;Je17UVD;65`c^+0S>5~C#j z`=6`N-)qer?!58r63h`aF@E~uV(i<_`_80qTheq|rFGj!e7bem)7o6*8(tI)O}Xzt zkGW17N_N{g?y^58#$Ng#w&Xli*-l1L+er)d8D$ykyM= z+v8B|MJ45~3xXt=Z`y^6ZZscbGf*daUsnRAm)69H_ZMZKNI&|0_#4Fj2!I73!sgfZ zs>D!80#cV0f#CUWvu5?Vj*}?;xW5g5cW0T@5Op)v559c-b@==1G%VrN=pI^KDTF~i zN5^5UDc>NEk%GL7w>xPi5|~oPx3*Wsc!HMl%BI3ITy^h^ik{19E6&FbYt5RhSB3pQ z*!n#_5y;5^_NGk88Kx z50aE!RW*s~?wDh`;6Fi-AT=+{Y_rR-I)1F9Gy5td;dNy6ldIZOTr~LXvez~}9&_tq za^~}NXXoVb4wTUl+#k;PcKMz=gOKIqi08unhe=+ZBTh~XmU|Wkt!fdz%`xio8A!AS z9vC~}r;(J;n7o|3BaWS|I_IFe^1LTti;UWuWbVr63A{Ws4&###U4U?DnjWNX)mu^N z(N$I*>`!8bOT0L3Unm%!#>AJD&#_ekFOz9v1M!Iod?93il&wx+r}4h&q8)6AJEY?5 zA`5(bI#WRS9#ELwxau9%Ih1$`rJe1q6UhM5d(rWCWMARz+%6& z8na8E4F*gUACd2tt7x+I5+|7L(MV-K?dSKZ$VsYnJnt%6_+<$uim=_-)w3*uXCzPV zmHx%2L**{Wlsp!_^GA0p?$RM}l@ko{&s&lGRYJOK87r5kvJNQiR?NJOp7$~7x3zwC z_>yP*_9|;G(^u6W-1+wDJy*q68(%2&6?c+T=Yl%fS7}sRo;_ynbDimvA9v2(0|o+m zN*NvY2*+Mhehb^759z#;&O}HOdhzi)gy>RkHVg9krt=JgqOJ`0qe6 zkZqMR>!e<>74hXhNw$o+x*>Ji;Y>b{S$R=lQj!NLa=@Qq=ZypSf~6oc_VM9X-s_mv zJK5aw9FPJYxAe4dvXDJh_i=(+JjpNhX_`tVmv7(Fa}AA$B#u`#Qha)EcA@;knhxJj z+jW{mUVeGzbFu5z)c}7a=Srxc#H;!%ttooeeBrR$Qq10@qi^o035F=V*k_OJzM(#2 za?r4H2m#@(<};Crj$Ai`Od1$kxEZrQja&JurRUbAqtc+{pfKNLa_9Df<}vA=oc-^G z4!`AJe6whEX8DELv+0il$xu?M9)CD#AENW@;{6TBCV6fH#-7(t4s%MbJmO|h^A(L~ z>OhTZtQ$}dNrDOWK|N|Ha3rB+NF5o5Od)z@80mHa2&Kz6a)VU{TEsKkBbXq0!K?Qs z^x3-o$%bDg2TNGc!GJH419#OXwYo2o!?D*}yk_%%mmJK`2|w&?S8bd<;h%60lpH!V zhi3mIIj|L=m_W%vc#cXjFF*@)bsA~TB~j^Xf+k(2u5-y5y#+FAU0s%;bEk5@zb5$i zy{eVDuhXy{7J~0G+NFw=(+7>MU^Jf7A>JydO>X-2EAbBW%BWuGy1B2y<_ujY?vQV{ z&3KpfLJI6n)-VjrKXrB{p_uc@Vavl{|IMd!KAN+jJWbED0_GR<-dDF}I0 z)3`{Yii9ZmBIw86IcZx^uu_gNoht25y>>Srx4zJ19k=btB3=o}oASonR{CRS>at}& z?J|m3xtk%Jny231Ag+-=CF z5RZqU_!CZ)yUDV4xj4VCNdpb+Tx6GC8H3uOH|4%sADsK<4xx*#?%r;928nMX*Hm2` z_YHoIY+se}y2Kn?zE4tX>tjaZI6`s6w zU2GhgOrotmfYl_7l4r?Z)hO_LUthZ@3=@5>giLeIAC=2U(*k*o$R6uv$9 z>O)G6;%hxIk_eQ>D9cI}r)6A|hvvZ9h)`p*n%u7kf(~pQIM1C}y_4ool~M6x-&BE+qS0W22W{G{`t*Q)TI7Ud z9y@g3TYe}q2CyGN(XG7D+-N`>(yIJ|z_K^kM zKd|VPH{51g-k4jOzw4y^N!QtH9wc_8}LVmB=3FNfLwJzC#TnPm{Fj9(G&!>Iu6wzf>(*;eiCh5$}mC0N#@ey4u;s zn2Cx8MDszk+1kS6Ip%*mOL80jpz9vdXv&AzkIOQa>WvNznr3aiKew6T`f+Ophj~1* zRy};D!VFlxg$5)ayuGP$U~CWc@P}=0smAQjggWK=k3reQmLf4K z9xmKXdN2sGdAA{s(q;U4{^INMH4`>s$qbbd#pKNuWk4d ztpwD8Is(T%ygC=m9MXF&pWBNHNEu;QUb1=u0euTEyAy-dR6l;`@hMvM*&cw9+=J(; zb=IEPGD61Sp}~(IYKk=9rgp^SEN2+P*CilHTDM2x+3AoYI8X0~>a#K1pFTv+2On=O z2ra2%Vi<-h;-P3NRGi5AHYSYyAnE;tA!`Xztdmq9=~9YgO{Ov$5n&EUrUO*?E)+9b zFrs#xn4QW}0x(D55HT~%IaP?evJv=ByG9>+zQ z%SG7>nwnA~k01e(b<|sF1W_=WC>Z7C9PJ$v?VAzpS0BA+AbQ_Yw7+1?0ri+b=a`_7 zn2?N^&=6sGeatamLy5^<$JHqgyc9_fN@NCQ|GgNshs3zmB?^_m!=o0Pq8`g<6PuwP zke(5nQ6HN{h|OM#%@m9+a2C!-#PJ5irDepGbyARb;wqMqRTN5Ly>W+Qe0@edw@qY% zw}A2T`s%aa@IUWD+Sp%z_xudrdJ}2stUDo5)H%VR7nY z!u+9dm0$-cYE24D430&AVk4rIVB$!HX&7=co2Brp@(mImgcykulFoP?7wPgplbn>m zo4oU0lC429Ql3j@7uWhOF-${pSY)y#?AL;b_ip$+Ml_tL$W(n(zgWS8hjmkhJ{ zlsy?4aiCH!8PrQVoql@obokWi+){%Kq0E9Vg>x>MCCu{0r!!w2 zOma;LHi9H%v}g7(oiS93yIGrAC$vp0m-p)68TGU?SC);sd<-|y_PtI+b}{q1lCl^} zPTV*gx_^-Coiq$W-NPxdUCN(v=;5K}shDSnjqa{?afz#ObuOJKG2U^!B-@$mgw|=E zmx92g5Z7T8tgomi7bX2G#3F87R_H??sgDU9!?(vCOp0UE=V2XZu&0yk50xp$mo z7dpnql4shGBchVWSjG?c%j17R8PQKJ>Pr(}iCG%NNyX+#hX(JutfN|*uONKRHz{90 z_MB>{Bwy$`&6RAep>qeP&f()^G(u0ynnrU86^I6c|6K(HQ@nXxjMY#9#I?Xiu+VlW z)1D>DF|=@`wlHwA&~3=aML3cuTvTpX6hJBR4%P5miQd~-6!5NSuUxUeuxcRY^bXhJ zn+J*w%8EyC6mv*yKkR3i`p|%cF}qZ{Ehf_=V%3#$-n-;PsA+8Gws==U5{p{u%i<5o zrL1`@Pj(q+V+^x~OiM{;GgqwBht%~$%lI4_mKI8#y2_O6)#XVE;_~N}2+*x{Wno@t z>opykGL55)@~*quG{+gwx|ACoDi5whh|MsRmX*J1E$?@|psai0LFR?^;TMKhGVTcT zJ|4O->dHOR9sMlx!o&*C^A#>!sQr{?#p&t_^1z|DER`oED(@W*Uhu0t5nd^Jr@|0g z#rLA}qwqQ?D-pJ}>QzA1OllR&6*0CCQJnFmhbF6d!bG{wyYq)twc0sfoC2JgPl8Tl*MS7u!OC3sJ+x-~O`uXda71K%GQRou!f8?4Vh*qlCL!I4>e?;$;}mMT-InT2y5(GV6GB2 zjuimTn;Dnw27g#8&r?eJ8UqWC)`uBiHZv@mxgzQ6Xnlw!8_#kpvayDxsoBiVrp>WE zzNyC4ku$I9-qx!eH?Z*ocGI=(AqhS6JP^$VIyml_z#hkdk@(6(h`G| zG|eJZ=eNZRZuEQH`D02fPtAkGsCocar}N*pZk z7(0olPdFRU2SLFqaj?KcbqXAhGm?Lv0**~QPj#kGIJ*VW2SLG#rwp&OT`x}i7L|fi zLg3iM8UJ?qiL5|y5cF&aSS6l)WU4=Rc1RBDoZ4gLgQ&+ z?Vw3kSFhLLMoApLWX8r&Bz1hYl_v+$0@HzmC_T{~F<=*9ZQ?u_}$^{%(G-6#f>7;q@F zGPh%4@}%qvp8u2x9z)ziTB1RyGjRwA1*eFZDSEpaoVR29ZKxVWtP|j8fY3A409@uR zay1?mT%)GxkW1zesbYYN4A9a_$!v-xkuc+ovkMpZAF2ftahP06z|`9)vLH$Hl2MDW zV+=X}LpGOcpVmuX&m)Q@WU19g?;B{$L?EP9XkBDqcnEwL{=NrT*W}%bVd?NB1fnsY z@qhr{1|~m4T95Q@Q-(6dmWU9fZxLZ&Jvhfctq7@JLdU6GrLc_+V=Ez0iq1;)Nv80J zVv{H)t&bj@fmQlq0)rxWXfo=!bp}dCo&uOBCH)g6Hr0ezrdBoeD(o;Z>+P*ctKZYR z{vep%PBS?P$wJ`nE;V>e&!O72i*%Exdfb%lGTI9|H^yt2?=q@AJ<$96l+f^Bf_?I3 z516Yc-6}3-qg}TO>g}>;5)hkpYgTWE3O~=D?vXWEnc^a^9Fzk#O}>~c?K`0|pQ|$~ zN)s2pw9Pg}QXtCLQfkFg#8pK`=)SKwv$BokFi9Id1?8h_T~oJ3c-1Jy>XMOJSL2#j-k=gcnCj2( zmh%Q{s`qMrf86`>^v!!6%zM^9C{vZHxbL`U`_{gDxBFEwwQY|3_McCB;@We$=_J~M7b$^bTWwYz9JuygTKL#I*4j^Vmv?;r^tJ_x9X`TUPg~H$k!7z8+hgjRM?!It z*QH08gU`3{Kjn|!n00~u;L;5gM>WORe3bi4NNb;#lB9!29AAmxDe+?gHKr)21=XhA z@G+!iGHS=hr}Z6<^X|8=F?yx@Rd()7P}=^j?2858I4RipU*5Q1lYL98!XXUo&W?dX zc3|M~ud=UA0&bf)yFXAA{?|8-WR_vQE9j3muE+5eQ~0Kns_K1T=klI>9aQ@H8^?Q= zEN;;V%DyE`*I{SAzH#rDH%)(iR>qx*9@v? z3(vw4G9{?(`Cj?Da0W&Cppv8SeFZ3&vL0+kf(VA!!8guA#*K)EizR;Z#+@^|bn}1H zH!fOXx_&%u_jJQ#(fR4d*Oy*RUzurFc-wT;lkoPc$t|)6Pb7gG9A_9bLq?Yk@Ajuw zB3lfuTfk5=3Y!CQ?ajQbrJX!%TG~`8bS|_-f`ip4AdYwuG=Gbj+{BUi?9k55F6W7Ceq@e!*AataLj285E zUw*v^;b@$ApI-yPL=vdY3Sp8*=UIb0EkDeP2ys4olYQKBfibK}xf94%6FWQ(DbJ0W z>kPgv{w{m*0<)lq?_9U6VDj3dMv_28z+Qj)IQ>M2daZ=5CW5VMUJO7$W@xL>TrKLI zx1?va&nE2iSnT^e7=k9B0lHKct`hpg2J1(5HqSfKakz4os3Ugce^MTYliG*HVK^2~=Nil5`C^16|lj;uPk|=RNgK z_eB5)-*FU)HB*kv3-*jtGx7z`FkGWKjItTw^!P?mOxUdE?K={7_yb%3eqc5+DB;;3 z4_kyNlYG(^!9QeQac*>Cf|rz;XNTs~>O=@`{5q_;3&1B)b6c6kjZI87qvuje%nLD2 zUEPk2bE#E7mVHfnJ-?1#Z}sX{QayP3%;6Wjh0GSc)^?PK<=#7MnDzJh*(pDLO;o?W zoDqQT%NqA$)110|D^RBB?9+&1Ep|z(@%sm}BN}Ai%*U=;(PnB7tiJZy4)s$dv)FH7 zba2(<3{8)^)tkq*m({>T^$w-1FrV*6iQzAmRLPVbR=rt@51Q0I`+zq_=jdH#JtL(P zj2E#MXGE_hgx;&DTYt`CX9DY3+r5(H+A_!cGLE$@H!mD;IPLxkqkIG7xFh*ud8@X9 zYgFlji_qE&`xd0##=3hN`W@1P?%%i9sDF5cv9OW}R=)ixdSIC^s7gy?&mwQUa~AG> z$jQCs=4dUgZc|6;v_d!U4PnVQ({9#gNi+MNQXT4xE~r!1zp!g_{!r4zpo?9n#&&z0 zN$OvL?!WY@T43Ly+DFQJk#;4Y_9n8(xP6>YGjF?aFJOP2+hdjVOI$X4F_fZnQ!5h< zL_PRm?$%392h>uZewvoQq2O+ve7Pw?dqe10$Z{YK=p$nyt;_w3QSYyAV0w4{ z8N=M=>+e2nAYG9ihODckF=mUArLPRb1nxBxqx_Xcup=>!OBuY^W;&J2NAiQzFRT-n ziP1k&$#p8kT}DUA!Qo>MZ|%S~#bZiWJh5ZK+hf~Rbp#R*x>bn13vtu=98gcjj_>Dc z=zOB7oP4=(T-t{`JPYamfFD(X{Kk_uAuxP1_Ljv!yhENU-kU* z9IlsyS)28jGL-DUvqt&0Q9K6sCCn^TJiAU}c($nzzef4)KIs;~ZfA(2Q$ClS&$=@< z?!KnwDKicTvmAW=I>3O!RiFk^zD&Q!+ZUwu)sa^&y-9K`I#TEP9F_V=U;_-v-UMDj zFG%3=x0;q;G8;wNp{D7S&sm=M?AEr~)cm0MHC`;7iXY(Bnmz_$pcHe9fGaLlb2_f2XgZY2MBio8jMF^-0c*HE( zAVw)t;sp*nv;&;c{_7GEEe90VC|^*<4NE^8uGVdEywe)xD+uYw*6jdH>v_XfuHToA zg7d+sx^N-3HOkkO>HhgNFF!FCR@EhY#&?bKnWVYPh^I)IeK=HFWKz=`J9zkDwY02N z*bqqh+IIRw5=iLiVz*H4`##{lpsP?`qHvI$Yb?h_-+~Np;f#}+E1RZVQeQp<>)-#I zl8X`)x9=PYMVS4hqo;6eZ3AW z?6MPN+I$Boa>7ZkE2DKbyfqa$!5sN{Oo;>*jMrw8}*gQJ2_rFsaVNe>W1>aybj zsAlg5k_Cf)d9o~zQ{4uj6wseS$zFLS=EY`ZZ6LkMLB7l(JbR4QCQ8Q7KN=trL6;?7 znpcU$aSz3Z>-Drw{9?RTDL@Ezgcyv$6%TJPH{oKywKkSQ50h_ra!xGi;%?2Z4U`TzzEA@(PhI&N_;c`0)+tn+ykk!`Bbjhfg6S|EqI8X zG+Fn&Ses-#9~wbIz+}m~uy>hPFp}&V_3id-P$p&Mh%VScz^NXP!d)e<`cO#W_90|o z-J{_Nus2d`4~@j6BnzHPR-w)b&G4IE#dsg}Ue8P15;>?FjJ&!xoy_fEWE5Uh&pB%o zx1D2k&m{hBbl2WX$@@#y!A#JM);2%SbdWPMpV(nzdd>74o5#4(!=2_F!hvU4JaV~u z4^suG!+avcH`o|CIq?#zW$jNcnB#8D#eZcy-3w3W&=s$Aa2i_?w-qVa`h?@jbzk3@P=3M<-NXI|M49x#8)=REn4y2pmUuX)Lbswz=wBmb`?+^@LLBCKwMu3%m z1#NrKKbtAACEIMhK}8ry`JCKeKk?-(xOWLAr*N%z8|{Izbp+!V z+^R#H`(5>mG>2ET^V+yKG{%ut*ZNI-*Q%m7of=^e3sDyPTt(sJ8Ra@7h?CZ-j(e3n z%6DZ6yZ%^pf{*!_@S~-6^;^}6!M$VRAC@}s95vJ!^KrDuawp+`vG?ZxQ1<=b_%UN< zjD4)xVrG(MsE}kSW{{BVYm0=kl_*70&5V6*$X1axTZOc#5JGk;l~j@?OOmZDExzw# z)OmI;*STHy_i=yj>-zi&$1ktr`F^e@rSZuv1JdnoHG`z$(|P6Vr7Y%~jy?M=#WmWc)}{`nU?;D$pUiYC4sK?MeBWEpV&TrvFE&FTy^zf-L$p*^@F1~iP`efjgpNZ35HJTW= zK*?Kuond)-)aK5@~k;Hw5(=X+eE15=hwJXWwkOU zlabp$_X)R`)vs@xj6L?bAJ22EVRMn<(Qv{&q8|a&7OIpygx?6(t04hO+gtYI@s#92pTyU_QIMy7?aB^Qq`2d(aJy4;8ix zW?kj83(ejk!=#p-Y@{TlV)%?3lN+ViEK$odyL5C>IOkJ>gIHj-u zjMv5D&0z{g*Jk8(yqMgXJ$hSBFc&~)TtQ0YUV6g?eFrCjTxaK8KrIJk8s-Ii?(KZD z>44VJ|C`kEuW^Q^sPsfVNAaDRC+Akgp6iXuuK4`%6G0YY}edHOl5)nrc$GIX2a-cwb?Lj{I(P?e5nx&j{G>l zif_a){6ipMst~0@C|~M}c_FO)*lV6+Y`=pHsDabY8Cc7ZyU>gFU|eU-fbck4@2~mmhSy$%7F}>u@|o z^gf5h?8dFCoMglu%%Bt{*Vtw_;nWy3?p0V09y{+-d}b)(`U1I?0ZOr$xK}dcB?t}i z+IYM{2-Z;vvuyYQBQ<(3%S8D8W5aQNmo6$1H6KX^`va)(dtV*pnw>-=lhXI)3|Ii4 zgbVrf_#?2Y349VL@A&$b+-!@6x*)8Q;7LXLO0Fp+U%3-YV0f15(`WhHx)1#N7th|f z*mgp?Ded9*aMF}NW`$HHyH5s-P+N)VNsXCwXyD716B>1m~nXK@&Kb`P%TVkRvPClWZK zHq}f2X&Cqy{@apoGc(_DMqX~)%ZII3D!Eqck*ZB!i`w!nSJ!)1?z-dh7d&Ju?rLqyRCPZ4_|2Deh8@LqKhZTV~RJIZO5-`dg?w? zQG8;y`4w{T=3R)pgvx5%ixiuy!kU!Om$md_H0P>uu_eJW#;@78&(#RGm4vQudCh$c zP|IJ}giFc;oH17`t7;fw+42-uI(Jp3>t2-hr~4w$yIdX1{s?Di&NrIHmL}vG50bXe zH`%q7Cf#fqTzzc5*^&Ed%6;QE%ID@=+)S>XecJLy_0GI=t9R_xz?$Ap!RGlk{}Tdi z1~{ni&C!C|%Q`||$E@b~&K3leOlK}@9bO)zLX7mfmLs!u#Ay4%!<4pbx$9d;OpYx) z%HY19zj^B@`3%t_uimOq^14TUx2;8StkosLV1(I^xfek|cWa{F|0TM6#XStyhTnBL zUuDwWk(?qHdF|iVp}~LmG-+qkHTN1UB0yv5eb1D1uU~wcEtzrR2fF*l<>xp5j-*?Q zk+3K$FXdEdW3Kir(v@7TR)Zy# z@7l)ZO{UrPbr4QM^bO#Be?tbm?_o(-B-?S3tdU6%0mL_T*WIUxPqP#5P6j&#ta9h( zM(8at-Mt8Tx#%qYcVBG`>!ow54rjQrYc2hEZCQA?!ICbRcVp7s;ZjL%eG#&`KhWL( z!IJLMfA{S!Pm@f~@!R;qbF1%692_3Em?q^ILB-gF_Z5>Ln_WCdZ*xqL;c?8n{YQ3( z3Ey1D+sVJ?v1W5E#*j!SNr=-+f^Y}+nR#;GQ7IwwCy$NeWniXze)Nt_g@h+snL(I+ z+D%k!-Qv@Tl8dK6VGM{(YE^n-BxT+G=*O+Mr{40{sk2g7w@YWsH)7N{nB8~~a(R(# zt7PZE4W(xJVzn>VIxWwAHfk(%v$!XMpq8+bAginfXnE(N_qA>(R;^SqDak#`&t22u zVr&$&g@;B!<074hLk-Ul89izt_bN6_BW;fE+A`4&3B%pv^wnMUr(AWm7Qqh}4ya}+{s z_PuX|6kjl~1=8yZK*OCrb(g0@RRz}s!dr>6FL-gUa7jEEOknY*!Nqq>V%z%+F3&FW z`KAd@eFH#jlL4_!;j`jg5#kG)K)yXR%_iA4;kHJ5C*VYmhDM_5Cu2F0!4e;YAu^{P zjw*naoHS@);d+Rt&IOT?_WuW5&e{3930$d8ipS2R?2>kI@z;}9BCKuMqwz@oq32%C z3-c`=+osR{fu!5m_I>4Z$gmw=`GgaWvp>3=3#I0GXW&hShh4n}p|OT>>>u)`h(-@0 zxBY6~&D}9y?qU4dnH<@z1xB`iXOp3+^N-e{J+ll*Pjmp?-Kh6gy1npku6%yH624pB z<^IZNjoUt!ZmL7>t;5u|g0iLzuAln-e#pHn{dcz;t~f)48l2C-LR} z1D}YNxSM4NHLoZGN+jQp{|zDV-_ZDr|BdW>7>VCc$1wjJnxa@p`M3X#0t#be+BaT! z>A&G=&O$({P5k&?`+NV5W;qegocI}XCv9Weh8EhbYwl+(OfEXa*sQe_LnH~SlpIod z%d`URe0msaGYB&{E!|CY?^z~;-_=%r>rhf1$A^JCOtiBF-%;Q z{Bd&lk>_Ll%lv~MCPcQgbvW$`k#uh}UUrk8u3Osl>)qC@Qz@PXuxU5=Dqm%6CLfjyQ1 zi=*(gLIH~GQ@FqC-H{}}?7og>MCX3X9?`qZu^lrOFn@yNU@JkH(WGU>Cqu%c>9Oo{b_Ithh_&epT+Q+wa z@I2P+qURGEAf9aHW|@AD+M20?qVvbcQs2bfly=-l)|&rj1!5Fq^@>3U8Iw{xf~t%QJMJ@?q&#CHsJ4sy8leP=i0ZYL5W?W5M6B z9|l$+@MDo0y35xMJZH_zNJ~GKz^fg4&?5ZOA?pYs@?Uc$cV&r7KM)91)IqNMi2Ssl z$`j?BC3Gx7H|AGA7DkuQ)9`HmHsn#th9KT}vkBI9=%4RuZYw1t{mCThD{b{|GrF`+}N^L zWBN=-v~;3S27^2G;n{}@TJtvIs~U<{`|l3FVivGtahC$ z&(~+lqylpAo`P241JsU-9C>;LmJdfV_Q%isPRZZrl52Tnu0m!qUi3r0!M~A=|DhLF z<9hm(b;5}+7o}O`?F{&Cl!SjDa`>z7wTtqNSDu81!M(767d8OA@FDx{`+V*cy_{l} zH+|=Y8@3i5Om2ShMq~C?M@*6LT9t=!e2oH6D!iald8x6|13Br#ULc0$K!~g1-@yJu z?TP>h<8MH{_)CwH?E4`CIu?%jgEq|b<5W|&55Vtu^A)@aIGVY4!lFxKkjQORql_E|C z+m|Edu;rg_GJU45zEOxPWGSzssD=W&(xG{7~nJI+mn|Tqfc^oIc0PEIS?He z;x3%>06tSYA9i>sZh?_+b_V!N*MV66#bWy68PdgTMUkVH$xlESU*s11#fynkq_L7( zANjUWDIn#lw@HV5da^{^Fg{xX8cjK^g&QeMS$(XruvkKa z0-jys78HtKNKmDS`F+&{^sSz!{1xj@3Jz@*kS!-?vYz~emuWeO;ct?E|9MvQ zl|;bsH(C%GG244n^2%ucbFHQB74Tc62C+(Xyx#a}ygyA26_2)l9J{9f-i{9{=0R&) zkf8Vv4Usa#5xyCi0xWq9S$3U8YZa~kSlto>=qR)i0t_G&Wp7312jiq8P(!t-2Rc{{ zwL8~a7_!=j7Yqh@!$tBOyLEn_;OeR%`F#y~NdprR647h|hwM(ztqTpC;jfiPDN!L% z`U>WUpju%_NcKvE8>bzzLKxcWyPGB5KSY|knQjX+fcP{lhJX{zojf(2<;2WKmD7E% zPLPQ#-~Wa=Qqzg|bhD5=VkNp9{PR^-0tdj~u$CZWXcQo)c%u3dN`&Ni*M49!_FEZ? zYSL8FdyPFIYQ9435YA+~1zR)~+lvglNkxo>arE7RmdBk?)s-7{d z*g19Z7q6`0e$}T(S5LmP0Op^cZD?5>5S=qT{cAE-)F$j9&hk z&orhuaA?b`h3?tPxmG3__;q3SFOh+J)@ANCT)1*ib;qjkb23h*KfZ>Rept`{>JN)o zR4?2SpJTv66wCPBP>dr4%TUE42gfj?eqfq7^&}-C%CCN&TTq zaNc(ot=LTWtGIiHO9$jqUAPmdSI=**O;cmb*qy_3>yQ|y2*=H(?dvDQ!A(07B*PmL zr6)Y76+z5k#KHPoyuus`%C@ZAP(ljKl??ZoR2D~um@}RWl?PTbwjOg27Scv1aVjSJ zjd#N=TIFL`Di4cw7EUyC{UlJYw0Au$+XsnNo@AX+U$GZ{Np1`Kju7?Jd<}@3qImBB~@T?qI$q-hywt~3p zdwanEHZFlC0>6gt&%Z(8kgI6VtVc89V1x-6z~+VruysT1fJ=rx1P@?KFFUX$JYgrp zSXI4WfSWI;c8Bi3U^ZAbH56raQ}3Yq$WIDp1NG{e1lku(Mw}I%nYrM+w_eV5`>rSU zGWHm65s0Ux75uQSUoLo)!I|J9Xh;Q%N0vuaJsxH;^tYWc)O=|_k{l0~O}E5!yFWHL z7fSN5O^9_VC`gF~KP;ZZ9tC-qKrlkyq~rtJcB6dJ^>2%=++KK-EGyUewxsr;)kX5n zDLwZq|0T0_KexwJHTHq_7~QtHfqk33=KB*sPuQDOzw!AYI2Zx8ue}yV^7D!oMp-Iq z7T)&Xc6hE(@^oC~9kMa@&b#Zy1T%ikc4GP1W&VNNq;i>8Q{xD%b|B^IXJDkEB8mf_ zhk3V@PqZFb11n$Th7SX4&m4!Iv^RWFC@!x#4h1Cu(aR9G>+2U8%~uuES7l+^5RZ_; z@7BJdh&bsXpHV-z44R!Z!@Wb9nuxwX1-!$OBQ!r)}~co4Z>e?kb$u!k^+n^?@#aiOPY)Y1M1vCeP$dQ-D4{EjHU|%$96PjY+RP`6yMvOH$GHot@1+}AJxHv2@l;%- zLF=PCom0>*c;!ktLkbShonNwBF)yNc_h>O~+!9R)W`L%2^SG0~plOW2;chXVI#aV# zW_FI1kYRye6FvZ%#&mqU*QS*S5J?{u7olZkplZf|#<~v?VcavFF}clEX`K&dg)pd^ zVE`cu&lbF`(}6P(O_K6iYML=aA=Vf@Jc8)Uky#mzw`sDVaOPZ4SXE%$81gWIJ2+wu zSC!-rjYsEyXW8_RS+t8kEgo%MQm<-O#(Kqo?Q3?$vLAZF{`&Scv-14cEZXz)qFn^2 z_`;jTSdHyT4bKv~PKm>b{`)_V&s!dazM)j;x=5~LN&XP@5+ETGRh<->%B&FcixcKUEgI(!-%VA*g8 zrMP;#GW>Jfl2`ab?Ud|hkbd|6r!oBe$^fsiO-|mF6n}>*syRMRe<(e# zpghBMzzW-4c&_h>qE`RKH=a6cC?tS<8#}|mJ`)3ur?sKhw`THf9 zmeGFwjHe&`K?!Ehk-?PHnzzX3`oFMK(l5r(4=Zf+8F`bsYqc3{*I0Plex&jSIX;}h zjt%bEqcK*#CO-h$e{p#gekICVpD%s3D6q8pV#RktQtIyK59L`}&GP;iSAlu&79yFI z*x5^C^%Zd0_;IXV<5+jG8~vWhRi=hzPzq~U3?t~RXF61U=q56Yd*u-hDya=LUw+QO zT>ajBsRNoXs|k>B6(YcFHKzQWnNCU-O-fNvj9iB&mC&BC4G0$dS1;F?tG=|nWZV0D z&u39e9Ar+2nhyq^7LkgzPzkVK=4bM){7?zOb(g|@GB>`xu;x;+n8})z0dXd$EyZRh za@i?kWK6NyrtS@j9EvnZr~quXRvO$_NAvhU4|*jJ{zqJ06yN=qUcEyqVwPDULk}Ad zoVh(zWA6t4k5IFv{+oEQbjSz1Bn2A{SFJNW1t!Pw@c#(=AWnz*KZ@FVWGc~&L?F%K zgV*=HLtDRqB=uOE9rQ=M3c7yboxDBVytg|%&dJvWigpBhe-v&zwIHd~##XVH`%lHI zp$Gz#5vHjK}IhcmgPTLcro0NymP+4_&EzPArf@TiA^m=*|PDz2GmLcE0Eiybg**TvK$o%Q2_^7pEP(TlUt(ifgN4%}Qzf zqLN%);zrlb&b|IDOI~UKl)AZX94OyR;PO)^XK( z$+o$q?vyJW==S8z1fzcE#0mQQGX_DR+f*_uz&)u#d%1X(@0UgB#z5SDt7t*UhoHBq z&IJJnx+@Z`9XZi$VAD@)o)xJ7$^tvKGdKO>Hm!6B1M0uiHfcTc42-1!sxw6XNmnKq z-k=I^zqaauxvwf5=vLWk4mSO+t*hOk!Z+e_R6Kf+%yRdP%QA*39O&jX@3nyh{3B>4 zRy}otXYQC6)IVj>Cr%uS}>;#)_5?MPFZw((vI^rRe6RAH6-2J0TXHyH}66EqO+&C+cfA-_zO!mcV zPnx<4kQdJKXWjTX`k%ejs?iQ=(tMkpW?vq;ciHcr@9g46jvoK_tLA!tez$;H^pVJyDA!>O7w+@At-rlPDfHqY$xdC?i|MO1uOD9~we$)ZE7z6xgD&%^z&oyS z!Na!e9(s2{LQd!z+^J_MgbqyoZ6eG+MG)Po|(JcMuR;Q+shJl??2I znkqhNoSd{u=FoW=oYg)^FetwYb7Gl}b$K7!&#f2hH=OrGz4%Zf=(Jo!;=>VC9zg^s zwKV3{5bCWK+z{==b6oANy;~NC*qk0;^=3L0UKN$aUyZw9pufte{Xmvx7Ty~lWSgIL zNCHb1r$A9w1{r~ST2{o7ht^LV=kd=k(`6mTRjL;vQN{Qm4ib&LQNzL@FyYk@GJ{Ro z3e;ByhG13fYt=Z-!cKASnbwkN)GwstbQ-9{c!Nf%(hPP6V-t3hVY9%-_kIQf$mM8Y zpUVgKIoX}7!V0pqn%)WibmeNh4C zvY7bY=7UeWXo0j@7&~t!-@m8gbf4w!Sn4-^Rv%XJ%hS$OaWt*6&#%Tqgn1O21@5oE z0`7bIpWk;Gi!K8i;(o07#=XDku-yAOoFdgAtE!>Q_|{?hv9{zvw)rVZIY(U6wSsTZ z-MYUX67wXc(XTr{E(Xy3uo0}E7y;HtiN zwhm{9=exQA*(sh{#w_e`)~~U?*Db=bf2`9Ogqfp+9UTQ_!2tKu1XI9E-MO(pB0-mP zEZ@nDO#F3QsC6`qwsobcGOmf)XfQ5oPn0It1IsKu}H|uRtgoV zJ9Gl@QWc*f2M&8*{~C7y>Ucl>Rx)CDfxUb@y5l)E$o@gs2@q!PJ(P`5W1(JtK&}>; zTLpM2^vIiT0SZmT|1YQlS|)}lL(dZ^=M8`lq%YGpPV4%y$-(bT039& zk`c{U*zMHK_o_SB7JJRiW=jD+X%q8yMhwkuwH@iyc;LmN-VGJhm%&=3=T|~|g z-Ooyc0Xt%0q`vJqNMPq6k%avF5|_HOmMtCh+Bc=MmGbX=d9DGhE(@CnCdNNaU2xK3 z47=aWx&eFxeAFf1fJ8_2=h;?W?OBCi-*OnMHw7Kg-rqm8>yuGGD_Qf4YZny@a#8j( zy*!AjG@njD`!>Bw?n`=Moaf7g?oRkIsc`%ob;i+dOWbJ7karJT zT{~23iN{`Yg}zcvkBc(hT{{2lzV|B2Jc1{dj5Fm-{F?qcP5Hcz8qZ} z0{C{_($^%9yY$=k)n5U*T*<2jW-_`thOxMykEYBjrd>)E*P33Yv2&Z9tz2B>IBX>* z=!90>fi*KHh){uV*YU6muP_U(R9#8e^vlNl*MU`624RT-A!7Aq(^IZd=is=k5 zdOwgDl7$DPF6`Wv)R>&$mZhGAFvV1{cmTy=D0NqWy9|ru#=!@vf#(z7q~kxx4TFHR z@9DE)Mux*#mS4`iv0SeNs+blDUS23j}k~#|1M2y}RmH!7LckZ^nkI%jMrJ7&(wzqzKxlqG(^Tpvui!rmWFi*MW zdXXF^KMx}PjNEUv6z?cf?`I`$Bi_gg|8{oW%rxQ zez%En0+C;fS;X){6iz%;43_q^CfP0Vap-{FOaW`Py94%<`_B&7V6?92NyYav)33@h zNTSJPw5Y{P!PlYelwO#h2_b`OC=EKy&yd+3G~8dj<{i?kTen<;%=+k=xgg#jEwZDk zPD{f=s{(l0SMw8cXY?zC9Zl1=;f=`u&dTV)`lo=MQ_d}?$`Rb|k1?8>znSF#_(O8f$_AMUF^V zlvc{vKCcR5T_-m|$ay>Ai<=fgASNc6(EjeI2SGbBP$t z(0Q#h?$V%PPa`)yxJG(7Q(kaX1~lxQ&B!{bK^ie&NUsA8d-?#YpF7BY;li0vcJm7c zA|%kT=XAq8?;PLRf45=pe=^s8c}&4EjO)fzm;3TJy7uJlKhouK^X2MpFSvck_v!xM z+qwICVA+xIxDf@x3a7dLtkN$G5}1?)lxWv^CAuHlT$aecEpQf}+kKY(Yy#sEj9{_t7Z+Z4_)j^8Br>1cR z_e8l-JYsI?c+7;l6$%6w=Yo-ow%)9EwG-hz=IKb+vRc}3CWn|}9gp@muHCFoK~FLK z1z|F(4MAY>#8zlCv3uR3MXf$hIZ+Vkxyz~zHuowpqKElWFm~5)jNJmTdory3Iu^x- z=Wt=4uE$Zzb@*Mvv-|ZNH_5XT5k3qj;(8IW4Y58E@y%&qfi;*j!6f|b9D$<*V(asn zO3dNS7DkuevCW|K=s+}HmWd@oW`dv)R&a);%?G!54h>}BB^6i=R)N`Uanom$tNW3x zI@tS4Cj9OOblws?tACb09#=yBmT*!fgwbF=C1IG=3weF}=HU~r06tTc)*DNSd?C8uRSJD5ae!s*B5=&bqPRk?g^|>*JzM|GiYiF$3?P#hfu79oKo zn|)i{26jY)KGke{OOyeF&w~r`G)i0AP>|J8y#qS1qV;-qJm^#1V=Qn<5JKBKQ6HW5 z-6{9R*fhz0uN_7aScLLo;67F5+QB4W zr|(tWa~jx&jEI@rXh&ra#P1EjWrwO3feuW_mOgT+kdz0oVS`qG}=e zLXV!?rLs5wJ)=`g*FI)UK456E)$bK^bgHhfX7*L^)t7ojSEa`Ni?8ZQ9MvlfH>(yd z#($lAV}#_R4#aOpv9aZYl>1P=-|CKm)4G6^xe5w$ptE^ini1zu_V^DtZf1~S z>v~V04r0eBm1#eDH-7T6m;nhM9R$)VVij9| z6*f#nT3J;c4UBei{TzOeXB%G_s#+J*6=tw001r8PQ&vjLHd>5_#3ys+P*fTYcluc5@PPhZ|c;2TT*!*A7fuO|lZG zy$mpLO;W95wNjZr=YNIpE=y!<2>4$xgN0-|Kirt-CaE^$E<{mT9Wc--sdFQ5F+xSS z8fzUMB!0~iv$f&$d29tc9t9pYP#-)mI7BpJXrp?0PL>3bM;J`-ALy2k*VlL$e0D}| z#g}`!Xry@(x61|e?%_>~RUM3}>MUgSu;IT!&(ydg_O1ebsv1xBlv-c(Iu2|@KZGcL zqpbcxh(a^rlh0E4Zk;q;rT5^qTgH&bnOjdD|KM}wWcplJb@pjg{4{$F`1?8VgRuK! zmd8ntU06=BAz!IqKkBy|R0`@&b6rZ2Trr%E%nd5j1Yt!l@!N4L(45-LbT*T}S8f%C z`dhLr3q2B=Ksr0$Dht)?Ezl4z>$D2@VBz|=boSe|k%CvmbUE2B>f+Hf&k=SBH;zPT}k^3 zxAF#)&0Peoph819ovj*%6tG40QX){#sMP{0!GLiAh8yxOOP7!*=7@=peV}k#wo6c! z8x`WA=W=*wl$P|fhpgLn2aCF>jph%4!fnH|5r`es1k7^tJ%h;vkv)L5SASXC|`v}62#WtdQ@H&<`8n|J!&AqwRUf;)1tC_wR`9r4F(&Wj z*?Q!K@0yJq&ksGlyuP@2W)avukFlN~P%ypbtP%D6 z*|yd7!#5;X<3{Q@X4ts*qM#ay+$F#dqI(U=JeD)VoA2`VT+OdJvCz5fWIaaevzaag zGJVZ#h%zF`^r_X3wQMF2SMwa-qVBk0g{ZJC@AJY0N}_n^%u5d@1wRN6lUZ-~azB>O zz^)0Zx^;yo0Q(>fkA%VzWqpGAW_2=1#d}am6?eT@CilwIS}d_%0sIQ#(u-9kh^?rq za0H$L>6O&>0n?{uG?C|m>m6)X2cBEJmfMAl!?~FXIv4}fC!tQ69YcE*l`(^(!xd)S zh29ySL10|i(bU`@TsJR;7FwW8HSY`+>Khp--i!VNXg{mHqKS$FKe-4M;**%08#b| zc59#$Z@fX>de2*}M{b~S3MfG5Ai@K>`OnW@a;4bJwT20{t%c-KZsehPQ$JDPl@rl2 zTK(#{MFP~Y+XcB`i@vC(9?^$mYV+xj79x#2?3bQ;v@%NH%S~Ee)PGlA7FSeq5 zxa9WDSITTf@qCyfx73OPtT${qoxjm%$8Ikac3o2vI{G8w^95XZ%Rhbs5bt5Rhm)5r5D6~z1XL$STF$f)1Zyo1s+8Jiltuv<;m@7TTgfo9KR~A0b7xj6fQsv_c z#b_6UNd=)oei?*{+l-IU{vd+-xuoyCSKNnn(C_Z^=(QQ~%PuQ|&6TWVvE3zAM7P6% zn;a=i=E|NxzJm~_t21W~je2$D5oN`-202E*6V1zfNukYBV+j-%=0mq*-41}{fH&Lj zBE-J(y{pWY%$3QPU-(1IO%xA)Ssr-X@A;+^8jB*tR-a(u>SIiW_E_G)g-vahod=)? z@26KhnLFF`6sipA5D<(Vfe9b!1~a>_b-n4HCM_lWC)jQLAA7l}BZA3W6rWi6F{5rB zXK*1WMUBnPOnKwMg*Um@Tjl7w>V}?va|Jx9AfXy^5+z4_g7doG)gLGCGm*%`H6U%V zL!AguDhO?&Y(toNuf(ihCuf`JXw*57;!NK|jYmwFZA$@@3eual?Uj>Z5m&nY;G92E z@6Gw;gW$qb`E2%X#_xITl5t|(P}*`G0Zb}vJ+D5 zL9l6e;>e)#

    yWMyW^9)`+@oSj=U)AaT8?EAZu=JpOyeO@_20tF0{Xo7MF4eEM# z;>)4x<>D#YWnbRYKf_M|H(tc(yCC$KIOT{;I0QLC0G^YqCL^G0ijYDH3nXuFuQs?n z2-*0OqJjwJaw9_8oDdsu;2?<_W~g9bu3V#AB`%5!CQ3DY#Q*@0L!lm8qJ=C8w8mAF zQ2}!JAx!ukSs|35Ul(<`)fH_8dat0JI55~yD2m+=R`&%FMYL0JTT?QTrN_WoFJOml zlwRbz<;x=Oi@k{>1mkKj0+W$KC+HyxRXXp58yic*51i82VL*a*2e1Er))nuW+*YPK z3E*`d;v#=M>kZ?HRjKTAQ~4U9FHAuNC7t&?j#b^|HK#9UuF3_SmdSOs0{9lj0dK)&(-OR`|`-U z54ImWi#z|(1@u*pwnJDa+{zvKdaS?Gzws9@ypCs@7RXVrVef=5{J)c<)@X&z{(cwa zw?-8LbEWm}ql~IutXqIWyRXpz9tvD6$e(>U^We(c{>hd9TR6V`^q=E+ z+rN(E%l;I{fBa({|32&war~mzAL963e~#nl68{{>JN+q+Z~P^WpXaxbKzSo9M1A!V z6CLR;3Fe%NRW6X0I1V1pvFF7sbCVlFbE4{a-Mroubfh?s!dHHwZYYB$q#>ILaJ<{8 zu&G=5=`kN+952em@!dJ*i8n+FmT-IqgVQyG&Yt>zIQ7{f!U6 zXoJ|ka_gOHZ$h&*+A>Vigwe;&22=P_<{blx$vsa7 zLuAh1)Qhx&7Y@kCh>>e|>gG*DhblF66|`E z4}$BR!sH;Pb+RGj^Q>0LgM@L!hV*0em z{;8EkfkStelT@kfI$)v^;eC!ooQq_u?B)I()xDUSe49(FU9NR)2Kk6Bqlb+MQH81U z4m5V_Kq9n;vx;3YrCPMUK5&Iz`X~g_$kg2|XNNP%i=fSoSHK)k6b|M}Ry#XQ;HGJA zXpnbM3SaJj0FTe_kuP=AZcv(xN}iMyxQ``Uy#R9tW_1Er8|tCx*XTqjTU_3`a#2o? ze{X)(m;(W+Rj9+PA2w6EuVYkC9k2wPeF22G63??a`4^|Xg*&k`MVoAlOCN`y_&nc;-C9)*v(txmT>(1Ci+_3 z!OMqsK)*-yd^v5hUwEmmmdV^N5i{rhDDdl4`ww8d?}a~y?Kl21Y!}n}GuUpzgze7I zwPO2knJ8T!%$%a46#IEz$9@Tu&#(DvcCd7XuhOIr^npxNy4JCIpCJI-(W_H$&-VQc z+e>~2wmUx&J_lg?-G2?+)s`LjBiP<&wFKKM0Bmph9oVkOgzdxs3bx1oA#7LuEo={e zbItXP!;=KCgf?oBpBcg@T96*4Z1g5M`N(L&i3^wQw_R{PF}gQ5W;8gv;L;6^o%zU^ zMUT@LivG)ByRW6@mY4p=J{k2ejg@UzQ72|!$sVBG7rtRbJJUosT>2IxT*g8#;B|C~?R8 z#l`)C?RIyYMv?hUy3U>}XVXf_!MGP>ai$7;^~4SKC|Yr>>9 zWG(^wK0#Xm>;bM{&8~+E%Gk|+KRg_QcZtZAFWg;S>c8hWhY<6q^=JpNUzT-{SCH>EN}2u^pQ9H$?< zDB5&$RWH-GL|T2DvLVBCP26+iAOT+W+fzurLdBCgTK=7%Rq=%d7&dV;P30SVMd)W@YZ3XgLB&`0!FuKnMF@Bd4~|1S;y z(QCL*(j7EL zZ{~S127P{g)S>1{we@Q%r)AuA9H$Wq=PMU-ZBP6H!!sFpapc#!ez8{;NLj6Zx$z?- zTks3rOVOv`1~O~pGRRusy`Zpf_42RxDP3LM-euc&>A)f@ii~4%>y_8yg@iCvQ0kh& zsk=f8Eo~P3F6x~0Z9u)3*Mz~;`=Xwr9xdDvx7L`r2j_P0rh42VPOCcn5j+d6mJ9Xx z7+T1jfM}ANjEdV$L^k^2nDD(s9BV~D+W9Z3tW^e^Yf9EoIUayEA>19?@Tyb$1W<@R zYNUp!#cJfGOdSgf7H$)g-4C*BRiC<#Lp@@za3q*$C-u@^q46g^ z0u;_Et4(|Tp7tS#9Yx4rzqtR@$*;}^D^>B~fG38Klsfo^^MM=Au`h$&^xj6AI8PAQ z1C+38MucsrA|wSCpnPRL7~MEhq96Of}}qMcT!DlHu(q_C5-(ToP`r+zBgcr1?9s%-L<{g~5i zd5WI3cnwx0MVw7LGt#sK;$SpL;$`fUC{Bt&+=e0e=m|YqIT=;h1xfa8ZnS7a$ENIP zcsU;W3pS>!Eul<+gO^oqbLgchFJ}G;Zb}9DCr9Vi$wvhpKJpO@fPM-9xk(_BFWvyX z_NGYU3ead;n3GN#p4Ghj^3=Iu6gzy`k8r!By^9{w5F>^M1eBa#er;&u+=7t)T@ePJkvY>AoU*>8k|o^-TPft6*Sg@Z8v9?wth>!ek(Na z`SSKPQoi;_qYM&(gG~OIVDF>+9ivQp=7VtD~oyO*Jgj!y@_A(ZW zD>kC6RU7+?1#4%}V3{7JKVyGl?LZi8nJ4U`;k2x`doY`6?9qZ`4_>&A`puGMp8U-+ zkH69N2w3Jjo(kA!9=3w++=69P{Udb|ER;A=UVHodPNxi#W@t9TX&<{{)TLn=RXGHX zw=#_~)`Q77rcp-WC!ci(@qfA0r0*o?)Fu_j$?<3e-pDV1a$ojV0>)Wi_{BmE|41C8I&2L`Z*+sxS z@PDN%a;^9i<>{pXY3|ijdIvo;0Ou)RU={4fDIC)^*`_vg`4u@Y8Vv zOy-3TSwK|2Il{lg2n8y!QG~IK2vf2S-(-KT#_0%s%kcy8)>d^23HhyuyQf!Dp_w%iim9G~t8$ZkUGas^I6zv>&uW3{gOBhR?2A)Ue)u7O;N|=Y_60kgw!Mklh zpg{@R_VnUXr@_1YpByvAz%g@v$uUzEyBxpdm|0fz!vBzr@U5@hS{0h_h}vnKi*ZlX zbfTYbT#86_PCmpt?;2fC1`(+b9>H4&J)u_wl}($R=LNx199Cbz=A_ch)3f|*$9zFV z%I3P*HfB>z)VjKzAz+~0$xmAEK{{xv>EsVyal_4qgPZe6lIIqeYpGFcZ}PMESk7!_ z@VRll7K+joI>X1hOTB~aMXWoV9R~{G_gD$!0KdGollPTL-Xk+#F&fnPr7 zIP8gx4<1bPR<7c;6ua)8M{#=d>_J-K$B{hB^2aK<8C$-(yPkJawmuCOX+`&B*!vi| zdBp}q3}-~x6prK)*O5JQ)79M4y-)j7 zll=bsm&dxjoA>)&xmsTO@nxXx;_aJy^v_?8yo!0URZVxNc*5-K==Q>TN}|f@`Gl)h zU;T6wIjqoF!I=p?s9=NEeDc<={kI0GDmj}VZw>;Igzq495KV_)Hw~BFOi>?AUSYL> z-#23h3$K(8;af72edCEN5AVE3d3Wb4n+Z1goy-_SsGJPYDd3dSLw_qK z>p&o^6UMholtTv;49h`IdEgu0uZB?xQ~DksUkw@98@u)!Cm(5 z`V*e~yXHu-SD*p@-fvAiar* zfGC(y0|L@Pnt&)pL{Ov&7<%Xd=^(xLCS46hqzl+UEQlf?i1e zVPZaL_JPBaeilDfUlh?c2m)@<*mv#@<%fLY!gRN%SV~ClOUYlwPL`R!=KHbm!ElIJ zEr*+=*j|xn>LiNokq@zKO}a1`GQ0kAoCCEj*? zN@YnFcTO(WJB+hu;$V+Y?1F#+FsnFC!))5y)ne3w3g@~99HoHbrcTlYU0Has5^?ns z66junYILonq_TYwT=wh-4lrj^qAHSu=P5wU87qlYV`>U&R3A&`9U?+w6HFxp{-=;d z-?ubdk zNmZwaLUt&D=ak{YNmGiag-RrFUH)8xG4nLMhR5K>1>?J))QWu8g;g2RbggOdVzorX zCF;wBw=B4=*!WxKW&QB{g-fPf!LBE zuz3JvZTf{Hs0)i1k1}Li+W9oJPJ)fJkIuYVN!x6j)voe+aZ+-W``9nw8~_jlz>kdX z592)q#)+=Z{zDz9t9xHy`I?ot|uUW zp(ifgtS11k-}J=RZ+e39&-Fy+AN2(AtDd0$t|!QU zG2Z_VJ;D5o@&3D>sQpz>fQFs4X!do`u;V`lfW~`*p3whq*AoiMVs*uzWh$!bKM#un z!(SU>uD#`oiRghcD7H5omCm88zM#xNsz)wUj)d}#1yEfYAwuR)xz`ng zOa)i$p10(Qz{m+i>2R>1H45&0^C5SpD_H}Iml8x-GV@_T8gn*LMnBJl;ZaJK`lX;z z+jRJT7+R%)&KV14as^&KZ!j5qM_!EO050W_8=yOgDt9}9LM#OUA7+Hwv~yvE%6QZC zuxC!ZXX_2=mKjo_ch`Nx7%c=R*nhGxAp)~%U>N~EHiIExz6Xtdk>VCnCD+B!u@ruy zTZbtOmyMhy4csV!5|4QEui0i+#*!1}Tc<5Gj5?@RzGXsK(>K zhLG@Si}%OQZ}uNM$ZHXC)mn#Yb`52-hEOobmg>qgt1#gR*3TSJs6gpg28uPCbJcWt zKjex=&mk?+65M)okz0&_;@7#eOuX1!=0rpwvQ#gw?@3`PU$HV1S~nd0 zoX~fb>ipX|+~1g&^CoHZpe^%rsSU&LbGU>Cf`i)gKLtAf)<6*L@nl@!myZlb_QOBc z+l)888sBcX{ln2u1c09oBJk6p{X?Jp#it{;{U7NQ;CGJxgul@zfreV5^+2D{{Z5}iemMFG`oy20PXK3p4E3Mrlh%d5)F&(ieX>l@C!&9+Pjvn_ z`o#NB^a;st`lLYlhdv?yGkqfXt3H`gz2HHtZ+zxk@1l^Fp{V>Q#z?WwFaDuj_{6zAhgyldCY0r=Lacc#vTrV7^Px{kiCVD7uT6J2^r~-J z7b!Ct7BWfA1Z)ulx&gAxz)@_Pd@gG^Eb(Ye-1%0~jP)(!rVc+4t-KX1A{`)0K(zt* z_gs-=-HH@N(H`$P_Cn>bTs=sH7ZC(tEa@>sThsYReQ;iA=teSEx|nx?nq!HeIpVkh zJgb#1xkg&8^p)VZ{19@qHZBMHxHV5qRT2y7fsA>P}uyvpg8;eK=F5iLg^m}irIfDDAN8; zP|*FoprHS~ps4&wP=E)D{~;)(UON0YA1IRU1#Y}7Ev?u<*1^|2P}l1Q&0l$lhRD95 zc(#9M^Q|BKN}pKpssc^~D1Hr^iGW49%s@a_?wva&czp&x13mAn6xy55#u-TXysB#x zN0S2};9<(;)}nlD&RLyiB}&S5NxSE zxssg5z6~14T}+(a1EPDtB=1P_mvj#DqbMvgkV@y?2Qc;pHa$NDz}Qz?pgcfmdj9y4 za`JLoHEtbZ?Nf00&IjhL@b91o{Hj@)9C)k1H0NfLQnN^P-0Se8;IrhHk;I+@b6!r$ zB!D6WFf5KHVd=6?m)TOhH=^sYH8qJk1ykw`*I}?8!wc>k=8)fw195C%k4&5#j7@$- zR?fm2X2b)&=@<_HKruI_P>_p(3E#Gf55)RSBnO3LofF7x3UOOUsw2fJtTV9mqfWYn z1OQ81k2)O{IPL55aFMaGbH=+|1DTt2GTB%rXf`&>8f0$1qfjy%mAb%}x1i4hJM5r` z_+bL=vRp~PjZctjhf^q0VMst`!$D?u2}}U+4e-bo%V=k`!_&4*+<)q$do4;#E>o|Zy4@6w=M|L zhn;$_G31kJm$^U;AeO?LaJ~(z831*$!hZ_Um)9k)X3UrHD^af#eiAua{~ue3zK$() zXg;q^TQC2_+s;NDZpwNWfA~QU-2eaN+WgN({NIOm>;GoN|0T5R@fRnE zw1U8m_hh{G1>^~oCLmVXdqfQ`Rt+=bI!|Yc)M`G!D!00G0-fWmM2?7It(LU`nD{k{ z53InI%g?@3+B^(1Ac|B};eqzVFB*a<)tl@jUjQ;zoixCAtTNeItBhubC<{NLn#<5$e#7JY^+$?vp}N2JI`LyvkAYL zikACmI?lL9mrrb_+;lfLMkTka-GoLOla6*9H~ny1SB;H{#1TYpCbGWD&$rO`*v7?M z2a+d2)JgH34pxQW34+hkaXOvKwd<*x^Ye4MDPA6SGnu{{j=Ji{!`X`C{cFSRQ?#BL zg8h_AG!f=``rINyx!{QJh|SA6!H&l1v`>K|7{~a(;#&7 z)xEwexYtDYRy5y$*nDl_H^g&D%T(6eGK>)+#sZS^9h#?29Tb&|GVV+RE zSD$nPz?PGo8&3^L7!}}{qiw(~W34>b?&ODW96JatC)+Bzot!iX8g|1x?#n?BmrDZS zY9Mt%h81A@F^X^WpvSBAd7LYX;e(`EU^u<=)gayh)%Yoq{t*6uBG%tQwT&%ZOHH6u48%yfgd>kgS?(TTa< z(#QTgt6AVEPV6y)3#+2PN#1tFXHhh*TGf@G;)!2%7Xm;9GOc5vg%dk^@g2nET z$o>-O`hk7%D#i08buR^K?k$D)wR7w~FC;$(wv((gpkQa@FmecZgmuCo$#@}X^|2v} za5xW0gPE^tu${zJ6`aL6grP^k6*?65YUBF~9e;?6Y@D4u7et;}w^O1Kfs6#?86uxg z^)Tw^p<2!@K06_bWLcoCgX{ZHt-JY9w?#^dkvMb7N~3?cE8g|)0KZ*+ifq&P*<}14 zIU_I!&pnA3w)e3Bv*!~d%FL~hVg$gTPT*(d2N%C9A0>xrZS{3kpAjXabe z2-$3@C=UJE)bsPb^)H@e+yBJWQU3vhL!0+6Og(e|%G6W&ccz}3|H9Nm zd--3Pdd&VeOY@RHS(^W3>bdy0rkhb@hsYmy})6`S+69z~2McsfD z?ls9hUfi4OoBN*~USr-@z~B1Es(QUkC9(2UDkUtlByyqhSw1+4+ zX0nQkfJ$HmG00&z7h7T?9x38@*@&~zAP{GCXTHrqXlpk6kyRrf$E*Zlte!-Xxvwqy z26hmgZb1h8kC;`@(%#l~FZa$`T^k5U;Qfv_qsNm&jk0^m!xnVDeH%7fJiSx5)kUg{ z!cw?f-+(<$7lBR&o?QB(Qy!U3EZ8Go7&7FWK#2q``EVo^@@g>*F9^j@+^fL{&^ptS zn6RRXt8pP>x4CvM75^BngMSRyVG5io6#HRg5Ab?Nf(VaxR~Qm*_a&Ur8;C_ee8;Ni zRfjydfZh*4GU==l3^ibn?Q+yzy4NH`MT9pyLLn*-MtT$@7YvW~Iu%V9%PMCC?|^aW z2E&N5JAb^{+$`tV#f&8Y!bF|%>qHG@>+S72aSc&C*$J3}SYs@Lgu6O~k8!-$nDtwc?7T8lL z)7Yzx(ppUypSvVW%ljZ`?_I{Nrb5&Z`H)8o$UTlKIyIy5*yrVH=GH)w;%4vd-=1X6 zze!lNJw2o*+c)CnRR3>tkH06Z9GOm){sKCK?FfN+TBFdngWipj40cJK5EF{n!s+11y;>)iM9K`&~Ns zL7%-v>wFKzox^W{jFJ9Z;qQt~MWcx(xtCv1OlRD+(!~B z;Ngh9lhW37@{NxrGnve<=L9eNLbqn_1TceqvY;vNV&8D)yCC<#V;l+G)-TP^i%WVT zq=&imX|4#aV>XxXALs<~>Hlj+=Z3*Lm|+8|3YM@jW>GQdVP}8%!^VWW@`?V}ZVdU~ zefFDgD83bP#R+FKtm6 ziJkcwYKdKNeg-rE5MQH2&FzjPTfir)Z!gsOf;@w&gHqS;Nyu;giQse-Z$3j3Uc_Eyg`954__$yTTYjg-rwAvt`q zj*f=O3&f7?KL_Jb1H+mZyioieJu1x!E*@!;$|Tod9U>9da3X9FG`;6x!y5diC)gn# z1rlk*Bmu5HV#-p0+{Ar3+Dapb#6Exm#cC4@^$vg$I-q80V=xI6%cNj4)KB|pbVqbR z)CU7n4Y{93X9uPDYzqojvhWkX?4wN^!O?jou{x?i%#j3Z_Hrd@slLS6AqxPM;7x7Qha%VpE`cGb;iy9CB8@@9J3Tf)c&Gp6=zO+C97(-i{!w97mz}K#1hB6paoFpj2|8Sojm9LF`!$ z_k>cWgX&h&XnexFUZrh-%#|f+rE{rgXS8 zx7tX4`>1Jq63C7}b-Utqiq4}^1w5gZJ91o2O@wW|o0-M}1V>KTSUeQhAi^U}FJNPN z)PlDxL3aFm=I~94z8lSFg-+2jD%~GOIR}$5>b|vlRcHCk^aGy|Ro4y@4 z`i%35MCw#0r};t?zLF0)_juVq6^n$R&#Rl+mIg7r%MqGazWe57`8jw37+)##yDZ_T zh^8w?t0Jen;G@-SD5{j5#<`4ZM=wjHJ?34r*BI5;o%e3AjXYniOQ$(svunlVqBJcd zR-;}~;J|GnBu57|F|0mOqjSe!%l-k`S10`VqEXMJ#*#o)_)e??ip1ct7Ue9R+23jAS}z#+bQszRph*YP@G_l_hk z8l~qloGCAKkBhUx1dq8AUF^Ju%-`}jL;Yd0i}8WT{zxXhFbyQ1!6G>+Adt-vhk6wy z8;NmBe3K-dM&~fRHGSg53k=PCEgzH8XGetV%{K36Nsg(Q!0k`z--^u4_uX9Kv^zem zJo8PhT?tCMOaa7?`N%I}{63G!vU-VrbTJg`>y%s4xUO3D5(Y5VFlh*c1|M32$Bn&Q z9}K&iL@#wu$JTtykN?}wg6LYC#>nG!d4K+kw4)nr-d~tEKX0B*-~M>!?cyFwJQP!+ z#2kQef%V+ke0Ictmf63f91ayc!uDj(j z7NH-C&{rRqtcs(b{QMvoHv3J$B4&&$%=qb9!+hl|SR6V&L{G+T*J8ORrq?d{d^ zS-G7}RRCt2`t;LQ5{k77L`-`7jDNhu_8R?!m$+%5K*AGziFa0#@l=J9VRMhPSyxlK z`3j|y$JNgQc!pH3OVX*}OFVj%acn?9rUHD4EA`R|eve1O-TEo386Ww;CB_L=_uSir ziJA7bw~jYBF@MdomtXGP|7R2PzugoP(POf-R&@Bz!%B?i)94-dVpZ)@)$>OwvqTcJ zv>)~)XM8fuhUS(g*)Zz2_B`day}@Hn(reyf}b}Vd0Z%w^cp`nO+w|E%K?!@cI$6uk+?5 zDP)gaaMggWvT|lMiF{NJpSD~DbA}A1K*|RO_;Lx?{XSyDeMyS?=IbICcqY{PT$t~kxC0+(l@O2+d~OyC`N`<`6kv^;~AaaL=(b*D!Z!4qhR znS@udCa0X@pr5yuZ0ft#&ob(oDKhY>M@J?O@V*NuVu_`iKgt z9u&ynA@}Ab0!Rnw_Pb5ISH&r=9^HIJ8Dv+6p6*0FpENab*sM-DTz>6cvDFaY)QdcRbZoT-5($P=X_sCGz}MCR#23D}!pCIZQJr$>K#+>Up1)(F z6nP_g$bN+Mg(ehGVD5`t-6V+#G~)XIk42 zQv`PCw2JAsiH-$rJ?*EjE6+X)9h>29pgt=neur+9SjqQ?D7T%o<8M05?-= z%N(zJ)x^yt+@!T7Hp)l!9#h~`>qo@x?S9A08FJqob4C&?6$gm;Ah0G0cqZVxb$JW_ zoadVdx+Of_?RsLOh+$%|z)%Iw?{t34yM0pGD3do&6FggaCBDe?+eFcqdb~O;ejK$Hg<#F-H*>d>2dK`0`6%T~DQs{!u%Dk1H#Un7I$o?&f|{3goowrj`|Yc6{yJ zS3mdX)JA1wj-Q51if-JPa4YwkZagQQ?s2ozr!0OJp8z=u^pkEeR7r-MJ%|5L#QS01 zs>^A7@YzP@gRe_xs&?O%#ZT6gom#0HCT5jdA~(TrF!6bXzyPqJ0zeWQ$oO(HJ@#lk z`9>LgYrv$FeK%*=?_-yEBZyH6Dw$wsMgYhqJ)QtnF{^cByL-w`4@$ZZosTjSuQMOf z-)?>4$5Y&+Ogg*pWHJcYDn)eeQ)s?DBB!;z|46Q6~XUBi)F(j`|dW>{PIQTGY~35_KHd9W)iVu?Jf8ioU$ zG0QG6uTY1SP^YF)IrJqZPd|p5P$r%*MpRf*G6uI9dWI~_rN=kQCQJ%~^<~w>=!SIJ zVF6uiL=!e-3w~=K0mE&P0SK6{?#0I&&Q3Pr1vOam_HbA`HoFJQL>G~d#nS0TY^+aiWfKd~+IR8}U*nZmYcu zOTHdmy8qOxFX*=PIrOP<3o;&CZef|zg3rLTA+s7>r9_ z3r8Q4bw~87+?>-aafRg}ujzVgtjf6i39AN-YucD3We_JD@dfETO$ldoj@Jmn*`_AX zIaVg8x^||91*b|t(kgk<^5#+@a;nAW(D~!^h2iWKb7`gIL6~NZs$TjUZ}z$q=+^DP zu7UvVr|I{@-K3V&Gf)`;!5NzQzBfu#`kFJk*%$^&*hVyPrQ4}dY^hJk8J?xGy_i#f zyFaHqbRv_QA#-Z{&Jml;n1IY1U76aws?E)@OKe$Y(pfvESsN!(>2tD&Lqj5hfhi5HOu=Xd&sU|8 zRV+w46%o7WNTCZqXESV!G@^7jIf*P=CcIf%K|Rx__L#F9l{LrAQ*jN%V|u|!(4D6AQm+n0yFl*r~*RP?g6jxOcS zr_x$>nH2f5hL+UEw6ZCKvX+-++8t%URfoR+LrJ*lfcQLh_Wq<8WzrJ>;uK0QV1oP$|w`TFg=CsS4 z8D(`@C-V-^HRqk-$Z6FtyxCG4*P_%Tu`f@Qtb4%T2_R4hqhMTP!ajimkTiZC= z6v*2;cALA*+Y)cK^|UtiwYCMc7D~>yrSp>FKep0N7u4a&BoOy9<4eQLuD=T8xKCSC znCR*_b@M*V?T(x-d2q!2#q|4!={&!jd~jQc-e<{T?s(%`dff|hH-p9pvy@3eFg$Sv ze9#<^yora2)lszJY4-4N&UX4!?Ti-f%)afc8SU(C?VPXLx%XnSvTLuoyYX76^Ej*X zE#wrty154zi216EI;$7C!iQAQKV&&EA^kxLPyvd>lLxZ=C!a6pShh`2$Ul+g;vB4! zOK<_T)Z`67_yx5PLLQTxfHi}> zX)7~?7-sUm@6Kf$N`=B>E`FhuMd0my3=!G4$QvJxW1JaI!om%fP^>U|wG>X9Y@-lT z5ff6$CsLR`uLt^gBIKd=L1V$2+{ND4+iQsgO<9{h)qS4GqOQM4`402`E&fcYhqi7I zgDCXa;r#6FTI68UiHXVuP9OK@2`9OA9M-P|50uiy>?3CPytf0B`$Zco-t2bw8Bm#> zpKUq0HJ5aJ^|il3)BZjmmy8wcy|^*l4e&(_E5p=YOa?%OyOUH0HD)Y`$a z2JpboNiwT~x36@hYxMB|Xk8+I1nO|9+>{}sFcMCBthUzLndEpEoAyd>jp@)zW6rnsX+D!a~W zBWOYGgxF@0&udR~)x}4GG-+PeKQ*K$Q)Uq47}mB@9d}8_LpyCzW3cfJcFcEOa}C*-{{D zhV^Ngo_6X>OF_x=)?_GjM{hVTh+pg7d!1PnQ_IrTI_x_!nvM>CL_Qf8YbT{AOqOlO zHI%629cup-@<4I;7!02uY4Xrxl4!yY@! zi!Ehr+Y}Rk`9McXT(r>X2%=;A2=Ut2PJFA~_Abp#-0OGh+|q}GS1pEj$t zM>5*6ke!3`o4FD3!j-5EM~F~uxx|$Kl0@1qP}yQ7@f5=ch5)&KGwu&e2Yg$-02*L2 znn+KT=RA_#l%3&{RK`UqS&cJ6=v<;806>r~sTs1aFco4BQ!cs=xI}0r4b&H)ta8XD z?LgqlR@V^?&=?0`h|}p&()TnTN08{J_IJ(587=Q0ERY}g9)?*%pa3Hy6TPVl|9r1* z_?4CLEv-vRx^ZDtOLQ?LTtYBIR49vKZVuwctO8`bJD8A**L64vnbaZlR=6P_Dk*Ck zgxrnG=hw!HzzDhc4&00HtK@S}*NSDt=M-21&mdto+22>m0SW_*C8pvj0{kzvlvZp2 z2`>n_iYt^BHW~F`pwx`K!AM9=g~9Qc-imgr#HLSXn=MB&oTPYNwMh72ZZK8fDTYW4 zG5>a-sXt_@CN}Ys9fSwoC-H$cuxH^AIBP4y0_&jL&KJ}qR-|Z(&_zgHd;3CEg4w|kc~bof4+&>Jg(vY{$%nth24YWB$9sSyw=|| zA3lIjUk+esizneo5r%n4Dzk{$#2Rk3t2+vaA6XdudTs0Qq3&v3=~LDuf_zvC58%&8XxPb?wzs zV~OE{O$()8?n5@z;;Sv}#L1%iHNiY(kpA@1^iMPV_G1i9eKwi)tP;o0Fjl8Nmt}BP?c~k~E~Y+TP8E zAwllT@RJOIrAXz^th%kkPxE!iOAVSn8P0n?tz0})rXe?P8kzt6P}kiG6xFHC z;)W_&US~??n`5jeWJnUD7a}Ch10TCIsN_NK{z7+myd-F>|j)7Unn{l#Zu_s!N&o@j2%w9)t4;Y6w;T|!Jn zJ!J@Lm0}{KVRs}@?r+3yEHWBU4#>eMnH}|OwZIwUOfuiIAl72t6O?rGrVV=IR@4@E zk61(=W22FvWU|3lu?@0|ao(-Ai;n*cb(LaU((ce@Nxt}s&i3__VuLb|6w}G~bg_3x zzm0jzT6tNhJw4)U}?30FREG()E7_#Tb*u66pe#yBiTq zFqi#m33w8ooai2 z+oc&uyM((Aq3Gz>IF;zEgmgnV=sBfwxI@9u5AeC)yx9lW|3{+c5S^jXJ@8PG}P$6`9QrW_Fqd{fnib z{agm@jKZmb{>21iC$J>^QfWMd8eRg{#)g8hv-~6{r##a9zDW>1|EqsdwnTHj;zw<) zra;l19g&6VF6PS%H7(qe!nFf3^9yyuYUx5nbc{To?~Yw6``qxV`x)li>+hXWqKj8Q z7M3lxEc_lvTv14JiF6Pm*^b#F6SH9C_}Z`v%N4?m zQL#3vCHsBGSbu70a%KJ5{|PgOUstU=VaB-J{Pj;~j01k<)=bqtp)(4cF~nYqk)rVs z(j`oss5OMH2j4A>!%#MKP`amhBCc#A#z(Aog)c1yP-uW5rJA5)ZBSw#NmYQk1`Bb|CUxS= zys0Qtb-Kr@QfwByQoGUvUO1KX6CstA61Nlno}fUpgeH{gM&TCd(2cP=>8 z+>8v#=A~tWzkfLDy+3q4zMUiuQ-r)2s^R0YiXiO$m~9?9$Qy!tzaR;)Gb*WhG^*0# z``pk}mzw4E@Bn~-t;!W5VPmIe@7K21cF|&-D^8=peeNrC_-p5W`ulqLbcdu zHP0$rZdhTkmo2WGFhRn)Dyg=E5F0yW1R`7DQW+Au`@Ey_OeMCW%#z`9fA`LfDqKjp z6;Z3ngKzI>F-+w)vi<)8PGEm#;^qD?aDpE*#=}EalqX+J)|NH7s8+f?DX^%N@ofI! zBVkZL`Px;_r07M(Vnc1D{-P6$`I`asy_EE0S1sF+sZ9TU{5Vjz*ZAI?PnJ^>EegXq0^vJKK}3?rSwiV?4DOxmLFx zonAhQ3v*`RVHmeO?Uxl7J5Y%kI_7`oQf{{ztQk?oFW>cDh0p z*RTu~v$V(9{T+=j=5tUNYnY6VCeSQjI(lbL!7VK+YtcPiR{WD@2zx}4#PL*pE*0al zG>yt6oAUFoZS|k9>(_DHR9@B2vOGWhqRooBnqO|g`o$RkTd@tib+NPk@tarjRo)ck z-Kj_Eo7+A%p12#C{5kVR`nk6<8~RFjBCG@|Uhz;ij_V%Pb4%YCS$rHyAs?Po1gfd?(F?DRuXZ4k2BE(0sRPV1&->zkFsLZUr zZ|?K6f@eQIJIgQFB5Ucg$}apmOzY}SRHg(xub*~~qi9DcPvXX|!|PAWo$}oehSn>e zge_<@-F!HrXjylb>x1~&)`^+>ig%w_E_$lFzgfS(srrI=!S9IcB+7ZSJ@Um8r%W|7 z-Fb5&+1tz1o*LYUw_9mmsVfYR_JS#^ymvjm;WJ{5kl&Ng2h$6|xPbm)T!6^I(XNR9 zz_`%snynou{U^o+k?Gm&5(8pblIEQQ;{r2>%Gjrxfaft*_r90j*NGnnbkB^I5EWk? z0jHP7N=vNGxJ%U1dga>(7^1hwhmqCqz{blbulrcU&J#rtI*rd=eA@?>-rqlID_{q( zQ(RwIa8tq3<;#{?4W>B-Kd#_cmV>u8e2z0N^sTp@MkG$K90B0eZJ=?Xf(MBlYTN!q zt`=f|SZr%qpEnh@emi8joS6HvHFE#ZSw;J;mDwlB4>~S1?SQ5C_Vv1?Nqf6nAx;G@ znYa8G(R+f{O3YMXcusIGN!Ln2J8aSeqUdF9KyU2uPSw}4@OBW342w zbm5enDX;6Hn5_WlaD@;!y*&4_p*dNistWfMwtgRrBo*fK9u@043}`kn21q{`H=4wO z{J!aghPml14I90Z=_Ct}6ZuvG+zEVVb}i=$G-@-#$GxxDTogEawG^CQ9$s{9zveE` zU1;G#&twml-kY&y268tDn)%VJ+Y|VGrcp6FH)hX;e_}b9Uckmn570vP%k=W!WFh;} zX{`8|x9Fv0jY8gp!y`-PSJz%pUu7jz7=d$mo9y#xuxcCHY)%@?y(@SFl+!(7umf*V z(S@!mveCEI75b+Wl@FM%ZYCd_M3kEPQj%$aS&D=1W6qU6RMi>Lp2A!rOjCKIIoPS= zk{1Ie?EqIb`qRfDpBD1YC!BoRnywhf%LWkKz-XnKFN2?T)TeqqU+!%d*njJr$2nKS z04V0bepdap+BzY^do!z)>)Y2=(F6)0Yr(Z!6fqnm46VkhQe_hzAA38v^a#1YpC7PQ z1|$A5gX_NsyY^Q7YHNCWCCn*3!u=HMzxKDspk$hD0 z7DF=+&B+cFnUk(I-5%o0ekc}al5I;=j8Gww2QbS#DondKA>96GRm;JuP!q-}6yHby z3IO0ltcOIlHY0lO*^(HP=dwF8b&1i_d87f#q>Aq%&PvCDxeo|{wmwAX9!)xYK;o(vdHcv!wo<15KY|V;^Ue_OEn=Gk~1P{ zMY~YJ<@5%rk<-|~rrthBa1CMFwYAoB1_ejZT+re-v)ax!<_=DYi|1Fyu^ke7t{-`p zFPKgWA%D_;is>M19VcLu8InpW^>I$8U?2pus=(-bNjVAzPl{6%BNC|cYm=VNp|e}TIrQc|7JPuh0wG@l}}LooAs7t!OwnGzV`HQ zw_m>CU%yx7ZxH|X>rOJ?*RNHW)AW-N4$~?!9alYy@=4OH=k5GXE)7Z?IxzEVVN4B6 z>i)ro#Lwh}!A?!meQ-lEIHz-yohLFQ z1bX`Gd4bzIPZf_rOQ~OV7=20ZseE&FI~X%H5O+$5<_JS?P z?pTjbLv8Zl!ljeDP%jtw<5G!A}txw$(rNz?e-hD7#dQ@M*t(s3p+ zhfS$z?JsWUs@~Y&lfC~!{*zzcvz~8OqOC+aOMx7Fld!W*9V|mjp(pp=!DE}c1a+1p z%=e~PS&Stw+;ua(v1fG1)8T`~@fEYg45NHvyWJHnp!$K|~y4=Da~i zV?coeE)rz8r$Ggx&=+8hcI9kD}38Ap~!EnBR%eVfsx~Qxs`#K=D+BSOYc@ z3)9FWHdwznMM%{bUpTwZFRcPdE`p~M&&20(H`H|a;PIsE=nuEKP^1^FSnS{*61W7K z>EcZ^>p$4(*n(?~h%4yAFf*qvezo)R%pX%-yGxQ&uW6=SQoC&R^wRAc|7fl8|IuKO zXEU|fx>zgvrA^j_9xt#lb>_?cJs()#17LsR3!a#R)fG=7SYGX$FTLQ}NeQksJZVp# zT7JlS+N7qF&2ypVGKVsFYv4Yxf+;Ua_oBl4z~b&QJrs#SYneT25;vI=1B+(%r{Ln67IAJl)P=^ZH-cN`yY z3bca@aZ%#-+~*wbtxw!c+?aVLI{gk&d+E)H8O~_B;!pKcSK_{qLSq}|(+xlmdXvY#!Sxm;FzZzKKv{bA8kWG#fR4kWz8#GFBT7TLYp9)?&lJSl@W z`j#^bWHQTdG|cnM=@|;gbOBe_&~u3XO0GeTNcpu9-vy>;qznVKq+uLbyDl; zVegUwAb*Nh4J;Zqdg z<_D0g;R888U`UR6G32nSK0W5W1vf+n!h?0Y1TVqJ`PG&q*tAPhfOh>P((HmG$6*L6 zURW}(O4KdZJj6EyEMw&zEpo6#)8OT3?$DZqnzoZ(L9SumefL5gg--?rnoo{GnTm{5 z(YlQyPjmiyF!(*#mpWwhJH!2;QxA;XR)uPp+p_eVI`A~q;G)ZQ=y9cwrbcT6`hg-z z(eYBZhPrHpL3`R84@X8v>T|%sz~ndP;!kUhC%R=5Z(Kqe?^8<{VMJd|DTXw4YrE*- z%3ghhhBOaFFY08AzWy{6-12;|@=SHv>&3$0);H8gH1MKtR{Vq8K5AE~4VPK@XdE?M zxbnqw>ZbHgU-HR%DvV!9!`oenkGbsL@5ZF(-&TJ`06y2zwjN*xb`M&oHa>aagTTq{Ufr15gd(kJ5%cZ7yR}D?4wp@f-`wuE zj?qZ&v@o5CYirBlv?>XM;UFH~fv+my;41PMD5C(&tC)qT2i`BJ1>8I~JEq3{m z!oU?;TPgpnI%Yi|4e#0OldovFf86}GwXP*N7?epJt3K*8YV+5F!J7#-uDhQ#Z=~zJ zl_`tlIlic#IH8xhW%#qOX9BGc{KQ}W^epi|6A6bqNvTgo{O&B#pL~!=s4E- zZ2Et&J}^2E0}AOsg#E$y`)=7|+Ozi}xX%3a{hnxaC7dN1D_^&It%BcgLLvbJe!sPv z4uriZA(8O@(f1CPYx+dA!ls#~q|ZM-&Q^}(el6vsJebcCpPI-nO$;Clk&fD+un)Ak zlX2g2>G+qo_#n#DoHoRXuRCvx3T{DqmZu4wxH|VhVUN$V#t(6|1T9W>KH2ZWn6+&` zM?40pIQQ@E1`53C2hS4zpQ<-j=ifelEBWo)K{m|c_|l;Om_YGlAeGGQWDs2K;QQ_H zE`;?`@w?E2?>7kM2Zeo-!&JCX;lcNNb}CY``#{(`yeE9W!48&<*#lw!0jI+3_#qB0 zQ1T&OOJ*8R0zI}_a0QDqraB~KIQTipSiSgaNc(6{X)C0UEH;&Oq<9|Tt2$C^y7iC!T>gx;4xBfx%?fl(qvRRSoE znH=;3;ignl{XA6tWZjd+3@QyB&L_p;<3N)FS|q|5(}!Sl#y5177fJO~UTe$k8{AOM z@ENt681O=E@KX2ACpv@J`9K(+U8K$zirE0Faq5$R*sZ;-)#jnCmzNvAMev!G?`g1d z_^w0rkkZR!EDYK1Zm z*bcLO-3thw(G$#jK{qKtAstx78bmq!=;V~;QpoFb8Kma2$OdoS1MVQ+s@8M1JNB_d{%B7ljiqwVGrH!xW()1x0@= zD&G|dfTKEMcyNd=1mkk}SurR*>UO?R;suQtme&%B6KD`%8F`@YN+Jf!FLqI*HwZR$ zkVq&>?z4IspB&zNQIuS&--IGRi71C(+^_dP%!d8Q@Cq6|t=@;fj~>n1c}jVjA^yG< zvvjr}SboVO!W1GR9Z!3)SVd5CB*JVh_xFi}GG39Lzh_7~#c|H}^LyO)@BV!M0*}F5uj_d| zujh5y^^TXEgTee)N`D0NyInpX&~#?z!TdAHOa|X?sYC6TuRzMQchu)RYF8`(-|v5D zeTWw8jQ6*H0S@*L#;p&r1^ZrFc6@Ffx<1@gaA4?W$G6Wz6@W+~9ck4GwO@&dQ{#L&%`cvivrgYA&LZqMvnw`{CpX7=ShQ4l}q^__;futK-B_s71l+7sJ4 z4q&zDZ`!J(N8jZ`J`ca|mR$$oQoMND^UbtBj>71u-dErgRZ%e-YrN-U2OS<*1MEbo z=E{pL(fH|!+K7(eKT$601Ux`@*Z*&ys1=%TFWp0fwj(Kf#n>1Zje_5}iFhQh%OziPs8tlb{dB&pc@}iFyu67vfFk(f$cSYQ zO>VV&T=pMnb379fDidu$4u4S4Hfqd~JHJE{DWVg?3)SbnTP62s{_O4C@{A@UiF^HW z)}4AnGS)qidReO;GDl*YhxndZTCu zc};8Xh`zj%ebpifEAEpWUDiuh*Wxesti(!~Q^EI4+!x2?DBX^4(45-_A@xFq8P|Qx zzwA)1SG=+Q9f_GlsMmD5ZSzhoxohWKBCC7OHw*zy^>W4*VQYXkl`E?npGp{Q3jXvo zq2itf@<8wVxN9r6WcEpQVLuKempiSV+gBod@LTg7vQs~pEkTkv-`$}_1pu*oTqlAI z9EpBff%)uB`b5A3qoqLPNQQ1G-pWPPb|}gY<%-n5`cMnxvqT#`DIr?T$N`Qi;_VwJ zc`JhGIllry)$GUs4t=)UuDMutRTS?TG{~6O_fRZkW8<^EAEj=*>pvIs?F7x6y% zo$QOIsN?32OS7H6ucx`-dYT1a@Sxt}m?JiZ)AMAx4FpZWP{h)BrN89SMSh=mFYCY5 zxr`UwmMnxtS?5w_38F%b1~ag+Q#?^rGmDAyW&4KaW2J-O6ZLCw+a;n9En-N==w2E@ zH5aY1)ih!2y{hbsd9?NhTTTBvc`H6lj+x*ExBW(Y{&~b4Z+@inYTJXzXLzyxyb*Jo zm{>MGKBjydbjP2Fn6(RtVWC(XrQdAMwQcmzwB9fM2xc>%^Wu$|5B{<_|EEvXSa-~W z&Dw!N`Hw${Tq^JVptkSXluwlWFdMb9kTHulVh&eg4;3=iteyz2AFgu$q!RXKL5FbA za5YZkLWG$WZ^W!oUwI+QzVWH_wc%P_-iT@SOzshX#B|&%;3$7Qvu>#X!15e?=G%{9 z%-2W6`}?}d$5lyyf4?7z(~FK+*an;mL9q{E~hTd7DoWcT+%TU z&uzgG4wuKru?F?Et??K=<~fmINqFmroBVO?k*lE=)_lDp;G-JWSW@)zcKSvF`V6@@ zCV0VtFsCL^PCX>!>?;)!A4Pg};*U3vo31TvZNdv2veP@|?$7~7b?j_g@IE+g5nymT zc5lgtH!Vf$V;-lN9X*AKvK{p}&#S~-aCn55-mw`oFL}sh6)30Pf4hhI!O2FKes_ph zi7DuUU9*0zn*gv&NqGxmGn_Y$+2B_7nKLu48V;WL@kO0dKOMTvAN}D5pB!wOyshCM5#H-t?4xA4?PjX60&hBQWY~ z;OTh+lmYv8fdhXRSOv(lH&2luRse*(ani?2`R z<=q(Fx+QPr8Y1WtJAY~GnKLVs-xRO~G{;?H9Mv;D-(6yV`_}!%B{uxx3@E35eDkgX zK=NH;UVW7)wX=Oyn1wxk)mXku%-#!>Q{B(@-%#-9JJCUx*#9v(wbiTm?e|K|2iu3* z173oq_4~j`B{1a~<-zVWMFsJow>3jI>$Hk*e}k_`=&7ucR=MgL zhK;v_Q2QNq4u9S1%RI1HrUaHQ02JB!nt=ss1O{#e;Qi@#(ZUN~n|-}S0*Ox#>(FGx zA|Y%E3TQCef~Si_un~%V!0Z=wZ2vuneF~_i(#a%&g)B18krkl;&>|PG*q9=qQjsPG zm}QWa&_Y3Pcoew5m0mf*B!SZFLL-~?35MB3<+vqX5Rya! zCq-4nd}+i!C`Ojc)P(CtD}kq$IVR6>iuD%TPKxaf?Na!pc2_YZsnx*hin|`DIVs>GVR@mh640X@WYW+V(OdR@ppsLHQjn$HR9|& zc<(J!(+Lk%s&d`WJNS%v*c2#oGpOS%VcrRiQ7i@J0*eONYEBs(eg+ilwDGL1XCLYn z#fzRo5djzGRP3&a7An3!TM;$(yY*|5!6TqXMpm(sq zR8?H$>g$6!B~@xB+dbn@I<8>9L5pde^ndZ`h#!E$2tSOUYv?_| z?(J{sN^l6Qt#lMIptV`-Q#t-T$!#qavJpb_RuwSb`_LYIf%YCr^lgqj23Zg0XK(ZQ z_)5)p>uC*jn93T{=Claa($yzplC!}VsA@~|Nx_$`z{6M^+Ib+^vv#-cKD`m2n25Nfw*c{7;Q>b(7P_xkW}4O&-)+{{$O%Ax$o zDUN17cSl)G>asf~QvQuqUrfd#TRlp{NY)AkU)|!n@6^cc^}WMXPB6enm_)f@>Ac3A z`j4MCi!Sr>lbp*UZuHLPXr-lOL?}Ppv~jr;K2ligsT8!Ej`Hq=h;s4k!jsbAhsDDH zgJASVk7@`+9o2^B;);T5HJ1j5%me+!K_mo#8}kt7CCzRicvPZqX^TL(CJJTgOGw__ z5RwT;bM#grL~H~=Lb@yGK)s>CcAXMx=^4T&tC<~H$AaW^oV?Atf z3NFfyU=JIoDh>NwdhT6xsi&%mRPJyHmgHP9t8q6hsMFoVY^!#(pfCRPkBD!zKDxHI zhE05{w{>urU;4=peA1i_O8+zX2bB{%l$-qWPH@yjXuYmYw^ z@TV=ymMXdNY3m=AsI6O^d6_?LUH;Je@W6j$+5($8i?=$51DA#ZUT^Z+=eTzL2k-@| zX$pb2Ecm1L2h1;Q zoX9VXn`!j-S-Zc>FI+WkexdxO-{u!G$MXw!PoH1t9tFw!oBTqpiTpzHl=+2+Ch`ks zPmy0Jv_D;HMUL?nr9)KSj*5nVP6lS-PLa**R-2z%y+V&okB5M>Pa?RZI&C4df&To& zEM2UmS=zaJr6lK8-j2$G`7-V7hfnzQ0739{CP+M4Eps+;t0Z_jBexj_p{;urf7rqz zJRYFMN0SBKN29{aMl++@ z=>8FYK*)LnDjJd!XVMw7+|aOHN+X^O@SAl!m);4e^)1uqYC4nF40Zc09E|$ju|p3* zDsqDhUz`y79026^T(E1~Be62D6}49p3>oL;7eapI7v5t<^5~Hs|F%kZ>bd*Lli6hp_EYmy*ho$omRKezkJ|5WLqw&BV z<*zO)@wqps!`6j7YNy95+`-vHAzJ5;3Ziolh0{_j1uKzdj}fbIxoogR4G;=e7lYRe z0kTfC$a<7s)QOO`cl2VcbrKoMV%2JTQK4(bAwD!knAe7d8^Zz5D-hNxXLqe{)6 z`*!Ton+{W#ZS9fC$i2&V2J+T6xpKSi8?bkM@7p<+EujXPwo-E*5qth|bwt{4D>V%# zRcc1@D>e0gs?>!2sMPEzt5FC0cAV=(uw#8YX5)Q32a$=lX73#9+u5dozcJpo<8(H_ zlT|SHgFFuG+i^INd1_!jo!7T>XS{Dmn%}o``Fr2a+_z(WJ2kGKSA)(#oVW)?a>P^D zlx%D)^E66z(H#aX+?9A{j2ZoxizV?x?2?7er2Eev7I8ddS3jp=JwzTEM zy1GZq-pK3m7SfM)9{b!EBg9-p8LLd|#F9i0!o3+JseL|G__mjGvG4j%EV%yZ`Mi$T zf{d~Az!r9YKw|l8GHG73Q~+9JmZ|mrk8J z$KR)er~U)fZn$$OUrktXzB+Ze1WFpj(&XoX+d!3BhUY)+i@T{k zO!^B(pD0dkYx6<&e$pyP`r4p5UV;`Z2(YyDNyz!x15s}{)h|kVf`uf9G~K;GbD1HW zTRn&0gqD`#O&#bgUU2Pw)8b`9MEP_I6(O%Mhuz6z+`2$}s5u5FFT8A6%_kwRvCB@)N3!I0%*V zR7z1fm}r7SL2DpV3w$$Wvc$=p<1{IzE=54nh17;;A=VT=m3gV2@ch->gV5Co;xG;_ z!z&{Ws1^8#U120=qoE!{_=Mt&Z^SFnU>R{^`8!t91`A1Rl#z9IC5jTjknaLJEU8se z$E{Qd3mvZqUxkV@aZG|if21jiAeCr$N+&~qVYsAEBHOP1+s8!g@Wz3}N-Hp)_J3vu zTe5cU`}!TX52)@;`-b_a6=^?h+VzEz7`JrGVl?+Sn2Oud3|r~na5wey7|~8!dpASw zLv9faym{_lqH2%KO2Z89%e;`x%p2^YLTf z{kXq$>TLR3)*L!LYkqKz$!n?nJ!}5Dbqdz3ImVjj&94GmDnZt4H5F@CnPAOU<1Lk` zlUph&T_!>z7{6oNEZwpEW-M_J;V1W_7E8+l$UhcwNjnI&d$Ral4QnK` ze{|~9KOJkSqzbTMp8S?dEtkE#mdZ|*#mU)!^0kh8tF2w3rEY1+$FeVM=8J(b zAwl1cOC>U1-0%nr6A0`E<#$09Pmg$k=B)Uwts76VUb|)G=AO2|=Ro&vy_=T*-^H5! z(m>WMw4BeHMbHBuA0ryT1#lbkhi0yo?eAF7_tucM3yCeEjA`ZumxiCE_|GcoKu_@J zDF5?;zUiaJC4Yrwr^58ru5KX&{?o3eY^I}Kgn2G|!rs2Tw=5Rrm_ zVI52HSm`!MFz)P}{;HSdNV!#Dk_LdB4h?+lg;J3kZn zsB5--oj%d%Qb*U8UF5Mc2MBs)CuDuP2qV$zl$}B3@)pl=8!wm}1KN1c(@yE=)mx09 zYou5>I9@V?Z{y7)J=aOxE5)9l9p4!9!cuXV#8lSV1vz?pff%f5d*Bgb?2(Rzb?Ag; z03)UQsNkID#NV@K)(lv4{`nKqO}Q%;hu?_}9Q@~y86s)Xl`^W-U9I#2&e7v;;Tcrt2Iq0R%4 zCj&Do)M@j}_2#zI@(ZOHRn&CpNnk=L}r+Tcb4=y>JT2K!yr-}}03 zC~T-bqT{Q@!|lA1vm$yrk_b__$N>~NK*^(W`#JJ&wkYXf`}wqaezq`2QyF!XS4ipl z^>d+1Mfpc4UxBtOtn58f!9so+3Gws$2;58U0!=u=C@8>?Aw8l&09&9_0=!w7b0t0W zo1?D&s8Hu~?1KfoJtOuWv#UW33LND!Lju768g-dQQ=NcOTOMT&8FCz_%z%;fXPQn0 zXmcOcSy<+n4i%Lz4Eg8{{s4nGuB|lgUilE zd5knjAv_lHD$ZnSHL#b%XlXl$_(f`#VtG|5-gTu^E_hbt4OX1dcfo>M+7)NLlGJkD z=?jo*75SyXbU1ILC{V{)NqHWp>#akk*Z0FvZ2<1R}2PawU*R#;%Z z8b!ilB~@QCMP&cKcccbtYW9!uWW9u@3~>?0igA$U3DP`i!(z=5lS|$cTSD+m00M&Y z_m;CMK$$SJHcEi9z?-ruEBH9iI{CSI8s@A9#4an~U9y498JN(Ur(w=6zh%xcKlJ8T zOg?iK`$=zx{Lq_kgUs2U$D9Rzqc^ut&76gJdb2){IZI8)oRz0%&P%6f&h@;0cb?wd z&hK|$B#rQdO!T{7%pKR8f$w^=)tKI_4eHIf3B6hRyWSk^$0*_J%^sQKdULDOxZdnH zp*Q=PfqL^pp57ex->EmB9MtlL=?ekg5;e?roG&hnR&aInZSfZGx{bx8-Ig}oIfPs& zgHV9^HuP-HeeIz(XnAH7IpnDBO<83x$fuWaw~ZG)FBsg&B1kp*pitH*FWnl zqL`J}o)u6DfHJ^4S5pokv1Nk*FnZ?n>j3k9L3&zfIeqRlL%(IyHzoc#0t9%dH*g z6hfB2Wg@TF3du)+5j9|GaD=9E0F;xhtxOSz!Ub{b z?&t^{O&N8PA@e*Teli>hvaXPR{1ZgjwM@BplxrAiJ%;ZXYCD3h7ykP~QE)P_2<${o zT%U!jZ@wY8W0!Y64$O~9M*;h);tsiyrC!T$$m^Pk+ZzcAkVwI$s3(!UL|dl|!Nx~> z<8#k82)3h)8H4AJ@OytXeX6F)pNKWsR5>$Z-SfA^T5Vcly}pp|^q7iR zZzk7Lu(-f)`S}vZ3^`_F&kBCT?e-na+t0f46?PjA;2+3k9`C*D#^nG79pA;5j_4 zEk5U4t5%>vT-fY&WyUNbIug$n6>rSs0L~;RAd!ze*sfLN=5nJo&EQFxvNbBRPU5<} za(FAn4aD^;zBniv?&XXmu50PN+SgV5u|dLt4hfU7j(Bnfw_R5(jC?U94k6;+2nAP- z@N^CV)(xPq(5^$nZX770A|x((hY6(OMdAaXxchA8Jgz9kJiO;5-cJTe0*y|`_#ph~Hpj&lpN z-)>i!YKpZ;QLYJSv8R*m@H;kMRRr=o!@!Ibi6SnugLh=sNP$De$l|nML4)hA2X;1Q z+x5OEt~`|~9-#EJ6;xvsUbAo^>|jh7_!5Heh`og=0{*Jlmf;qj+<1x_fm*ckaqN+h zP4bWIf|2jgCI<_FU`+@~V3r*PcL_w$ocg0HZ|NN^(<12X$wkkj0^%1v+?4*nL&;c@ z$Z3F1w4pZn5o(i9F4?@GIBz+BCg2j}hU!NdMEViG9^V|&9_a1LrX#5zOb~OJeHOuG zBzQp!ThR&M7`*PN8p1etiLi}js0bY~7dIx?4C{nJ%5yDjp^YJ@2a}*C3 z{o=1NV^g1cO=&(%MrIrXuaT9)L7)G}qI919-Lkbg`QxSBU(-a4e`7xUa*-hZJ&1in zr0Sv{S)r&aYDeVqz)?`#u#+xKJid1(Lr^1@6C21*N}E z1s4D9Q$hPX30M=spIlT%;C0jwfNx9LsDAV#`oXJVnh?(RfHomA0ZPOv`1p6SX0@0+ zVfyx)NNvs5kDl$K1z&+KN_oN{IhyPU3_6MIgG>A6-hs>dRU2dF_eczezzY;8^x4r? z2R^@Rztg`^B5kC7g+xNlof^E)&O4tv{6g?1pswR;i6r>af|0(!yRY6>s7nYLpNi%$ zio0}OhGm>FlKZ6%Q^WvN5Xh{RqcL1El9BuE>*(p@ZCV#`VI|~DbU;M4#Qg`?OUs{P zgjj6RtysF^pr~(AE?aG-GZF|aG^moVmaywDUc7`X)*z3PWz!ehdEum(;Koi6X}ku` z-Z|Hy8tET!T$TGoiXOm_9hI&OSMzuxB{;GkSW8__bpx>t)Q>^ zV#PqQxl0F6%ueMp)qKg~5NalgLnD>!=bu9n4f><(SD27+PEV-FWmiLOqvQZlo8H^uG|91SCTGzkw7hV6AxWKFpuU;T9KuB;Zf z@gArvIR&}RA>b3Sy*O`+C4r%-s6NWrL*CM%J$$rC(kY-5hPJ8F+MoELxLVi4S*b=p9zPRp9( zvI2=?;i|QaNBRZPq4w$Z=w*O6Rl03xr{b{lRRy3ieCa|jK#J)=LW&Gsb)@zp7WbvW z>o;B1jd9rvfF2S74mc%%slqbs=QId?Rauo}(k3!|mR_Z_MW}DbiBJT7h`9ixE4;CV zt>&B&SrrEWgrrc^D4f6;fv|V!SP^U%pa65XLR|SKyya2^8) z1Y}@BF*xkI^8UEFaSD{iErL-p=Yv@=;6>vCAvC)n|ZFih|}O@EY`kp ztH_I_s(W1ng2j!HLNI><$9LOs9p9(;n!iw)zt;-zn6%WbjO=cFxn4iAyXgRwJ+alL z>m2%Q)xGq~!&|`^+YIa;q2&*bmqe^PsxMleyCN&T$xB>0OI|o{hDj4s8qLcS;h7e9 z^K90f#+Bz=6y;Bsay-rW;V`=S;#ktedQEY#jWb60F_d8Wuwflocr+;tNs4H%HtYN0 zD+vBGS?bPgQut|q@OrvQ;rssJ*i82afBbe*n6y9e{G0tj-E{kd@~I~U{{BGkZ}$gE z(@zRU(@qM#znK(%><^;8PYS==AI$k>QpovrQfT;fQtiv|tsaP1?;+7FeNN|fwLHe-=KE2ud)L5vah<8y0@E5r1 z-~x9x$JwxhRlQ?L=&s#wKaBex0nqnYpd~^=B&T?Dp4HBIXB@l@bq`MVkJ*TpW@_1( zB66`8Nl2G)ZLU^+<3N?@VbQ^wp%JBJLdw=MHFzctAU8s>FqAxT>yV(WZ!F@@3Da2s zm#GJkgudRy1(yn-RZ(1&@ffy0j034V=}C(T4*u1%FLXE#hJ*z~sB&G9`biy{BtS@U z04oI>hRBXOQ)|9(Dy51X;KFI%s3l(Mdk(*M5p~fM5Z85yFl}@VY~@}yhO@BNpmx$& zNN;YM8w&c|Ay4UuU@Ka*H{3#^2S^}dT(N7?@eYHZ$y$WvG}9ySl2J4$sRaiC*+(b(sz%sA@P3 z!3WSuxlkaVX4+PO{b0!(HB=d;7co|uSEHR~ek<_x^AjF#TH6GD+HS6IeV>+8 zul99|KQ<6LnC_;LLYb9Mb6T+yCt&*Tm%2a9kCP?^WJ1`fE0^+CZuB(Cl55Vh`Qf~o zc2an0@u2iC(F?}*Na&dMbnz(+OtNjcVf2xgWb39j2L5W7^ZUoGmV6h_WNB!MWy62Q z?LK+gU_WCQ&xG53N*B+J-0o8?8>V)<^IbgSZujY2Jd@n+Q@VI2x!r&3;(7L~+kL{t zGwybuaPj=i_GjdF|IYUR?{vGTY}YuI+oNBjRiQPnTJN^k`^xzp6OC+U<_+BJ6xTrw zvf5jnJEn8a4c_fl+#jW3cLMt1&liO427l%{#C~|tZlOJ&=$2@`pv5C-@y%ARf|DN~ zHD4zz1jZ=;rKSaK`^-kafbR4NRunRvvwgT@zuNU4EvPUb^~wI^e5>=r&uVEfMkA-qh#N$kdUca|hxfM5Y#(JOp3!t!j2>@tiZt@+f^F9BgF!h+08F z6ZA{((CvIxXFiCdAMrsvokZ0|jV|KaMr_*9&O0e;q)1(XL9`5V$#ztd7{a9uX6BJ= zpG}d4fR0$=`~>Z6$i$4I=te*UJ7R?b6W--4 z5Nrnl5^^&n-y8+cfbb$#9t<%zTCiy&RH}&Gq2|yBX@sR~p_GMuPK5Rd z)|=0sPZle-?0P%c3B~tx!slb5B2It+kiD9fSLmkZ{wibn63Ct+046J=hQfDNVkq<) zHObWoy{i`^FIm0VFI+}@y2ZB0B{%OC^2 z9=BYgw0@;Xy9ls-UR$d{Kl;(-_o<@mQXk*<>s|b4FBk}q;4Xb6aGNe?K-!_i84zip zebTyzYx2r9F_pLzjJ=fkZRDlNLhwN8-&idz?qz~*_wQEAA1@af;TeJfT9fz9NR$G#F#VVIiW$1? zVUs;W)4J_nj(di9ZhP2FJVU>C+Xwvc40(>Z?RWj;8AAT>4DsFe5YRKE_#4mAG;aIF zJkJo{ZNFza&(QzOZNKO@Zu|KFVvVc!-FP4C3Aeq-|GMoP4dz%1YRrFG*570_wC{pi zD#o_~I63U)Tb&)?V{s=3vw!d|+P}HJ`K0<=gL@95J@qOnxmD(O9K+A;)Bv9VKead- zqfR5yZlj?3mLu99+uq*TcttJFgis@N>e8t7g0?MpwF9m#>=;2SvrrJW&}loUA2-D8 zmd>p(rEf4GI;;6gS4!IY;g{Lz=N7(*E^4X=a!8Lqy?%bfCsH};$gPDM`Gq@zii^6I zl6p%jGSNNRo4!GbY3Z3!y~Sz=-)dbO`u62{rTaH?B1dzl@#WGp13^7WLpUaOZ?=9p zv0%f_1D8rG1|pRcN5SS;HxEh#fwj-I;nVQ4n_sjl&v}?TwPP5O$I1`Q>4OM zstMUGH9F0L%xm)Oey4sm7+8%x=)hDhTG?a~2bpT%Xno_3m9LJ&WNRdFcf!;>7>68Xsx{f2)Sad8Pxi&+ zEa4>!H019)dnsq>Q2otu&ydHV0d+3pA9#l1lLu#zEYL1P4gsHlwZ6H(7&&LQ9r)Ow zw&6SHPY||w57t_}-WChiS~(-f_syZNoFuN*)#}W{jbBrN_&!e1cl~>#zV81wjrt0GDv4J5Y~>Ru$qQAI_HFl7(l;<7N%HH#I8F0lg1&l= z6{B7w(d%h_gHlM(z)j6qOq5!j0i#Y;<93^VhcaP@Upo^Cuc;pxZEv~Ch>NRhzd;4CMc()0q z>{9#{N=(={T6I|MAhI{Ijj6fhqS^@qhW{hicjwI2MogTd?uXi+*KLZPw{$-7s4s!0 zaq6tsr*45wsl_eJPKCVmGde#%mDtB8<<{4$f_KDY8lUZG17C|yX#1D1NI@xUHDmf zXH4`5;z}sbw4C&A*gM3>vl`vbIgzmz$Ha~#V@~B?pbg&WjRZC8+6|A z>3yGeCO&%+1dNXUkK_B#$uX-z2}|U1-b&%EOS4{sg8skPbcB1#&MJ>l{M!3-#D!LG z)Bj1+;R*WtH?Ij17)vpL10d*6J_MKo^k;Yo@Dr(@_7LDZsplO6%!t(g{t#disUJTC zn3B}<4gnraMe5t97V`O|o_`21Evf&H9|8zZSbioB0bu_Z9|EkGh9gNp@O1#0l3(#n z5X?}Hk`87-M+sntvZv3J2sC&_(_gE-Ly`yEMzWOAMbhq=LUrTR) zT+%cN>b-peHO>z81}#5-LVGgQf9Zo6F5{YsetmauNO1(8#_f*;fVPYXLfp~bGPNA) zoc$lV<(Cd?r2000QVVFwh!9(TZD;B8S1%8L>O5fyMbBZ#z~@Lp=zs}f-^krG=)B?* zOD&2R$mDSb8KFyZDdMHo9ngg`3vE&uk}04IWoZW56a$rFa$$HwvY|*RcE^as24#T@ zNGS`bkM_O{kvQq)6}u?nF{qBNQSqzQgn_f+C*GJmA6WpX%JoO8EPvX0%n%q@1cH7| zl4P-ZtybXbKQ>^L#44yO0**h8@vzF0vnEIBm#%i+7Nf*Va5s8t8N)b|rSO(xw!8i* z2>Na~gnl$dZh#e$VmfD*#(5K?W>!p0_BF*%RP%KM@kx!@stfDuR|XCoNynU02ZcJD z3kQ0H4s8Nu!z3l<3Q5Y){y0X zk&RngE#hv)yf|x@A?Ug8$jVK0jwXCp(~eAy6OS=3)1@mLk4L^w3CdSBdQkuS6WXeO zdkFAXQorW~)HSO4c=NsN=VhMM-T4zK29tz*-U;o5t}_*>-#Q?*Wd0fcAwa4n+*3Dn z{j1~jlKXd0`~6aB<9=#>%0Ja={)stf%G-dSxIAdinHiU#xDA++%g^XGU@9&@^=$y3 z%a7j%OvmLX-3Cm_(q7(Y1ihXt7mDmU^R5zWrtqqQ z0`yUoKQ(BA(fDtU>tX?i80z)eVAE)vaCRGjSZk-CU#*JMCBa40yxup7K7JOC*QwBI z0K#yL_gs^#2OJ<)vT8TSs)E))h?La+aIewY21TG?*uI>(^eU>dUAXp@ZAs4J=1Pv+ zgxO=D9FOUYRNM4md$IEg)FpG}IJeRE5EKxRQ4e0>i`T38cAOi2Y7_T#_}QWN?F)#W znC~q7i*E0ymzHFaMIB=-9K&Pb3Xd0c7uNOKcE#;ugwKwWak-!t=SwMmb`d#u#Nv=; zGinY4Qx#4C;OrrlYz#2cch7#V*s>P)!(UaR)d`Wx43CQl#dFjubl3fyg6ovlZMV^C zuzi`4gphPfgd#I#)Nt9Gp?Ay3ney$pkMw2czE2OLtkOwPs^Cg0LkvdR@KlmY{-DQ_ zOzmqQByz~FP2Vw6z1!MW-l-H1JTG~QhJsmhs%kT6p%AYO%)2d7a;<$~3sW*g-iB2x zw$cLS+cL1D;nW&}Tz>?Q%O`SbRE<{abO&WhimFBv8(gCtdJ?4yl4^BsZHsooWXaU= zxO_h!)*ocuB1@YVEfxx|*e^l3;dZaMxk_*)~HGz7SqFeeZ$()frLUntlwPMI>2u#^RK_@^m!nWjXA9wZr8uj1QVlteo00++;t}bdhygD%$QLg#$(Ns zx1m$8=FFMdUw&fE(;DT!vu2)AenzbM_eS~2ta;2RKP7AC8|9~B%_skcHS>+~)3WCO zxKaKGYo0L5|Bf~PzipIXENv_8pj!!d@zm_S+9mSgE_``U9 zy59hsM|y6o_3hauG?e6hx?Z=g>`ekPyXQjPTrF293})C#ZzLgwHJcW6jO-#vDfJa` ztrnhBhhzKBT)Z_b)C;Y|Ple{3@nAEnzo z{4(9rJyI!BxjAySkAiDWU9x&JO64e1=S$CJ7awy%RNoylT%Z<|1jMQ918ON)W_^DW z_x#8};P#94%F(`x=5rFggUvKyv}SX1s_#4W`_AxH$JElDFGhY!QrD+yFuTbpwQLr& zVPx?3+;3lp%}ft`Jz=6Bq1bx@KGJ2s?DO+?bQIiTzocOu`Z^f6@Y zI-#?M*@E$e5F94Ma=}#+azS4R4F3db%BhlG;1-hO+$n(0tQs!q3p2E$3h(ArE9$$2 zFU4eHM{PZ-@p8K&)Hgg4OAM$W==VqJ_!1;@)T`v6aZwI-sZwh|cnv!*=?ubaWp}Oq zfn6~k23c~l#ilCf`(w9k%aR185)fVw1vF+U4sq(1e(ncZb2biX&f&A>adr)0d7?C4W4-e2tK6YBN29eqN*{@I{1BRe|#-`UZP*5_R3l|e090a8s% zITEi7N+=y7BOFXgy2UF#EMM&n%sP~W4ZhIAD?Z#E*-F2%w)4(g2s<8xY;gle{Gznz4APX*hR{@qm>6$>coe9MP02ivHiYe@?R`74!RRjA% zyHGj2l6$^RJ!i=d7)OrO$5DQ%iM>jE;8j$lW!vdfsaruWxV{jneW`HKJIwCdrD{tC zo2?$a2B45P+Yne-OdD93&~@kS4Qv0mAM#d(EcpN|qk}*k1Ol-Xbsty;l^UkqcaP-E z5CCSYQ%I0~yGMn=GN>~e3roXf!01J=QK$}sP@nBC*FgF3 z;DfoXs>3f2kE+CK4J=hnMWw3^x>rEuxSHwIbf}ae9YN$ur1!xA2`Uy6_>?Zwh_h9= z%4R6{Ny0GB(7EbZ@vVJK^%y~owIC#)?hDoJiW1sHt(H5V9Xd~oDzY7fWClE3OBtmx z3fDK8Gnw)BN77<4C3C2?#C83kdYvf^s@FP!{n0!~o{sTO4aqrMGB_*7A^Gkg^KXQV z|0v`A0m*mOgZEI1PWJk$Dm{DHxVQOz>Tn}(JGt>YB$If>hci&Gj~5lbG~*W^8rUlv z!iXzd>k);&79Wrm!uh%$JX54Z$_RkJ;})^3Nu8Z)T?LXx%P8d$%#(^0|-M_VBw z309{S!9f$<6|Kc=#4Kj*^Xp*!-UZ9A-yYGSh!!8-d5jD1JVu-jT;c3_SEHVD*2hE& zbo>I!k8HrB7}S78$r(v@JsL3_G|)goYWv=lLUjt_OMG>2Hd|IeZxRd3XaKBDaQlZp z)g@-raYZP7wq{ZKK!aM*zNdqNaDc0S->bNNN3HM@90`$jHM73?d6aH6s^IMC0QvT| zYudw|cdFU}$Q3r*pe{dv-LIL4Dx@PMXe&VJSX8JOhQfe-l~y4@bT_V1e+3}AA)WsG zcyVvwc?Q(`C;%hr-_#6zsY3-|hJByku^-4Swnw>XK`PzUZZiNu_`8w!IX521K_dKt z`C8f$+yes9)$pW#N|F@f*ON~vQdBJ zF?{G4;_ix~frxw42SnUmAmS=HlE{3GAsw3~_drIMtZNP^vc z>K6CTfCNt?9nTPP*TUfXiL$4(xh|N-n9~M1=1p7Iy-#jwJiVZ}zG+9`jDx*$|0&{5 zq%Ydc6IR`rQ=l(gU2$ca6qw4-T^lVkZ)+RpLRQ^j+*nU|HA+}c(#yHi1%5<# zQ$vb*5wE#!_v^O$BCsc1V2!|jbvt$Lcyk>;I#+eR1&dgH)TU@_d&A{34+@;C8S`DB zh=)ah6H!4dGkDzv?`JzskrJUHrG9T7C)_M9=%^sg208)vLrIy3py1Ha)h&Ze9n=6}}qF9l$$bg5IyV;F1XGd}O1?Ex-9i$4OAe zTWHS8vSAY>iV&mjQYD-srep;S_tnCMbpZ9f z@BmyjH`{8&g_cdC_SM0F!r3KYbKMr%B$$8+$x+_BC8tV3ohwzNAWb){lUv}s@Tr2X z0|1XPy99X&cXL=#qp;nX)JodX9?>GUctA!>{DUXZiGe+IK5>k7fC<6$qc6>pg1T(o zoSowL`jwfGpouJVYiuNC-|}=cK|I|tOd#b*<>-a5M1UP^g4#WdeVDY1NK3F_+^XD~ zAvRmKisYB4i`f2Q|7$Okk=1+Y+ZO@Ya|yOf&%C|TMv&anm_j4P}uhAEgVZ^1If+QU$?#c>hSJJcDd(CRDk9bzO-!3D8$? za_-AVOEj()@BsE*l@SIM*p;)?mvm~Tzs(rEml`B${CW_x@(&BJ1Q!?kp{UN)$P^1T zU7fZAa4rSGyTgwTxrNu|CaZQkJHT+#M&S}-`wF+f|LBUMyirmp6i87`had%zGM~i+ zX&WGPEtSvfMWyFN9Q0$cdJzpR#T4~zC;F8FvL`)me3`%ldho*cEw72 zJySTi+ia1D_}oxX!C2^838kz0!!&HLg!AUequFzSP>Z=nFNZgIq+hx7OO#ihwK<>JYU z>KKa6Ss`#wGvwzxXWTAAQZ(q=w{(TDJrF4f%>)naq(SeiK*a?&o2;v{z2^a5Z+;Mz z-b}rh*`Pb0YE86>ZLrHCe#p!7%(s&T*5t0doVRBG>ov!d*QA|34Z!Ih0Gt+L4<-Pe z$5j&7uBMxTU?Pw!3_0BT=UD-;JN0eD+Q~iP+wMV4K({v-qr-sxZm<^omhuhq1pA=kzn zyK+{lR_Qf1q-pQR5^e%|F7bZstle4)9?&O@ESM7aA$xEM97ij`u{NYo>5Ic`nGO>kc5y%l_r9MBF&(P6ietx zN9iC&dQ&MDI-!P6sL}~Yuc3Dcy-HC)1XQYkC`FN`kQ4vwtbNwKdyjk1_k1B^0Q3F5 z&zuk2bu@c01R!FDZ3&7nW*!FCrR|8hB-JI)g#Iqmn^rW zL9->3!-i3l(VDEYFx>SqOSWKC7l;`;uh0TuB;dY9C5?P`c+5UZ@T<-kHd~Xs;yIQw zD(U&Yb=r8Z6T<89jZujh0V7WJMTLgEHe=Z^vUJ&AU%ak?(k=FMZ@r#I$iwcXo0w01xg4|aeWy#Poa z@~^&{QfRrk-N?XB?vGLFI~#8R-pehYW9nWsG%>ndXXII-r|2|!`j5D28MVIQ(JJh- z8`X;O&RBWBFP`1qP8d;j-Ip4Nm8fz>SMpB83*PqI+gqR0ouPxIx^N( zKNq}h&>o`S(4#3`-x_#z>p3Vvnq9r3dDhor$;kNT7unV3`7f{6@`uc51-QUd6Q(>c z%xm#DQIV~b4=>y0cR0P>JQ|7yUf|$AnvH$S92cgf&|C4;mt=YNyD|QzW#{$}m1T}p zT*&pIM|SV!{KuYa126DA`u)`@j%8-7eZR_|L0w5*fkjfV=+Fdul!=` z{0#P?pNQ}tJNOqqlf8xjLtFpDe*Y{!96&md0SLVafu@rf63}*Y`PL^3(4Sa%HwL+% z4=n*OHt$0jW?meU5!(dhX&roa!FabnK*ioF+JHLp6_|wy)HV*hloFUg_7Y36Js~m- z6A;swph_atYyoO;5fm|wbhyFzfe1tMAxcn;D>!(?I8xao*iGos-Ns<*FpEwK-mn|# zGlTb0gW}YnnPi4U7hDWI_y!+C zHU>F~L&WGJSI6P)V8$I6*b4$=a~#%+gU4VPW=U`?hreEb#HYgt6_Cg(waArq(fS$u zrLe#hQsB88jO7at7Xh$#5@QRQaZft-9Rcaz2i?ZRw(`Ly8yVYCuo+y~ye<-P7!BpL zSPa9j9ul(MVti6!(n&F*kmoXI7_0b@8!qr=G~$a3oL2_1OF;g~M}8x~-j5@G@F6$R z2;L1u**J0!5M0tokfu01tRV(ht`ks43A2`gfCYwZ9K$z5i)B^Q8ZtDN3@yjnRgn3CRv^Vs%Vm^Dq~@w0yf|SX^umlxm*b1138j` z-59ueJyd!IDcF!?E`zsVNVdG29Q@(3!rep_Pm56wxM>&z5rfzvK>c=LBVK z@NY_eea7t}XYy^6lw40ie0cJgI>UWJ+CKK-5dm37MDFt;+oetSue)VvXaQoqzCDW8KH<)$&;Y=YPieD{k z+98{k>ydg&_HR$3ayk9M;(!i$^)IlAQC$ zSe~yr7n@lN2)V*(x$IvVGF%wovbk5AA5;>9kqx<*y>exTSUw4&xQd}#GhW~uxv(6E zYyz~a?txr$p7g|P0E$scCq*t@<;;kZdM@UY=Hm7*1te2cjWDXRS**^hv}cH^Nwy?JvaGkc?2Kz!8MIVe zxU}Zjcs{pm#H*Znv5Ywmcaf=hVYT4HYDs4r%E7dP{I#_0D{57}ykpjF5yUbbQT}5V zHOs{`Z^~Rg`(R5pZ~Lp$@@ysRVmVl%$aA&=qFN3xW8Rgmghir$4Wa%BqMF!QLS!pC zOY&|B7jQ&Yy^SE9Y02kKui~1k;He_Py{qYVNsLTY0CW{vuZq58M-lkXSO} zkjO;S|8R2SAuUbqidVgeQJq92$tk@yBC=6Kq=CP*azdS1&bwhItpSpQ{HP1mCP(2I zvx7FR0NBQ*q5AliTD#%Odz-b@$IZIjO)er$MH+Rrr8OpzO)oc#7~*hEpwLnR!{`Dm zoeY&$GYwmZ7Guq~XY9&J&=TF|6W!)=6k`*6qqk>Uo>McONR8xv^BM(O=OR-5IijX9 zvdFZw1wPyYS!}U}FvbADQ@Ze{B!;GX!(u>a1;(_R401+8t%=|&zP5Kx;2=Qlj9hcb zCKR9EtRq()J6s_#T)Je|PVlZ<)@VphuiGeX|2fnS&armNNBS)=wvWRG$&Bp_;4;3d zKF|0AGGnJba-18^xegs6!H=9nD#Kt^@zPB-7l$7Hy?0>R`U4t-lF`jYm@8oZHBilK#l>7RYasa z8oo1bw~B#tgh9&)$ZzAYH)Qxv404IDdx?l#As~c`5!;y5ZwqN<1jH;EHo1f7W9td} z)*mcdme17|(b^t0->xW%8eD+29|pFkqyZM_dx-GQXqfFd^c#w9W&u9z0{cmZUyVW} zt06Kf67{olOT(@ME0)W}@A#8T&yRnEbDA)~M(1tG33^d`ZGI30Xzr!MR zzQQKQ(|!^WPAK4ctwF)Iex964My5Iqy|K&DW4T_aU=dX1IIIiT|9caB9*!Vm;8W!3 zSpuRA3;9Hb36DU^026s3uus^DX)Mz53v3J*-#QNaOhk|gh<$^p3h3C_)#9`BQw_~; zflSl15{OPLSb80rOMJIC{%)5KxsO4vqL8;|;~;e_dkIh5n(fY z$RiZ;{H-zN;hE8;8G>(l{4JEVQ#cBa3?;$I7{n14*^h$nkjKYyNXU2aF9M>Qj5tQY zrpR4hnaB?m0{kKa`49naC9kj9nWs0)WL}np>kQw!aVW zihb^x4JiWDi{9!vdI7C}jw~Iw6GH$>0MuX0Hl|O|SY2e+IP|t?+aoQXQ=3*=erOB< zTFnPdCs)6CR%j_^9xJxweGJWaghq>^jxM6wg-|!=?VS3$g9?$3`+&5I27*#Y}6d?|#k0r=M3w;luzzdCubZeH-90tfXwZBMzpo_5=f=0>)x45MYs zy6^$iiv*5EY{bWu?7>;>+cE98HVaKR@3?M46E~Z;id(l>+OsfZ-fu~=-)`xBqqu(? zs3;m5eVykRG$#J-sFiiZ;+FY??}L8d)#JWT)_k8weE*cix^Vl}((NrTuJ3ZLTm8%5 zzP9Imt6(c4aO-#&bjd;BTyowzyWb^(n)%O5|P4U3&4i!HUdoyeLU z7;*>U&x(q@&U|P0tk;f|>#kA4E|*RY+tW?D&nx`?#0#G{1^s_qO8e2%{zG&-N1W2} z4gGXVfOv);89jv z)roMxqwm%8>7?f?+uENqbno;S-ucBp(rtC;Ltg1G*tf-(E59CoPM6WiwD%HEyN1CX02?}z)K#cI#Wjgagf-*Zd;W0{Y($AI#0FJ9>ZP85c3 z2L_HF+}%2e-Oh-+(-VvWyX}DTuYg}-e<;os;&9+{667fkYTXDu`T~81hV+j7ivN0) zy`3(;UA-#=>$(EFBF6ab4eFQ=F-|~k0APg+PiW(i{kV@zqlcN>hi%A%0RKZ6Eyaz-rXc|o8zBJCHmQxp>(!)r-}`W%s1{AIL}I1 zqrdh>D2}8x*z{CyIHg?4tkww{33LK=$F^DZw4aZ3MdAhu0_ZQ5d%EvD>IrANVmm*x zYc&uTcRN~^ZAN^g6_?t*Nnp!;6ge1U!72GH^5GWo%OY*0i?K0a~7a{ zl>$OicY7{BtU*S*grnmFTL%<)j%!Uc-F|PU^4@ z4^aZ&hy-&;D?OrT!Cuver)VA93ETvpZwK_91z398P@jD~R>{_i3j2Ak?;j7D2eBA> zJPM6;d|60Hyl%*8 zT%@Z95!B;Kj6x*yZ<$9As#wvI-k7aXEy&SFDBigeB)w;T{YbqpPki_ zyC#P-OYo#$3 zKj)WU-1buL0Lgjobf57rTupc_dpK7$X6`;QXLrtbSozYY-@BU)l+&ak)vZ4VA>i9D zKOgDf8oBwtM6hIRFX{v^-po3Uv1<5qBJRu7!wo3Kx6yb#ap&ead%|%@kw>MC2K0qz z?0@N#XK;J!F}ukPUbd^7lSjHwZ+_BZ=1}1IvSWQg6hXOn*v;0A3OZrL(g+rHB4%~* z8rGJB9%?+NY!X3!B3QNy#>zuy$Ah$1EYH0A)w4JN$FcKV_zr<|u$t;bI7t%Olh&1` zukJpHqFsKPR?u|@@2i|!p zU)R&s#V;kq%P$DrI=ajG;NI1jHD=#$8+P44o$$Q!VZ~CGLEX47{!VU`rU=7!~T(9kq&hhyG%1C#MsrZC~;;bStm$`r?Na`}oJ{zgE`7w+B;vVjgFo z2ndN%no@8PkBRg)MFPl@l;F_EIq-ZTo;MfKQC~ONsCS&kctME-wJ1aGy6K!mn|oF! z4CbQui|-n_71ay6XRzfvh+YvUb)Xawu3sqx=FdCzD;@8*={ve zG>7D*&6|p6##4?D&kRfvdIE*N<4okzn4<2N<(2_2-&OlD5$(LvO%dQYYpnLkQ8JKx zo_Cj|dh?G9F{e*I?bRPShCfYwh~1o%SXCb$s%AM+k$VOMx>}-# ze2xwifO0}^wll$>au~7t>59m|l}8v2oUb1x_sQ)sMQVFo;2PcOyTs8_$G#Pv_;%Pt ziKW}Z7)aE$(Rlh zFrIiLCE&6lNs;p?j2CQJ!w@Iq6U~k0nLJJ^{jke5KcesOIz+ zY#eiZ_#n@TC?BE~$4*g_3~mwZ0qo{TH}18%kdAy}{8}AANqKy`V3D9t$mM7sr|!V= zn*f5XIAv~wZpHVSwLY`5-8LS68B(qG6Y7?A#kS_qQWRZ+rsEnR_DRp?#5yZ2OH~rU z=y3_8MM@Bx@@QWiqZZf2`xnj)HI5Q1nWBUrevn_lJ(Eh#fnQ4r;3O0KZzR&dpVcx9 z%Q0A=t5UHj$Uj1hJ#jA`G*q2#3lvT@HZR|kh#t78c3~aYkKXxJsaU8|O>$AW{!JdX zNQ-+LSFfrz#00zaJDF>?2y~r?KjK-~YmU|wm6{Jl{ZLcgXo-w0Cf73-mGHMyo1k-L z+-sF4>8WBY;^GpM6HY!=3fghKKP3@)5m*jyPRol7lxuvqz?L&~?B&G1X*AM%z>23wP4!Ou??P^;TJe5{fE*8jh?hQAXWFqL=RB&SJ&UY1%7lPdND{Fx`RKSk!a+B` z%Ez2F+X`F1xYYPdN`4{#mXlpa7Pn58TVwW<)z6QQhP9TepF!wALqef)dwP(E?}g8O zmF|=Hq8F>>ov+WCQ)^MdAC+4C_1z5arpO3?6o=3<=Tv~IY4bfqNaPk^bd(Sq5EmN&32)WA;2M<1aV(8V<72s3_gbjqXDQ~A z`khz0!utvIxmS~|9WoUe7A!rMs(Agh%7CFLuBhsS7)7W-9L`_@99`V<_ ztx-&I4g41&V58CBWbjT15kmt;x zCrjU$vda0!-*#E{0=+&0%Bmn~{>siVBETh$QdpH6x7-etY}lc@GiMTWO;hofz^m&( zp+6oY5a3Pg}^%ySn`#IrExD){95x~!ycc1z_? zkGrchrh1I^@*2cdra6>SpvRG4=Kk$f+D1&8aggQ!GOEubL)B+5)@!fNdqma0HP)9k>Zt&y;cwNT zn^8DeQ~)eB@TMBxIwIIPBE&f*)JHAyW&|b7IwIUUC8AX=wzc31>ww=MwfNRJg8o39 z=-nh(RFru{w0TO5`Q6mu@MQgnSNbU_8Fw?y!_zb)(lt{u=I`d{cO@haB=V@|eGAW0 zipZ8sA!-g~nh(9UAA0VoUNm`kMvkGitL!zoRFRV*SGM@2yYl_&o*hf&8rDh~b+Tw+ zmZoM;X_Ur~PI3>Y#>fw$n)A@gy+&*KE`ghZcl9+4tT9?Z#aoW#dRC?D!zxYABk}9h zNAvJj;BW^}X;QHl*4&9s%!a=m>3ya-{)}N@vNR`UB-Sz$te;JCULVS|Yo)51~_%2gwMkJYYCtv4KM*qAS6=)dezcrJnwJH#9cRpC!BPg?r?ml)T z6PIa%4Z1}Lxefs;+#LPZq{(vph8uWRNpo~H@r~UNVG?a<)zzB3aq4n=BAJC@8g?Gi zdcJ;mwNcf#3)$c`LHfLe|Rug^uV;y7=V97#M`*g z`mW>kXTl6gfsba&tpI_B1HlwtV~{f`^pP|jU;yMqpjVa#;ZwjiIIs~BXvqP(HI9!S zc;&zsDsK`eEBdIr=;DT5Hi*Ue`pozNW?$#z#Bk9T>y;UxX>@TW3pv^ zP9r_fN@iySRyz9K8YoVJ~GDpxO_0KO5W8NZl<|m7ucZe$W9dzZ;F}@TdH!l20^w;2zF7h9`W$391GGYgsy2d0ip0G5KmjO_ zh4fWjIkdHNUa>%bL%!J$#pxEdq1Ina2Vdvn2k_1hz~I!zS`LsC4o|&`xUWY%DhgE{ z2U8qfKsMpvha9wuGa;5l1#f`9Z)1uV%E+D%uZjNnKuJX+jjKWa+Q!6(SERW~!9o8Y zMSlE9?**Zszks?Zju=OJ^&(RJkSLvb#`aQIeD(0kWthR?r&8F%Yu+J>x?me!yzR2? z5bf+hhRN^FhbJLJzGc<9*VvClpj*mk=q<2$&I_;Nz^38YB%(I3A{$zd%~^R^b+fc) zNaGbBmhGYzO636)==1G)4VEn?)+ga?7Z>P%d^&S`z&|jP^NC1q%7XjE;@Q)F-ull& zUB!IKmyqI1K8fn8L%s2I{g-3R)bf`^{1}GPLbP@14LlNV=viKRF~CWW(>Vlc6$Mj{ z&8?)KSl#fml8#xX$t^P`0=0L5I(+oEJ}pc5sp+HX?;is1t69m2TPxnSR?@bf&a;x+ z0_v<=#s68xs4S~{&?~oFYmQoL*;+*{b*YFm-0ZVbyFGA!+)8I1s7(Z>e6%)vVq-LI zjmQV8fU*_iR#1c}<*lU~)gST#Deq23*@$E=#vubTDQ_~)4d7HkaIZSDMQ?b&%P zRUTSZ*jQ`Z#$#93bBi^t7rNpZK+W}FSHA(b z+iTBk?R-Yp6kgbw;OsoJ)`H5`v@v!X({@3(*N<21{6XtDae8;&b#E2>@GScVir%`1 ztv&TaS{S>CE&JFC9xy!o?hH`X&^9VdHTuhXtc61aV#DvEgARHl;Yoj@p;dDGM$n6m zIPr~C6$ku&aCE&x2Cw6bX@`{LjVvkEfQ$CIPaL1tuls8|rky&3iQ5;pJKBXh7AN=T z$Jm#hetjDH!LNP2+_t}>-jSre`GS2jMBK^lCVk`W5VtRQqKZ>pyOZ*Z@f*8#dNEFU zFPv0>^f#r}GC=Z(ag0WSH0F~(KdNDL~VjuSd9)pMr`oI%5 zq4T~Pz#AL@sl$VFfZXWyrATz2^t26=3r#8w2dyq1Tj&ZvB<>Y}} z77qCSqp+(gMp&a7ocaf@rr@x1NZOSzAXqk(4s{XwL?FW}dM=&Ya z_@%_NhHRE=lD(H+7d6)|T4@9L$C(E_DfBiawbPEJmd^*k`%T95p zpJ*yd`6ZX8-uV5zPr_nP#H0ZkR)56e;v)V5k;P@Oy%nKNs{q;x+8p@|z(|!-YT@@r z5la!RiL>(RH>H$pCIUCN6?izlVCWjcgE<>07t40Kz?t6UAm9ybB!G@%fvk#<-l3NR z@S##L{2nk|r)XXNtObXFvWqS33eWCvASVh9xCxp2@kUyQ@$C?ZXQ%Tr2P?^~knYxu zyK2x`12;3x*gicY?$r$R$d#7@zov}ebGaIU6VZ{Jw0qCfF?5wM4kN3=$q7BP8ZDRU z&-Xq`so}aFAAGzzdbX3wO;i2_PP5TM!oEvk9bVT;Ej_D@Zm4yugk2ksHF_fB>vitG zIBLzCEEc(C6dcZ8f0KsC1mcc7gnAgM}90w1XRG{HNX`kmK`Uh zMOTLzfdemZ{|3N_0B{lW0UIAxTS>)^uy_7qM@aKt5o2Azk#(peaD)iDF(6L|#n7UH z7ev(1jDLsy%Y<@hB3_+^xlyYhQHwwA70~o6+MpVbkP{3MiXzhj%XC8k6ybG%MyHMT z)xTxuu$oMmEiF9<2C(jO=bRUo-H1mKVCa!Mfuh&a{9FBy76X}+!$CrTUUnKB3oQot z6sQCcHf($s_qUB_m5rrgG$bjomKiJa2a{+j;^?}o)&e0&XRKvcI1PxE)j^dFA^qgrEEV&h1@_>Ca--wb)o zcIZH+5)@e0x)YW(lYjNq;7H}()g-DM?myTa;WR4C1{!z;Ag-+Xgb%r--Ou>4S0MY| zfyX7c#%+u`lQBFv>NQ()ZL9U1!V)KCEO<8|;{aBK8H?9(;abUV)1SEmrphc!+;b4o z|94~5;U0>7)%L}jcIu^%^<7LK*4(P!>FH#M| z*JCc!@4^k0sKZ68BjUg=Xol^tQtWjNIa3;(S1=Vseja|oXwd-BbDrISY9cUL8u+WN zxeyS75f6XgemuorHePz4qW)jor2l=4`aews|3`$z%_it*G^{&Sy^H>kiMim@RTrruG)qZww^!*(t5*-2c%F$rE0n`*+&gIAtPy|F zz`QSLo!606nJLjf3s|);7gi|P_x4>j!{zRjgdu!_hC05qAE;PbBQ_qut!L{ zD#B=FiM{2p7ada-^$*K-*e5+&6?3=i{n_7#{pYqM2zbqv^V~-RYTDKDuSQnh%wNsa zim6U4)U+9^IG-d@UY*QV@JURhao9oyO+D-_NF=0^ZEx4$-j&$`YMLl-PJORs9Eq&S zY&ML(=)02j)A{qQpQ-JBr!_uwV)lp3&Es3QBy-QaSyz!eo*=~3=3Ua-P&Ye%n-Y^n zxEB3c%l-Hr5m8s9s`d3=`tc-{PYhuz|2kFOJXPp>y-Y)7(U|hNEL3G?)-==o9aap^lOtNmg~M z;<3UbR;QDx?|6!(Iy`mVD}HAGXkC*%kr{Uo-pd)TU01QY{5GNDZT_{h`P%-?cVCM? zkH6RU)p)FVx?%KJh4;xO7TGe>e_Fm9|FP2cj-182iWe=_ZQtF_UO}Vv?lczu`u;+- zbpB4oQr{41k3I~|gwrzjp zpG@fI115%l4-g3co$Z2A{oQ;2L>`U*d5bsqzvKIN13*9(>A~v!;aC41-~a3HR!Vcv*GrSJPKI_{B4jn%8eDI)jmH5wj=U-tM}q2=_l(zMQ9Z0}_5 zMxaxexrXyu9?ytx6{+s;^O*C2_(4pv(#GR}fyW;Q5=5?~zYY%Mqx}r4#T=FIGP~d! z#rW-HKZPm_s8Fij&N+qgw?2pD@$DS{I1uo*(!GMZ`;=D@RD&Pu=81#7EI1`O}?L!FN^ZYJWJX_;ZJnUEUXPWTqYb)W05)P|L##ezK zfo3cHI9l2_{Nr>q1yj>NKIlxJnLO`g4?Rj#ARlv6X_13Y?cRcQvJc{!lBGT>ht8K{ zWMSoz@5K`Ph`tYvM)Fb!*E8mHNqV7ykKF`{5cN|>2A+c0Mxg`_-RX3;qa>FV$Tt)D z&qbs@$}#UNK@6G(=t3oJxoAHeWXwfL{YnY@iI;5z&KusY0 zKE_Cawf?#xZTJ+m?P}=`0ChHfo;^=SJ`r+KV0cc&1GxqBj;u5Iasa(-f*#~6@={nd zJ$yM=njQu#x)JiYTWjBhy6>WCKqt`0d5QUa(Gm^UZ5LgYRu>>sCyi1vpKW@>cV++$xTX%x&Vfg41RJG)R;!qZw)FoPNTQX z$ZW%#=t5(|g=3o=8@zjwlMXgx9*DdgRK7oZgH7uh4H$;T+`$8NF*JhuckAZB-zblt zt8$nVe=VFrkIxu!S4XGLSc+^NE?;H4B{?MzCaT?`c?ReLFk=8g6Hi*;%*%P%kS5Fg zYktRH%e)1SniS7qhdEDhgnl6a=AIg$ekKsJt`wWqY+asx{pN1(rAi;A93372~G-=?MM zpgVW(u#ErQZ;%?9)}rq^mN{4iAOWEM8(^(IR02L+gtDW^G@!qc2T}!+#L>_aa2Jnr z7y<|w_VZyO5ZehP6DyxDPgD-fZiYW2i5!ID!--kz1{#gz0{J}XArvePtzn}AfF1yY z|J`@_(iaL3BR7Fi0NIfxyy6~Nv{o9_lHU{lx9wWF)LHIeG#>=5Z3>Y}ffm^df&lQzDKnHznl1(hsVWK^DuXLSkkwqVBu6pO0kz zL+~~F^XRIGD^=y419c@*Ro;9IaYC*sGb0x{5>laRFseoG@Lv|aU;)~P)UmAh4kIsY z(WyI{U(`@8S}$gQW^G2=-Bh)t;JlW8X748|OK9-v2BcMI1GLs}!KuYp-pOoe^!iy& zM^q^LGa_4?y}XI1-fss~4m12R?`2a|r0gCa*GC~y+1c1w1^qnq|84h5c#W5~(_X2b zpI{|RjXX&aH)@$8%c%YhjW~LPPOAI0y{7~fPA@~!yHi8$UP(Xdm1`o!g}!4>yC;h8fFa?iwQrmwj#_;)45N6zv{&v3n_YT&MgH# zudTUW;pXqHIVFDZ-`ubNFMR)1P^EOG*Zb5@znWjBeD|&N(c=7kG}{pOtF6+nKjrhu zaYOjYNhQvPV}XWSI*9%@De%Lq1$sGSPq-f`*yzk6gPE}_TRSP#KY0=EEp2)BloZy@ zw!}0y)pSw2s!_M>{~38^8hYBQVq{q7sgdVS+)35HB2QC`;O&1R&qcYTLEV2M&#LfW ze1Eh$xnX2g-1}%4i>OKI*Zgud{beEo?Ccb9JE)$A2D* z1$j>DiL0JXi28cZ?ZUZ7*3V0K2R4{_q|S#4$;%oJTEfP>GE;R0uc-r^B6=+I@7>BQ z^Z(xCnrFpVT2!iJ?G$4?aPhaU`&}9?^{dU(mP_sMy z%k2hO_r!N*``4UPLQ<`(-_<4!r$~Y>!MF8yXI<_D&&NjI=wMKL>ouph$oN^J=YrpI z`2E&C_Kw4-YZbfGV#$0EyYu~W?ai@BffWr3kIbOa=#S)&eYD)xR|ZQEG$m7N?G`Bfa-@YN7`WxD3{W4Zg; z!H2O)`SQ%hCYE_Mw|;ufym3=@ewp{}Ni1a6p=kt$N_Rk14FGsz62VxrB_kpMx@`UKs^(iDs z1uPi^&{je1Lmap`0?$ha3K$1o^avD62^4M&6rBmwdg(1LZH(p!^0*!(X>TOu5%e@E zNY>u)=1h?FuOQ5!fr50fi9xW6hk;s3uvT5LW~09LVennHkb55b`oWoqv70phWxi=ETH&cZ-qrx`b7)w? z1{2)F2d|o^W5U9u@efkMqGrNkEYpeM3_(Z2&019!U33YxEI>+D)XP4T3PC%m+w0-FVam^$fMD z{~>k`CJ5axG57M* z(*tMRfc*(~Bj6c-FKyyijAD)wzs=JT@0VIUxbC_Ld0-OcJl7TQZLZP%j&o#_pd$x| zr8|t~YEKxd=efv3aXBey;MgO3UC0Cw%+VJ9f-Q?xeT*(7`%m1of;EXNX?W>Snv zP5oyH>^b0WHjcwJ7Js;O_)6mCPH;EmLMuNQCK!d|;-tIImlLaQ+KHoOIv(H$aik1T zT`ejuOX0u|&zYRv;u?+Uv|X;x>ebAI@h8a~siDrxU@+^sK{6ACAkxu-eKs5x@G&mx zwqy~jvdycFLaM6}7teyx#Zi9_10qI>jG^Z-CsIN|uMo`Em~#5uWji`|X6t^8+K5dY zi~iox6j(`GI2u!B0xiOX1|Gj90_pj`*BSld?5w6`n^JB#7HS}mI5?2Zs_3q>D zLb|z8iNfPhxDZsa_VGAC(a&*`iB3NGc$jhSB&9V{WuA5dajLcdcyO7kA}_nV0GD z1J^s{<(;Vq&tN)^6j-+r%v)%@Qm1jPSP?SwyA#9k8WR#FEVshfD4{dG+iz1Ct>?=x z)+uUGUgC4+!-a>P4uxE$zGCLICY13$Zq6kbUE97eAsfVEOcJi8y)55J!)v*7g~zEj zr<6r^Y$FGDmC)I+R} zLdOp4ei)A?o<_WR<65GG6* zPI`o2Nrg;vZl#|AgBoC_)J`Rl?m8*UYM$3jqm{1US&(gBqJe!yu}QOrBTR)b3|Ku7 zO&ARbB^dbW)d_||(C8JWZH?f2!L}HDhhSQ{6 zS+@xR^T1GAseg5|08;~hgss>MSqB~28Zk7qx}ka4A;pR_!b4R5VdFoL>Emfk@)YYW@}{4J=}TJ$~V53S|V6wPo}!>A3cyn$PV0 znd^Ya*<4WWy8Jmqy+FgTTtJ4jJdM}ng=iHge%_?8shz!1_JGwwEPPYRbSU{1m!z@@ zn^3sR(EX@yl2Q(ArRMU?`Y)wy#c2Wb{19S*Q5h|Jsd29;fHCq63|A7a;jAiGJyq^C zg>z?v0{vJ_P6$&1wzr&o__*WKUq}@`u|d`dYs|(^J}-hxQxClok+)$BY&8IS(c4wf z`xG)Qy9gh^vb=dFMkrVo8jduoG@Q*O)HDt^Ip4iHH}w*fRDP*VEplmy&=AAkG_yM3 zaG_6}MjyaZN&;fd#vATVCR`{PwTlNR_`>Yroz?lI=+QEs!V1b5F`~akj zi@yrc0?HEZf};VVaVlg(U=1ojM2Rm90K-*3ee}duka?MFvsP5! z_3x!^HI*zVtj&+a2@=Che7c5D#(|7L0zY2JbCAiwE$N@wnM%2MuQWA$AP4|(!mwB4 zLKv|-5%dB?Py2k5;c~*48{Eg^VcL@FSHt8{5&#;46b5gyL(2^01Mot~*)()EMLY}t zT-x+5tcMnvOi(XvB`gm_RPUJf(~^W@!B|EbjCPaIW^F~`kBx*ZuPHL3p7dY@Y6uHv zD;1IwQCbXBKy{&F2b9ip@kdxTti10Yt*>u58)vlRnQtG|DcYyC<@WM7+q!l`^ZSpt z&0K$f+=)2|8P?i%Nmy~+N^WRBc=PnBH}_PO3TFpcdnZswhE%2N5IPX?I7sf#;#1xR z%t-X2bsE;Dp!gHFmYJnf6xNd*m*SP7D$|5 zhCh-S_CNmNGxlcwjh$XRvJH`0tUshrHgsc~Ckv^qQL~f(c4^bzuTDSt zX0OvS`+ju4zUAb*OKi*hn)vgujo*CFkS&ToMi1J5pKRlht^dBXh3T{|%{_VPx$L{E zquRW337Lw!fBGY3%*PA$2%=#BNiYi1wyvsk{5Jh`uSloutI^o;bj#^4Qf%8dJDuON zbEo@_V{Kb6$9{kMeR@Dfw(sC|{w#4*4)gKy7l658empC6B@5fH}TPPS&a0CtZ64v&CzQUFh50Ow%<-~SXl#Sa6i zne(c2kfd=CHFHX*1j#lA-3$vrOa!E3aDCIvbGq=+1Kh2!z$^e=7J-5KDmV`na!)!$ zUk%Ex7h)_FVw4hM+!$i6_BVN&8Z%i!{w7Z=H708EWT^_(;|R5Z;4Ovl57qGI_IQ&p z`~#0rry{(;I^MP@^a&*FzFL^G5YrR;5TCHn(8JJ33I{$`8h=NEafS3Sd?qYHjVXr| zp3xZoiX;3vB;ut|gr{1Bw@{d`eT08eM8HgF&_F~8BofcTlpPikB@`KBA4w>Rj30>1 zS&w`TiOLs>DqN>#(Wug}sPeF|%A%;M^{5(YX37huQWAVtmx?<__IX6I>OnslLo>s| zm%<`b8>3t7W7@)EI*MXC2V%O{V|oXo`XRA{YO%v=k#Fo{$BJSn4pFm0vGW75O+tiK z2w}~hun|VsEFyd#AZ)J_cEe%~AW&8YXgZD|0l+B6&$yxs-&e7s2*ueSMhlogmm$$~ z3~|4T;twE9{2TE{1M$Cw5>D1pS2kiLD3{~G#R&|935**FaE3(WC#Vi4USmkQ{sDEvAwk9=QQtU@Jv@%G$&^u##+v%RnL zhh$!fM8P;`L=_`#CsdWg-EkxONz*Hz%Ml_INyrIAIe_jLpS!0+yl-ks#1TvGI21Ps zWiWagDU+ILlFFHb3=%{&)VU{rNXj~TKLkFu#R)lN3DX-tVAQ&ZUnH*hl%1~p_5PK9&jFq>*3)t|C><#42l zmnY=#%;rSY=J0amp69~w$>v`4%C)(lE7Y7T8X+b;n~Uapeg8-9Rnyl}!n~4RuVtHG zm&Uz*f0gmwz-wM;9+V@GhsLaW;ObVp;puxBTpAuCf+Atk(!X611Nxu`i93hONNhw@=9i&Z^(D@HC=(Z^z#X6~kpZnsud~D8k1Y-mX2^CmTS|R0czofpX=&GV{^PGG z`=3Bh5*S9qK$io>Vo*A0(5Hf8Jb-TFE9U}N)_MVSL#k{!jjKGuarX#CFM>+qd-54X zmxL{+r6B?J%ILURC@NKKEj$@%B>GFPI-g~e1VYhw5tSqWau9a4=bs)X9PmZZq1J%~jdO5D8rSx^6Zrik3n=B1v_IC@5YuhKM zwpof9(`UK%8IkrCxpsEf_I0QBuikCplZ_ot7j_F;_ZZul^g4z#P;cbg{>*ip{_dbI z&d}Z@1I@`GA2K9^3~eRD=E;aZWE4*)^UY3H^G^0}%(zV^PM^;IMcbD@LjCt$e`YZT zLxZtPLv}-Uveel3EXkIAS4fd0)!5fGNl3~PvS$mGYQ~aXhzQxUL_$I+&u8@AuKT*4 z>-ygJ{XBobe14nvdA-g#uXDJ)uX5p-4vmueR2n8f)$xZk2-{j0(bb80Gm4Kst)Ocx zyw@O`;cx`?Tn5)zu-G7#(5P(NSZ_^*S83ApuFV^$i+@_HRo}Fre3z@8nwhb|(3Y$_ zdM`q``A1;W?WZuwa){Lunhx*BL`3i}LcX7B&h&VF_!b~i50Rc|-jSzs*+ui1Ts5;b z^enl2v9p%T=`|gxS-3NI7m<63+u}0nUZEfI;U2b}At5&$*UA>yTCi|V%eK{QrzWJc zF14j5C4}*Q$@5GVw<}!jfIypCOWP5(_PFA9Ir;Wm^=+mZ?MM64nJ+c-pw5+fJLRJS z3KGb-q|$3f(bc2p@3*zfvgW?^?0jC`QNN3B=kADN>||!l=-Ul>lkt?9u7>4x=kdYn z!BHRLdE|vG0VpGN5ITb;lp23FeLTdewWN#bb(hRsmrQTBz}Yt}8{KIoZRJboEtQ(c z$&dkV#xN>aT1V>MZgU-~Yk|+0&57ZAbL-7pJ+xguFES+3u(Syo^fB?aOg`)wyWZiz z-i4eeETP@s35=TnY!;w{$@fTo?TuvYeTebPsaozHkF~Cb3mB{&Y zb=%4po6uTwGAv4>bAYr5IP`SSfhL-_k~00_YHzg;daq|_ZwP!zKhgNQ2n-3sbWPjA50cR>fqPv4^} z3GzYi-Z#)zFh;sXTgD$n1{YtjUb;FYFmk~`+$pt`^=|3=oG#(a`>ffj!v#0^^KP&{ zxdF&RfQRc17$CN>r8HC0eLB^N(+WN}iXb4qq` z3Q0eW$4yHZOkatej_#TkDxUUTnD!E%36Ag(J%5kKX{Hc1tDOC9TF^2rm8cFWEVJhQ>FvwfFlkIv1SN98dg=9pONQJ#br z1mkv=-+JS0ug)CZp-Ci5e*sm&@;EGw*b$kO)m1u=b1?3kxBPu(qKo$7@!az(Cz@N6M(I+(BF_iUoVwU zDocy-y}+t;z9@wE-vEQf5*jFg!&(5b{A%UOPr)koz5a485lNadhmyCq>i*#xq zsO)JbEnvY!+Q&UqpXAQtfR^QF=wR%Zygcf$e3>8`yLd7Q=cU9EtD4(@dCXo63$~WR=qiRInUUp<0}W z_A-HZh_0&V{TE3jjCYx7^;Z4y3*IH3nU0&#TN@#UyAE_TLICV6p}TlPs^c-j@=R64 zk&hu8mS)H3D!&jI_F|SL32C>VA`h;>a&MZcy@P+HFCm&hdY66p9G4p9w~MfI;-`P; zGg!UP^rKN&Or%3sxs$Q%#)nW=a25&Ip`J;N7)F5;xmLYXS_vF-zB5C;(>g?6twet7 zHD@+z4QAHB{IPl-UK>csFKvf9%dXJ-BRFfBD<;#}P}f6Xx;mg?!uk z%#C%l)A`>%1#>Zfr~c)YKce0}b~NKdfta;caQw(&2Ashbr9O zkFzEE-fGA3;MSD@y#QL>p_KP-OO{SbKuqJeK^Dq52ee9FK=IY`&e}o z6|h21fJgYL(~8N`sI_CvyDa#?}7R50H9+c1S+|8fu)3 z)5=lwCTjC^#aHNH!)4!SxA@tbHZw$;S3WzG8nC7}9pl}pd+>C`TKoI-rV9oV4!8S` zh;md{8c55$tu&N<>%G+Rvcc8VNKrvq=7iFsdA!lfQOyfF$~!Y>PaKD_U_?|l`)(KT zQ=i&1m%y`KT<^U}JFsZ-6Z-^HtbJr4;B7R2SA3u5QI>%MLmjyRGvih0oi`^>ix-+( zx_pxvcy4j@f?MdMDolEw?i%&M~L%!y%=w99Vw(0O` ziz>)5jP8MvBjsvzvJLINDlw|0DYdCpC0nZ_gQ{Oo1VoOt)hZ}WX zMa9c|r_PjQ)&!p|yG*~mnDLzTinl45A>F(Bt;I;8e|9*hUEOrb&WDnU2RpuX<54^A zfyX)8tyA_A-+g(qxIM#slF4%PjJcKX#<`YkpL)M%43@U%&7=oI{JZs@?)vu_ErbMg zY0Sl4=s$VccBxkb-#Z<$+vrg3{lGkMW%K^C6Dmg|{ofkZzW6$&A@t+Y z>^%jEtw{xAp7rV2%%5u??+;$v8P1x^xU$mtsAs3ESz#|^{jKHos~aPi_O5PCr(VCd z4PK32+xPd>{S=3GZAarPI;q^U5j z+$^{VJLH!t0te^-+yMXuFv36Wn{n9wFykNHP>vr0UGUGfAJ`{pLT$sk0+Hi|jgTKAXUx za^~NT@-@XU`hNZNp}2NYtqw_#wFB5iCZ1qWt9G4rQm1K&B9bw)-NIEmxzPk{pL`Dqq-3oBh`FZ2wZh38}>Mv8hIg2E9Sp`3hmq$}(x zo>MLuo{22{Ipl=%LEQ}D=>%GyUS1Z>`Es5R8Bfpf7+Hjf>&fp2U8y*^V{*ux_$~RF z+a^rWq31fiX7ACSOdzGRC~JfMV+AR+Ed;J6N$q5whHYn)F@%qpam-WCW(4r8L(myU zj1hQKL&%}CRPRLQvn1qz7B&u7B1tsPb^>ug6zK|uo$X}Aa>5U4&*x_#?r`{HN)#e9 z`@Yo>GVkXX6=^Y&Dw+^fLwkKOq7XlH7!4;HPq+=g$UcCeHL3el&b|@&0lIcKPPC#^ zUaSW~D_l;1*Cbc8Q(qxK35OHmj`8BuMp+AHS+0CNLia+ZmY#jptKm9_l3WSJA1i2G zesNzEO9JSI%o;^imnzzkmC0rV0YPHymj;w^(?}zdhu5(YbN#)Oa0EI_O{|#I*AA^B z^{vuT!SC5L3!g--w%6w`RVMTxCR%V;Q7i4ZEYeh)XjVkMdRu|q{E{f06#zl>NdTc4 zM`WI_wHxX9o=`rTB0I6>jW<}^`9B16OPa{vi|v_d*?RRlC0 zvWQR~#||NV8-|`cll<(ukgH>8?~N9T?@QH#FWEjqwHygAVUi6`k*DAAL9uiz@!PA# zF3G!*sDtNrK>zWpfs1v_?+7r&kQtZ@9WoUs_#>neItil}>|5Kodyc42ulMEW&I+}b zs?$@4b09Sz0K|)x)d68*G*}W(Rfr&>fThd zIt-l!PzB*3%N_~`bBKpkF_h?eE#8G2o+Yh(V$QsDR-`Z%O&2{(F<7=_X2^;yJ~;Od zEL*z3z;{fRQnsX{-dsV6o+rBBdM!O>y59!!{cDRF*r6woM8(OLrK_cVP9jnhYy+`A zq$6E<>!vKNfI^$zwpAZC#e0TNO+??&e(m;FFq@ka7=-LheFsjHC!%NFt`%45RFr_a z!P9DB{|qc!a%H1^U)xCctumDiW@(<3GrWWGzuWUSf{@Q|6@VRjw-bhAsFcUSV(g?I zt_?7H{=n8=#ntVvnLUl##{tlR^UR2A#4l2f4fG#>4`ZV<@zfB~H+8?;crduQKwCjy z_{cw(Em^krr9AuR==t`4+o3nA(zX>BTAx#7+9i55-$tuMVxq`~zW8#TzSiTgQzf1s z7_1+8T0GAGR@!V`j2WRFe8!|xrk-1Dx2exnk1%~4Lcip(ORGtu-6&7sT{=J?KlFN5 zt3uGV#6_r>wKc`0GP$e73TL3+d1j-^W^xIsN;ll6tyN9SU+QJqf$0}Cc~Wvi+|)K6 zKeX4rQB&7d>U*hUWNdq*mPB9X7i};)#kpD6YE*V1wPSQv=|7rrHtXk&Kr_yN@gLX9 zRD)(5uVm1SL-8L=UizRrA!n9LqBcs;Yv_aP1*MXqSjQ9>m8gFBv6+vthWD z)`%{VVhJAHmYgGL^3pFW5)U?ZU*52+C;nK~il}!RW zg^gA~YBF5H%Uo$pn2{3V?`DFmr^+?V3GZ<5hDGV-T+f+H#HF9O$+O;2XFDAqlvBeP zTb=tw%ZtsSiK$3YYnQWY)<~@UZDa5HwC)FwlZVj*4cX$7_V>Ijg;u(TvVA0ZvK36L zp{&a;PqKZk;%$WxjXI3ZtGuq=RRn#ru1V;`YTW5viYoFC{^RZ>0^8tB;a=G^$tY%RvSwG|NXuZm0lWXi zyAXK=hrv$0w69|u+_J|#-gWD+2Yg^X_)7HAbnp4+>#t>1PiY+gmQDR_{e;$!cPH7* z2aaC+X6fOgwlQj+Zq8q zq{rmR3u+_x0zz4mLOB)nxa+Vy;3X6$j5h2t|L8bJ=~X%QQzBGO3_`UO{@y)-6PkrqLbR%wx-6KB%Gz+Tb7R@dHPE3%2{ zce4w4R)z(~I$ikE{#f_-BhvpcyO0nF&bt2+k-k6H1#fR>nLYs;8;iR)ZX-4 zL^|cH%zF^wdBFG7^C#kjC!$>3k_NS9AD#z+V_k>BJkwDW4k@t(5W*r*2tg_|gf#UM zG`l=7>XGJd@9bbRBdl+h|OgSt2mMrOFKi+*o(RX>GF@EpRIY~jowRvSub_rD%mtJ1k zYGdP9*A^dcd{uTEyG$N!*`^ZCa+T6DX(Av6>(CfZ41lNNFwdHZz$6X;2o`t6+t6LF z`N?SPu?UN3UU0071wGbNak!fOvohg_<|P2wh{oY6Kb@$uF@M-E$2CWdO5vyH%q?9( z>-S<%Mrn1pCvVnFvblvn}bgIX43^4Cb`A zv&x2&b2->3G*JGUXK|^zpVBBaGNiZCMOYNO=Qhx~*M)yuUzLgwiO~ zjBU}2eaLf#d#%kE0TvOKdE2hF2)BgHD#Chi&v!_6l=$DRoOu5A4cKq7-lNIpv)-#K zR0=ibFH?o? z_W8jZ8>4}9cJgDvn|t)~U}n{Jwuywp2?Q z>spTN?XC}=+xxL~UF*`%-NoALV2YnHH9(98IEl($TcL1iKN3O-jUxnQ!S6GZX>7_B zS?aS8mv58lgH7ZQ?q(rRGdD1%OUeqUWYZqK-N5q9Pa5n)Mtx^$817cw=xsiuvl5VkG92x?NtM5u(YfzA)9D zVWKgY*>9~JDBpEIBur>&rcgF`w(UW2<6Q5$*PhU|xb94v^vJ_+VJ3w2?}Je$5p&D%AhaW1Z4l!P)-Y zH!`9pZhcb88%r+i@-H&VZdWOMmt53QC2CYrq*B_QT-^4x$dDYTQt>*uq(w%|u=kA0 zlb6Y*&Hlv(llm%8Ym&Q2rI=}Nr!0v0r^LV+nd){XQu*bTd z31Jke1zRnU*&CrSw5a=s7tb%w4ZjShJ2WOE7dg;$drrkarKlb!gGvq`kXX>EMQ=f%PpP%U-_N*#yc~Oz2-7)1;k&%rJ0Vl?ev4hNx4h+(>+2 zuLdiXm2r!}yyG>xHZm0_K=LC~U6`-A2RV1Y+FEnz=+G@Hz7$VqgZ%e*1_G4ig7`u( z#DZ}(b}Iszo0{xIr``Kao9P1fB|Fne^_Qt!=#zL;e*JUg=G*ZGMG9(YfFK{8KUICmvW5g!H`&qKvND_@9PlT`W*UGbB+}5Pw9iqE@m=3iW zr_1MzIc&?vNs&(%?>K+siCSsg>a#Q@p}z$9HHV9gvNUSSC9Jlf&#OoQ&~Waz1%hw$ zqzuH)@>iPhJi>idJ7TQ4+Nn5K^0hkx(iW$__p$*jUS{(NI33SkK*Z|og9eN$mk)WB zDP9PtxeppQ`Vy7b7?-udRQByiU6A1ui0*nT1?tR`I$FdQ@ z777&;U?N7SOtGQ7lg|KGQJu3sm2Bzzv{%ZZ?E7rSA$G|4{b;a;ZkU&NbfMr;nUWhK zZXFcFUuCezx0&7k|Y z$Yh4#6-qNGQiuIGZ4y{R=WTG@BCUb-nWQ)l1Pu?ch7K%V275IaE`g;;+xuL=KNm0m zs-bgOr)36r2-y-o*4i{Ju?ws5{QZ3FE$rGyl2#MAFo!t@)3jwOS8t%r4|C7WGb%(G zCpuRgKDf!Qpt81lbMNb6EcJJ^YOXQSNs3Bmy-rx0DM>QX`w-tDJ-rR1Bmr|6i5Xqn zrhhGuMz}tAU1_1sOjI*j@NP4(01)KT*6#4%iu~#Ls9m>VErsP)-e+@bE&Hjp)Df91 z(a^sXFW>ECm;QRUo_Pf7!y(|r7m=>w|4{yMjM3J`le+IzS{3|jjG_{l)2j_nDMI|Z z@80p}{jB-u)09Zg#lE+$U(8!oKep}dmm)Qp^Z(5nI@$9(y9K(%NBfe}Wsmlw7W6EG z`R-J%=Y3lR02IyJ^b{l=qiHyrwH$J98@xrPFEV+40V-wKl&4|z$+3#YJ(k&Nx z=|_=0$L+xv+ZQFT{wPL8b6Aou$doHw6FqcZDDKS-Xyr3{?2R>gE_92=R2^ z#zvhCM~hli=sp)96xZy#pkOy|!^Z#m#c#bD3Ic&Y%D`R?`zg2D`uU4(mlxcvGrq|N zh&Xy&G59vNPAkO%5Q?vEUP-c9s}2A5VKn3vi(@fr>s4Iw$I#CoPr)<&$PBY(J?mVP zv`3g4SiAkkB}>3t3#)$oVi9@ zq*UdBM`{ehncD5gs-s2K&l4wM zm8o4z?#eswdlKahM{qvIX3vL*x@!ssi+$oRJRiaQkgpRET|Tc-JvtjG{OoO4&&8_K z*~`~z>*tKV1dr^DZFN%|l3%Xv?2LPyk_3+N&W&Y5{iyd&H{=ye)LN)BH!&BC@+T_B zDO5~84pJoj5LvPI44K~bu4_3CStBacGw~lda?}ota=UZ<C%p5oTX6&~Nr~{G}IsX#d9dw(O6*63@3& z-XjkG>v?{gdhQzw>IFY`qB>xTdldom z3zygOug)?0K7y=hB67%Vx99;}HW6}4 zJZMsjvkY7;8SQ}S1mT58cGrJ?+#1)^&^>%3j8jVYuqHK8in3T1=4vD6g`9Qj?#_D+;uZ)<&kJ8V3hG45EWpT~MWA3;o6Tz;uVwr%WepPoA-O2b*>2cyZ!_NIa6`$V~_lg1QFoI~g zcY4_i@d`T03pHWu%i627BR~b>s`5%>gVee{^>#P7ThPd2DOI>1YHSRXWtR!@Sqp zz^Yn|16(p^twXW}_tk(3@FVfbP-X-b2mUj^7E2%iz(cs0DU0Q!Gj!@X^26)kV%g;$ zM};f5d01sbSu70-4gkeXO#iT0Qf7pJK`^f*Xs&c~EM$L1AW%zeO+>KyZcTzS!q!xR z0(iU&>IL6tz!~BD$21RcMySfxeOr?O&IoN$qb}PEn+av$@ow!hWk!&AZdd7PzP401 zcdh9Cv)>lW5bc2k6>vr{i17s%%i|-W3_cIL*1EyP($(cib-Y^1=rwS$gt>=ke6EJ# zRVN=ke(6+^rrNQ!_~&AISi%^b5pE9b`~-^=??Xut&Oc@ZgwhH)BV@sabpPdy0O|!V z5f18HnWE-S4Xm7qNVSu^bauLpuSjT5>5^=Q)eDUeKKe!DGYk&wUEXNKa+->3j9N3^ zY;CIKH}x>^&cTq^nliLjMNefof2*uxmUz7sXM=ipsvapLY2VD^?8?XC;Qm_n86#jM z+|GIG-RtJ&)f;u`F72OUlH8<1y)HFPn?v8TtL7x!3|k*(=W}Vj&3hqX)A{6K=J(9v z5w1xZ;oX(Qi?YEpsp2DNo45dFcJi_VBi6mP}vM zS`B9vef)|J~w55gC_1s%j}Sf=u{^O8)A^=9@6iITjK2#zUy~ zo@rf2K8R0&W=CImY_JCe9qV~S?u==>WA#I9B)yJ?eqWW}`P^rkUV6VRmg`H=n~wT# zpSD)#Q;HLBUZkG?{A)&tK2v)E{jI=uQu`RO-Mm0n?26G1QB!F$Ef}8w7~CncsBJ&> z4uCP3s3K*b>A$-N96q?9+bY}M{w^iraLKTzwp``#yJtBwS6%!gj=3WVmMh(51aUnp zn86=;C0sdu%}g~+2(P80tc9VI`ZQYJbOiIgo{btNDRJM(qLB}OPcK-uqfuh&_JyZU(hYMN(;1 zLm?hBkRtCc7(B?PKf~QbVjbgl_*@km;$mzq`Nv_q3bU*!kJd5I!a#2pEH6S zm7CgG8(0>zSVAN&!0zmeyXu~=9@vyCTb;FO31iAwi2(nv_ZFzFBK*pOX%ru#QX zz#s7(US@ZX-T#d`1|0!lyQWz00qGa}iDcFlh;E7_pmc452x(o%Y@JPruIfJiLwKLu=ar=5feT@nHU>e$Eul zy}MF9ug@&Zzb$rn^HOyLyx78`V_Y4FLO-a2zs(Gd6G_OMeW2||k_K4-!2*zB{1(8b z=1cMz(me_Q+<=NEgdGNmzQ$^~cCJmv@PjOXzYiw)u05j14~=*ps~N$dl$+w@Nutso zi=|T|P2a>LL~?D|JWbWbU>sR&+_nkW9($OPaFUA!AgOVO*-Q;~Mw#Ikb)0YNWIaKK z7NeV>9MGc(4K*ra1QcTlOsL(5zbB9}5{bX4V^4h%036`hi1;29HD=>GS2mKD&pAy|uToPy!~BiQTLOu;gP<7C)e< zFfoEm6~lT30?UdF94qaVUtFrH=vr$R19ZjsfLGA?BFF5Di{jP$)Uj`@?q}Sfd$D-! zSk1jdPgh=xeW}-Lh7!bp`lPa&k;MMnc;2T5Ur2B^?-hd|NO)Li6to9;#s6c`&ug5= zd$pO}Bctak)%&w1&pD%UYpwj_@CzWqm#nq3(R5M}K4Ue6?kVnTm*QMVd6yCx&+(>v zL!i0`Poa*(8B}HeLLJ*=gWiP>GYSiE+Fj1MD3C%OzjC`MK<{ctp^ohaz#GV{nh_A; zFPS*FT-`@_yOU%7J76_(gbO@~g7Au((MSFn;WI8Rf1k^uumHKKzT0!R@Jwx=N-{x& zUpb-Pwp4u*y7RgG3XITFx4Hbhbj16%e#0xabM;wOM1PPvzWKCWepnWyj*mB}pO70g z1F2)A5|pG+;`eW<o~QBZo}6b^7~qY!VO`lUpakZy_apI@zA}E?+x}10$ns1#QaW>6%|i8zg3Vm)cXNdood{Rc1^ZK2jQN104Zh@2@00QkerC z0bo4GuQK{yEC4`X@Hbe1XQuM4eGj?m3w8I)=-2;&I{wI`Naf@~xm~6rqkV6Gr81-XOmZf8a~@B`Kiw3fuV!M5NZWWsaf8 zPC|gbgZ*#PWQ%|qG1NVD-fR=I5J7vU=}?T~c|IdYc&LV}n8Po8(GsLahlk>Ys+*U2 ztl@G|lTwJjJv{nF{r9gRzC_2r#zsy9$tZ3E$s(Q1Lx>Hn3PtFrZ@_-yC95Yh)jdZwva|H7d6CYa=q@bt_zaY&@q(iY+^(ff(A+mbX zBUR5^#QT&JSW-mm_VGpM1r&cAl$|7=^(AWZTn31PWi{)p-YaC}L)Rk!PZJo-I2Snl zSa*+>->+s#uw?Z$_oWQt)6HNCzNDgV|H2ns?GlJDF4aDrvV-0fe4%WR6ny!gNt1oo z^M(h9{aUUDj1)46{ihAmT;mwHLE4^Sj&Do`H^}G_ZxCOoUaK?6Z-x18FMO=1>{6J@ z0r92MG^b0xj0CdGso(j~xF^$~G%k5H_^Ow0dJn*0y=5_g&%E>tH^ zW403J-Uvk~Sk(ynt%R#rIi9fRRY%9&h+yD`=c#x$)D@J6;=Fm^JI||d{%nephI29a z|3{Yjk#4i7&1#%gXAWz08Z8jw9PbDp6w+sZEuFraFgpT9eaF0(f3|wVFM;AX1KXSb z8~9?gmXy}X|9)r)q8Mm)yX$){mljQXM|nkZL1()Nxvt&(+1kI`ApbSK=yjd3`KJx? zMjw@8ioa+n_rJoI6g{D1o4>Kle-B^UdlQ4#A7cMCzWm+zCnYfP^2Q(d!ndGv+?_m7 z=6om2=5vwdD_XURxH~0oa$=Uf+xREl>Y3hGk)l(V-dQ#CmT`v`Z}rDnQm3DKeD&M7 z4McK?Bj zFgpbH^Kdf>G`>E? zSGYd{Bp+Y}-E4>IXG^<|p}3RTqo}QI_xFy!^~=T*?1s1X1I0u9 z1^RwA-AHQ)33Y5)mx?~Klzp1QHqIm|Rp6uWkz^AS2rngE4+tU%P{Q>hqYb0>Z7kNN zv;Z0)QSqZ?8zEG9ppWG=1DuKlKtpUC9n<%B5l$CTz@(uS?|2mrfhX`_le~FKMD8I7 zK7#WU8%tr(AA82b8)4v{aW+2~0!ww8{g4kv1&S_~cHBB}dq zBe;wF!U~XW{BL4K?GlH(HE3h0*u?T}48?@}qm8AdOG3UZKorD^uR13vY@^Yb=!oar zlJN*O32xksxlG+;g2GtZ;gOKWxanleYeN#yinX$j8JCV(D3<~zH|KIwubsk;NT2{W4XC9wfraBIQRIvf$`Fp>snoB8ulnrf&Xb2`9qNe*~WBGku=PvwQL0yNlH5M ze^ZhC3s%&&HZ$vI#XIh{u{G*y-zPmz@Jw#wcni9d|2J5XE2z-cb|QG~b{5JFah|Ad z7WbE3q|f7QNFK9`$iHM8{~K7*qSt*P{cFbjzu84j?JJUhA1h>?E6Yc8Ua|Gv3VWO@ z_>D*ZWV@<0Dj{#gU&Ij1%)RSuoPUt+_fS?Y0Qc9IR^g93kiYBwaBD>T4_?}0^|Zgd zwD!3qLfC194;Opd2v!{q!!BwUoCWen5hpxHn~Q78e|u@I_)nv_Mk_y`tqrv&-cgvp z|9r3w@jQYn{B!7lnW0~Z}uNQpqZg~OHeY5#9Ih@KlXJU+R$?`WPH}` z0WR)V2J0pn#0PK~#}n%Jb)EP<2c>9i6v~fpXDrJ#DvNR4OVoFN7C(DUAqecpnr%W6+;nEZ9D4Ajm9{<~O3mlp1HoJbvK!dA5(s3jV@$bta7cHe4C(wsDXzZ^ zgY7-s=9qE`f(*ycR4o4aGU%Cz-9IZkm0j0uw zOn8U^sW*&@*^01;;GHO1yw59M00|c#bF;Q95-eV-?4)fuL&XBmYQ;f5iVSg*`Vk;irVK7b>Sg3 ztv$xaAA180Vh7i!$+$u!c54!3eU8o<7*m63wQzhiE-1X`05a*7v^F4lT>^Y*Yq^!I zN?3{F{1x67 zgn(A79#}0?r@h|G@f$N7Pd8Kw=DY z`PkZ8DWR;OOORhkuT6h{D*ww%n}sRI~~Y^#|@5KKXya`nXvlB%cj6 zDQ#2`Pn~rUS9;$HhO++d{dm1v^Z?X#R%wR+#Z(R&28T0;|9{d48@)Y2c=uldP^mAb%R$+@A0MF%&yd$gxXA(4f`kTp} zQxl6y0SYjTLw6;0`QznqvC=MCH(poW-e;2hBiS%WO#&X96v{}uy`ihvgnulWU$N-&(&6I3eltJ&G8JtcL}7~Mzo?+R(2E-a}N6s2M+Rulq6)AZ3au~1|P6H8b&6_YJRhDek*Qww+I z%MqR-YO*e*GqZTofHNKpfVs2LKcKk3gEfwaFOXhmwLc+KARRHuq&v8RGiqdAiy zItKv&LVyTXOHot_0HSLd@=KLya`wJ;ca~yuFEBjzJu(!=s7ZjZ0i#hVumQ^2ki~;F z^8kG~Y95>=ZbJ`2Ch1c#o7bK|W&}OAW8ncGQZLC8g#lkt&<)RoU`so*M1?}ivtKBu zC>7<~7_VGW5=4iw=pCnbxhwtb=h_~M$=zd{KeNP+YW6b(WK%qx#$R)>K3#uz_Dkrj z`$Y*WTGU4I^Do!HT=-9IVXap;HG!oYPw^`r zYB?Jw>^77X(6`pyBHK?fxtpTU zOcxOfNVWn+1!3*Dd|)LOkHa1Ku{CqX&=#xIJ7 zO<==CADd{U0sz!12uolxiTKIdO3KgXJ8-Z(9H7x9wUEP5M+!7y3a#WsdShny0)T&( z?bQZN7;t{xp4zfi{Yv%}T6>59HN8b^lsmFMPMX>e5(fS7d@V~tM&w*!F_&T0(a zbvcJ}K&9ezL!3`YI7>0;MbJ{G@$qhCsRFxGWTxmsNzl~ipi;p*#bDLv0(ueh)y@df zSquNBRQ!%v`SP`3cgpXW^`EzczpGSyXl0iE-(i+fky&ax7-{|wOwzwoDl9_vD@*-u z6zh(Q{#~V_#8t@PefwW93k(w9_aYb!_x&@I35xuQvMnKv$z{r97L2!PuFX)R^g)IM;*{_e6h z^BM`|LThpm^3-9XM*mD}StN+`5JGbxiL}2T-T#uzs^dB2BHj4A&NMiDQL-5>EK9N;~MHDywPQ!yM>*ovAmN#86SBl1d{3c$SkIuYeqUmLv6JzV!%;D8Mmn6a>2R@C z16G^Jst?{ixnY1?4k&%iY&h!8YIy{Unjab;2)}DG#KLYr*@P-rn}M^;lGh=OClq;a z;BoY;W52Gm#EUTR8Fd1p$ViI>0t6vtNG8yqG&~D*DhV3x!RxH=cOWu+QoK}$O{5y!q)gO88O(cn ztT9S}S|rUaEz`p=2&xsrBI$?^r3rV|Ht`g6RUEO_Jc@Zs4I@W|c{8TX%@*XQfXmil zvL58B|CC|_=h`q=(>m zi3}&o-7y6@IYpG~td7#65^amQ`zR8&nBG*Dtr>IFkZcQBG&z!8QwtrN8Sz^aFtjk% zrpFV--t!?4P1!hSP3d@oco8P~wfnTzVyM`ox|3*q$bsNlqC}wSieE0vYg0&*Th9VI zj78KDO+XwQwI;s8WVjF8(TQk9HY#%w`l9F+S0$VGue0n$PQjV{w6Y*9Y7sqQEVI13 zHa$HOHkvRMMMxu(JK7P?Xpn{u3uVM&Q>|I<5{EiYVq{06boWhk)URzAPe0tlgwkV` z$l)xEx>fL?*kO_l%H9RgjMZ-A|^CM{ANz5#1oLn*_GR@LE+4soI_-unl`@~ys zJme0t=^x61Gkfb)G;vNn=Jkd`1MjmCB1#9NdS=l#^2r&Hdb#K4iYO9DH&-5$Va-F~ z7eW0Ghh)9QSLiJlUpy~6s&&iA^BQU5Ng~fWc%5~ux8YIlDZ^{bn3INwQEVDjbdOob z)S7k}^82WdK@lrgDMouI%<64vv=9@f#*zg-ZArPlp8JT%y5VP+Ji(-}0;y*3n-PA%+o2aWdK34*eZM7qwHeNBJo?Jfu<(&%6(FFpmAEg9)_YVT~! z18n5~O=7>i_r{C>#S}<33sp`$KF_(H)l5e?+;{iHHKp}z^nU4=X-IklrT{6-j|PED zkY72^WKKj>A2iy768qJ8Et%lnQ^D(bJmPo}?ctu}eTiK}(+Cn5zlO=jU-c3W(C^RT z{8q3yQ)q0&*q_fAP@qeZKtxURw)+dMScJ^qTgMU2C=$DvNJ(&SN&2^x({>(~&F$}M zSnre=sutUR3{sRjQ!O)Gx00EPcCdcdHfCMX<#rSzV|@> z$+E4F`|0@8L)-64E48$IqDM5@pcYS#QE7?9SEJGtE-30?DpNmae? z(v)k)N`nE|L_A|0XTDW>ZudBf*L!?VgzRVv|b$9P60mT`9_;t+fVVH}bJ3)t&kB|;c?vk;JZ2-fjDG}N5HEX1yP?tE};jPdS*RLZCJ%Nb;oh*p8 zIAHw;OGOamV9K?(`5He~m~U@44|u)b)}I_B-rPn0yc}ni1zBS$SC~1M)y;+uYYBKX zugg{uiiZPe*u3(|) zC(%@~4c(ZZn^_6P~*(ByLCAQPyUA2be4qb?c5hlCoEu8S6&Jo}O6mL!6u z+;mz9`WOoh!vj8k*A)iBj|)e**YRnl8H>dDynS-ul$Ar1e5A-nn+Is*@gDETD>RqW zqH!zmIKl~+y6|J{0Ao;8R4b2{aCF+NO)iP%@*Wn>BZ)pjisT?tD|nbO=+YJlhCc9% zc~Hj{TM(nF9i5v+b6FCQSb_3mp+Xaonk?idOUzPrETktkGbp}>F)l~ZAwicm6QFU& z!qrJ|p9#b%NklyUWM$onYR~w(t^dQ@d$={3wp+Y!3LyzC^s0nj)u=QPAv8sbMnoy1 zMnpP-h;%jd4xvadp@-f(YUmxKq9Pyzh>C!Uic-Ykyr47R?D=N){$`(j&cBc=*ZbV- zzSsJ#D8HP@*0pnYr3n#OBngL%C!j(p$WO_qQ^%s{DluL&f%!O$^pi6S)R@O(F`^9D zpw%(wbz@e>xL=3GNJ+#l&Br|ULND_H8)mUkd+t?f%v)+~P;cz_H?bLnFxWcT^b{H5 zO5UK7Tl>hYC=e6O9VqRe=o-!*Oh(zq<#?i!=_pFk3Bl%gt^G{UhiJ}JTW*PXahcHf zuTdpi7^Z40liKqH`Sk?#nfMwYfipE0X`T=Xg-wDwVqy+nnBP^m%NtIy^a|PPw#n~@z^`#$?=SV9Tf58^USIB%;{|u@u93a z^Q_n2+bH6N<}46J?DG)*oKbgMtB3#Hu-57CAiIDB>J}mTeUA?u{HQh$2?a6}Q+%5lg4#%7Q53@!Y)| zxgd)8fNGush$8mMQ%T!K5vz^osc+=r1@g62^K~rpkNV{6rR59Drs|L9pV-J(ZqFyE z7MNHRob@R%ODnKwDX<(bxUf+`6ezS(Ewr{MwDBplODl9}DRdeyyt+~7Dp2I6TI6m~ zS>3slUiR?LB&)IJsSX%!1C6-(n4?>8!z1u8$OR<2l7e)XwbORL;ysoWd~JJKov z1CFxg^S`ekK_v$TyA1ciei#(~k&-)=W@%6SbC;ogjbao(q(Brhb zGV=SjIU9@FvBxBGwHaq#+ZUYNVyzNr-8Qq`e!}{siu==t=Lm|{WmoSn+Xe*<#X~2# z2$t+5Mkt3h3~`!H`z3%`X@1)1(XzX)KUlWMU>kJ2XgYAm%y#h-jtKCEQQObW`0sEw z__$8+S>k7-cyT06FPD1iwwX4rHa$MVMc zT*itf)}(V+Tb6TqEAZ5+NPx6*s)iyYz@&~DIX!bf4a4)$%#veS4WO{Z%5 z=L(l~8G^w*^o#|=?=x`e&70?yTNb#vwE=&npN=^f5S4mPpA z%d+VFBpSM?`*q?{`c02|hiAJiIlsYO2YPE$w|pC3kb0k@YW*&sUz+rn+AY^;kX^R+ zvcm0fS^tRERqqlo9aT}C?0LcAwVLl!1`MdkPR9xkYUaMd@j zezDtgrg8O_*?XUN!>u2>-Z1!G$XcQM^K~m%Qbk4UpdDCoUiX177d{6?;7e3K+`QqJ zh>7GsN^WbtFMQc0L1rnPgC_U>_C5`#cfI@QSpK$LBq~&z1CY&LhJQVwsdAE;P4Ww8 z*!S1Hc>2(+f300G{4yk*MShkW3g)C7=n%F(f8i1`QBG?t!mKMms@RT#J_2hu@6+Ou z9EG!vETb_?5HQEuC5ou>7s$}!Dfi03Z|!dC5dB0A#w&Cpbe01J+Hx65q;3=xh(s@m zF$4j*7#Lnh%;(y%YC<={LNg5QPQ+GvT?7o*0uI}K46a$r6}mBsJ`RG@A($@U(fqxW z@M+F{?qDeoyN=4pN3z@_IG@t=F{8FwZgC_DDUQ7A&?HF#aK490Vo<7?sfydev?45i*aN)h}oiwaA12(Sbc*HcfC=w2t znnv+;T)T5GO42824Xwp@3HIyaOJQ>$SdWI|d5{RYmTPs-EVU!CUUPDm_yAKUJX^4z zq(blUle2`=JVj%jfaUTQlp_qwfCU@6FCa%;pMIuv^jpg-{3uDh8m7(DH*I7qz?H+d zi&a)u6R9OV%b9Hk7jNiIG`C*K*FFAH>(?HoN)u z`8%K0)|(4^!N~N~r?kJur~RiZ$p2k^v**yu-C%t)p7p@o0U7Ia>|hQ}^+5cUf;oxK zlKvAO+=+QZB{HYY&zzM!1I9>1*5M2=0DSl$J0-sV@ZqyQ216K@Fw_6-;ro*_&oS4D zeBh7HJmy_UCyOt@Z`{x_^GKFQh0$c5%YjHIF+RKgI)6?9x8^L66#}j>Nw8280~P4e zCij_K>qT*rRr}8z@R^Q1#n$dx1s^AWm_q2TB#|VrO>Nu79ToHjLC>hxyUd(>nK|Eo zy8gp2;KRpeX{O}lFN`>#drevE_14PeE(3ky+@-Ybhi@UY z5bxNdcqQX+0aHh+yQOsxtA2f&mv~n8VLoaXrMTdH#F!ZP@Re8sd>EZPyb2G0Nug`_ zf&(?=)Rrra`Gyk*Aoqud46+YRzNF7AE9N-yQ>vQ#h2 zMarvh1EwaRM^+wR{CN{?vdA#2U%)UI)IC$kvtB1UQc7<=>wbGg= zmMM4l`URG`ANG~?O$lIpRG02MAbPA4`u+W=K}L(ns&(b}Bb}c2g`ZD+9gYxg4XdX|@8<3r&a{7K*SrlBAn|iZF{QUfDIh)*~U9ajKJ5$Y__vap}9F-(qigp{V zxP_?`e!g<7{kx$k$LDn2F=-wpZEI0K+s8?R(yv);x#;|?Q55v!Gqk!h%fa){yCft} zsaP|@X5W<-T>n%Pm+vg&SA zsufcOF`19+VeI6vsNev}UuCK>T5%*d+9k@maaN^QU#mB!0-3Hp#U5oXbUCsnjB)=a zCDsoQ+qHF$f#(t=!ge`;_W>bTzVB4DdDCoI1&}T7dHlG+#wX>J(R}ruxG4L4ZH{aT zqauAK%qKBVa4V2OE#^|FPFWs*8!bdks5;uE3d$p`HoZ4_3`GAWDDt~o%Ej=o64$JF zTc;V+emNBFH)O?K=EbPyEwaVz)Nzn+jHs*8bSidtOhWSQ!$n%A2_u!~<#?*e$5bo! z$6QN!DZsVsnA)f6y*I1G_@CK@s?Al$TqD%&DxW`ggiaj{Y^ly*ik2a&wWEwoW-Wov zC-P<=k!S02ovO`xaZ@?5tHV&9ZpUsJatqqy)uV#AQNc&n`cG1yt`xqq;@wq(MMx?H zu;NlWv0W5|By*s^2L0HuP)kK&g`+D$q6orn`lRK3aG_GSj9PB>F+);-(6U~za8^6B zhgz-;gI}rKf#NC;qx}{7iL&S4=|8WY<}RI+O+BLI$QJxcOt_35dSou{sf)2Q_od5A z^=evx@ zQ?~o=p10Q3d$qqtTMd3MhXj6`d@m`{(#yT;Mk&a8Zcu97>s;aa%z(=nPUD2x%lN!m ztkk#5<;=te-&!4<`gN-7?lO0n-&=!ezvsO7zrCuw%`49d^fuBkQ^_~^4QICQt+um| zxVA`I&af(*VVCcAkrWMQuX>kpWb0MSfRHn`Rx|PT=x*O*ma_t|kDSHCln$Pd`@G+p z#7;y7e}LjI3r?(YtGu7>xHV)Q>-x;|XpCE}Al z*7E7kMJ$f$CEpjak?}3tYOsyDuKlPCgKcQ;g8J8HtVUr}^LMA30!_1*1}{!IT(9ZR7TZ-&rBi3#ZAmPij~_wERNR z7k;uruDwGMnZ7-Tf6SCgGJ5B5?%Q~ada#t*HME(w;P~U7hNfPyO)a5=E9uvUmQLsQ z9(Ux53{_rI~czi@q=6E*d<;bb|;4Q-oYzTMQt zdvziFq}nWxr%KPkisk4^GwhV)TEV;X4j0ALrlq$|HkWAZCXplk9*FbSi`L+fTGsyT z>u10c-(T&wt9`GMjX8R^2F_peuF(XB2M335VZ9PxXHS5 z#WP3~-iPmY$1~^SRhv!AoCX-17B2`R$2k4a3A_PJ2gBMqxn?5jZs&4J zUHm2$MGm?-O=Q`W4j$JPiP%pU`RcH*`xkAIwRYZLmp8`L+PFmmPLqh30-W-z1ZVG| z&+CgOo`GPoMF5-OFRYu$6&bh-`c?*%ZFCF2b%c3ez&>j&E&-rJQoq`xv+~8W0_otH z7Y{rV(*u6&x2tAPR`Jcm7df2{bsB!-=Z3hM+v6OB1w?RcsbsbfIDi9(-o$$a@Y>~6 zvCZS)A28_6DmECFA(xE$fMeUFqXKQcsCfT;%v?BM2rnBXp969g)<8gJ;m~rD2w@6i(K5=C0^K{!kc>yCPcujop^9Y2Kv!4;26~9b zrsayD(itoXh&@E8DIMhy8X`i1I^g}YX>8J==!hyv0+Hz;7A{C;^2NX!Xb?3To8U5tn1(_L z5IhOmfJcDT)&>%kj)6kSj6TOg4@jdFT@erf>Ptcc04fp-?83redSMw2excGqX{HV^ z0<51A9bObv2rxqF2pJ^=beeGw30Nhgd`M6~3JOMNaVvsokkC{WWF`fLz`@e-Fv%)Z zHh^p(AvWpgrZ5-uF$6yrszHE3=r9t%B!$Ir(@;_*zrH4ykftcJq_7-G$i6BsN|i?* z$xx5TbeII&WzTex#0td$N(4mMau}4z@UaM@PDbs)L*4A4I5MhWn$db0wtI`nG*9#@ zs)}9fK?%B|g9wmaILzAh#Oh_JJK2vVHHr-tXDjK4It%5PM(vYkR6PWT0x(MyY+n_E zLSn>Ypba>{o5lvkGh`9a1x=`ZM5w+BT9OXUsfrV$!7fk|-X*&nX+jEOkYIT+jHFSB z0qW13tD!-!(-SihL4@!t#;NXESVV&>!o8O*8)WI@*sc(n^5N)UEZmpO;EVxl;ussq zG0-Y_2`x#3j@su64U|gWQ-x~4vUt5=TpjaN_jW15pw5vY8Ovy%&uDQBAWF)BV3@#4FvcNGNTfa2|tYr!vkVlI7Uwjl;0J#XBu#EMa~nM%yDQK z9qLA7eKlbo`d_1#|2Sri2Ikk=qHDwgQ0u2PH8-Tt=gf7{C5OYjQ91}g!<{OvK38bD2^>CCzhrB`M0_c@K zt6!6?*5BToGDUm%pdD8|LsmTCUP6P8- zQWq{~v|P+4p&jk-+vY=->|w(WAv#i+o%tGHSQfERVMS*kfE(s0pL7yj= zPoXPv2x$LCXU2%a`EieY@N5AVX8*W3kP{+E)q^&bZ4FjPUcirB$t@Yz#6!xG^u|q) zn@TQbZ~f`?Ky(|msp;XdvmB`5dR;?5epS);YBmKK0DwO#>JB+D16TXSqPW$jj!LRy zF03;UY-m1O*Va>ip_NFKYj7BJux_mneqL`oanZiD!Tpz(3@dFSw>m{lGYkEtEqWM@veR*qx%u#151)V0>dZz#fA%f*X=n`UU z<03iA!y(4Q0d3&?h^O_Qqbd4w-JVgMr@nW`((jJ9-kqGdJLRi@+4^{QX7Mic>)qE( z_u856K5V^r0BrXCc5hiw3B!JWW$_;L)cv*e`^$s(HcL4-TJN)cy#K-XKGc#1o4mi> zrsikQR7GR8+{Lm<<6z#Uq1?{XCcy32F3{F4G}*p;vmGnc0k)}$TXsl-ZE6`EvTYsm zlO20EJ8(js2h=(hEIXC_I#n_{Rogn%COg$PJMltYT40-+W!F)^F1?H{{kAT{$*vQd zT?C@lie5En)x@oRfKx1EPHJHdh9ZK9NK!ECVQ@K_P7f5 zx~cWLTlRYR^?GIW`n2`>P4?c}>?H~H1*r7}S@wna^@U~hMZ~oAMNRg_Z1$0b`s3C5 z6D|9b{Q6Te`qSF_Gba19Hv1_;1G#Dg`IZBPego8ufs(d?vdMvp&4DVR!5X!}I?KTZ zzrm)A!Irkcwn^|u8l(vgb*K$>Sq}C14fSOV4YUmnO%9E04yjz*Ll=rWt2C@GIsA0U zdMso3nPJbQU(?j)@DxMa?2^^o&L2#tvaeUe{B_S5YA)QV`LUZfYPl2xT!k%% z&0b%$K^Gf<)h4YC?z|yxv||r`Z+(2% zlLBx>fzCu0X_XEAfq`wCb^ced+Qec+3uIuc+S`HlVEwt=n4_}x(c}}`4D3&)_8`cl zq!?ULj87HjCOOEu1A$l(v?eY348AUeR!}gIA44lRh9rf^_U>{ z-F=jB(n#^~*^7I=Jp94HzF4C8lr8$M`_s#L<@MvHwMI9_KB-1yG&Z?RRyC_B93*LI z=9U&g1{%zv{|J#Ox_ZJ^_&vvr>%}Ey%`-^%Mk&}sBRZ=Cu$%Vc4qJZnbQD`6N|qx3 z#N9AQ`9$?>aPnTvqL7N)fHW+agTw}*SVhRhf9~`F+LW(&0QYa3v@KwStp<@HbDSh$ zs0sFvW{7XiaR9%xizLaw&oLm??(*LEjE!*YCOy^f0Qwd5<9l6T4>Erp?}HQv7}bzL zM_+tkveuPM&l^}a_PkelQxt%zL<3isRRpZ}LB252t{~j-xrA6|sQg7p3H zV1d|muek+umcJ$271%Lo1`sfOa4gpieBT#wt3yd%vynt*u~*1vI-ieRv$f&tV`Ax0 z#x83zIj!a5g9weX%Pb<&Rlne&?0`EQ%N-_{$N!+|pc->NCw#v(fYZc?TU`=S(&>|4 zQ0hxU*2MFRU`2QlFh~_f1d0T9X9r(xt5{hm7Et9@ zPbBi#;yT{bj%m9VzDrAKD{A^W&3-GW(j`uas$8HI#yq6OF0K+JYUqz1ctX!P<$GRU zO!i@LwTUd1(1qanh=za_Q;PE>#yMK6fFw&n_(6kZrE%kmR4oogl}>ql6{86Na71G8 zjMl(tN#+%*uA%^6{|`G$?GHOk+!@f$5@t)RN;{Kx%?eh8)nQP@)tC--R8)p_GtJ{P z?pM{9YnEODctG395EKKeDwVPMi0T>9;*n2*5v3LrPwQAQ@lSWjDO@w<7}A1gXX?u9 zV8U(~f2~u5=*p@m1_~Wfw@QtrRq9S zne_ZK;BNlcYE6%0)}n!39lTFIR#~4)GgDdbKXEm9yYOB1a5GjqGWD3Xe_5i8ca8bT zr{vzUa$IcGkll&ev}Z#$IPd1o9aP!DPp=P6tdDq&)Ml;zJ*w=-ibBfhtv(nNP5Cpb z>|ZO2KjBPOAK$q5KjKUq>WY4>C_tQPL*wwftG?eRrdbb1XxoMF|6#Ss!iq%kPny8a%>s1j0(<}Iu|B^WfnZj^{nxIuzv7$!xfJ6EO`!By z0=uX}807#k00vpfip%vs$YzkKWIuuqZtJ6JM znXTJhX9?*-qDJFWzg+5+WCbjK3?q(FDW>U?02EM*{YB^Idef2IhtS?`Q%)N-D6TBWs`FJb-uR zG-<|rFjD%ZGdSl~@d*d_wj7TTc2|-~xP5`FZp%o}eH|QC(>zTHRd0Bg_vWgxBrJ1S zmr2&{y)Pg!jU(?7;esF4OqqYLcA^1kJ;+Mss-xkB;Dj~x18`ar3R+-A-|eX3a_@Md zWfqw;3)qckf)=}w1wLlG+}G<7zDSmY7VJ`acUcgLbjk_238%QP8cb^sJ&kC3C?ev3 zVb~4D2Kbv)qO!{ZKtl=@zL6gJAE#D^;WXH}S3~ z^>pV)Y@j3cG1#m%ZD4DF9&whs9LAP9eHrT70AYqRK$_rWWPEUd^)%zAf&W*eC?L&h zjY8<;@^M=+K`?OALry)(P0D@N_av+aMh`uEwpo=wC>p{iVnk5sNeX8ZO%>E@hY}l4 z>RDk600t>O5wdVh$8E>QmjNwJ%n3M+-Mg$G#Wr><<$Ii{hvPXZ3@@;H0|z9PT>!?P zDvjK9b1TrZ#$FHT;PUunn^yyzu9yjIDj? zeey4CG*6cqxpt^Y9=KU!xNXKh`7%`Hl~m%@Pt`%whHs7znH$__IW3YE29nL58+z>h zoVgYicH~1Um=}_SXMUT@(_oAsd;5q|M#QOykATd)Fn_Kh{Jb*v!b#n*X)Y|E&JhXy zQ@20mz-v_k+54U+)285Z-woNT zOPmTkI0S|J;u!#Jbr{4QkC5i38jBx#2uOn0Vlr_YgWobIFsz(dRoV*PSLv62OdSkuBYnG> zbSM!l%QFekm=D<(M3~MjT>|!cK~OrbP_{AXT?o?ESx4xSCA%3p@ws!g6n;HCu-tBJHO=N^?pK3&CWn@ZhgRPq$a6x z=gyH_fB$ap%f<^Q{dD1uXX^BuU=L;o}1iE`n5c)f?(jEVu zfV1oq85otTFtJ0s>T@$xM*$PN{PVl-?qDk#w{#${^Z~ZlsBs!DIAm>g`Q>2t#bx~se*%^HZ2H8J z?^_^Dj^fCd!AoOcaKJse1_S+fftZ2db_T|?UJw|ckn)+J9sixCy>xB}b~^$r9iuQC z5m2zxbCp8Zmt&}U6tVN9V;@P=qs2b$M1cQYdRGkLDyw8+_6W2INQC0uQOcslHWvoPBzO|D~NW;U@;sZ zcGmX2k33{Z^sv_V70!*Wyj~7HRBc9FmrTAd>-u8#gIk1mjRqO5qJnUW9x6h9c0jJU zt7d&UZt$w#C;r&IOyYv_V5k5aMhIlwJq9`SHq}ws*PX-lf!&*@jsczg5K&vG;(!fWj0%;TcgOgL%}&ZFxuUg9 zD6no{UEsp0cC)r=R>7rd#>|7-nBDq3iDP&y6dMMqqH{sky5zUiHC1`0A-)WCBHf}= zkp`|Ju*|Sv$+LO^Ko~6|ol_I5TGaKv{RFrFm_PG{I~ryrT2yHQO|)sOJF*yaol4V2 zEG?HD9N!OI_R^FXmsUMv-@(jA3c^?D>1krHtkh|-UZvFtQ;ZgJ#9e3i6+^_ zM7#&@iQfLg%liHN!i#XHO{Tp0^A}!=ENA#i@}h2wenva;C{;^nj?8dSPYatmTF_$* zL1|&M*t6HVM6v$*SNppN$NtC<|AWvvAStsTa^Mzbe7?cGgFG>|s6O`rT5?cjHArrP)rc1juj! zeboOD=lJ@I<|mQfSqs_>?_=cf<7(@4!`m0Nfn|-6+(JK z8~@Q)*tm}%W%9ak6W;QlPX@yDB zH|3X}3F117BC!^-wn;eInb#L^gztdfP^r|}Gg1}Em(eP(^+aql zAT<8ygA3c=@vPoFyhfp&)wYlNzmaDDZ@%M+XIn7Pj6(pa@Q4Knoi@1C@|Kzzu!A4^ zUMFCHp&6dd(-_-RUbdFo;%oQe`pxWxKD?qyIu+wBzvi z6&RDe?RKq%xItONBZbEAN-sdr+i?90&j$jZr)ulotosF2O}a5_2W(9l}d%RaHC>6aVt%VR+r z(Z0pUMps_UcYgbr{q0xZl1k>4nyEAu?Pw{{%2|EcwADa;ji-&#`tsFbn_pko)&=N) zEz3VyE>}~xZ*Z*wyYKcOT=D*9@z;y*KD~~o`$sFejP=T!%%IJ5SZ`dt&LB8OLLXcb z@hdiCSXja#O`R%*7tUpWn_^@d9{vz0Q~JyI1Aba>U0b>-#P zBFxJ~+1u?93cDfq>{2?pbMXk3E#rr=EDhy1(*hafx_C7(svmDa`+q?mxucPMcb0v> z-qFMJBC%d;0gOGq8E+mX$2bnbfO5O;{R468o?Us@kILuD$2WDEyDx`(&82V^nH9_C zI=NJub<0+@N9t$f`fU(;6<$9?pGoNy7{!Ikn#Jkas=O5ZObJ!-0@;dlfkGeXjE6@* z#@MO^?%KfSDWzyedq$PUc*8|{fU0BaCkA4rU~^6JGt8&L40%ACmHMZLXdH8(&=bC+ z{5tKdS4?0+bd?^pdypvWFl}M_8bYomC+dn*C;xy~sPt<*vm+^xe}5CB{N?p_^QVuJ z;yMcYrx1~6+V=2`@m!Ti3Z;FfdqXn>c>K&7}Za-n(5tFoBm#AiN^rUYGl>Y%f7_wT-X55u4G$0RC zy$3K~&xi3TNe8MfXdVwmbMQ~}9aGM|6l>n5<MA$wrfK=NI9jN>Ee*KaJzJ`teL;b&9F{^b+2Igd@21C z@vx$|DY|P_<1H+zcS?&tEg1fy#Cl;ehr1FyST0>+C3b1={u;)3Xttg8$XMs@#bpN7 zWe3)wuZn^sXJL~&{w&^GbAh{Qdh(agzZomnN-~ar0uC1t79#2L?vSygI5qp&%Vx0M z%T)-4rBf`{Z7|`tdKwpnv(=ScKlY8j{ZD z0KgCfK#xu^ip>s_m+`*um|98>^A*r5*FK5BC9*$so)64hNB-ia;T^RVAIMK5!;eoe zwXAkLJ59yu4vZhGIfKD)uM%w8FQ3vrD;>u@Eodq!1c@*QFXCB?lX}OQmCb`X*vB}# zC9V2qSX)n81NiPxnF8zYnNeM0k8N=iO2#vVl{Z~p7WIuw>J2|}4Kyn(;`nm*si-#6YzAtHi&}3{Q-KcB*{!X0nuuNB0oI=zK!_%Ry zQ)eoW>~-MPM7moBQTe6(!}n!v##SjMtJT&7nGa#He!_ZKrh|N%b172IGhz?cix_Wy z6nNYCvKqcVa(@?hHlGf{CI`tOq{VIyHcT6x^i3SRDV8gI_m2KW-%4Ifc0sc)IXD2t zjM8Ac$(>8S4>qe#o?pE+d*tzYdu-h4i|Vil$=63$Zyz;9OPP`i@z;$SZ)8?MsCXnd z9YQ&)4V^KmU50wl0))(bBUb&fV{Ydf{q~p!JUQm3Z|gSo1|^q5%Az9$amZRM5{A*B z;+V3R(N@Y#@>PLH#(Xu9LEanzvYzNnJbG@`tpI;hOvSTs8a3A&L~(Vsn|F7eN5xe! z2vShBv`{V;CQ%^FR1A81IheTSZKV>jhcVQPz+kpD9cD&iu*C-*J$7re>V}IeBEO2! z%oTM_IaGuP;fcFt{sy(31;*?LGrWCJrm`?J2Ob$R9~hPr=BX7T5z5d&fN*0WY*>gq zDL{_#x~LTT;4-9uglM1WlRjJeOP?j(X;6-(zMrc@B}RmfUBUn1|` z20N)HuNy@Kh6Zd*wJF*>*=_DvR1q1av<%5{WxGyBr4nvY>8LC$8b*LmzHt}r4I<+Z z8~{p@D~$Dcurmeq(#~hqGsZPuW5YHepB7Vf%x&%&%!Lk@qCuT8v33AV%9Y^)jUm?+ zh6T``Bv>+y&6y4rr$eu9;n4*+0KW_q$HzZua(CrJYLOw4Sf+e>s97J>h=P2p5@%=X z%F(%>CtQ**)lHy3Cdd_)jNgvg7U2LG=yD@N8ZgNGWjJWL(jWs3(@;tkOc+4h5}EE0 zK^qwKI3C*I%6QnGNf-;~B{Buug(g!NwE*aW74%*#w2BPzSw^ie-pP=4`cjJ>33 zxSP2>Q`UMaaT*1ihS-iVHV_eUI6#?<&LXC{zK!p$Eo@Z7 z7LCE3$mEWR6{SNdWEhslHo%AS!vZeF4F045H~?38gL-LyBa4Ro5qQ43yc2lFdeO~O z-IX(+q)I-scgsZiN`!^LXz`~dWDajsZzuH|Y*8YB5ogx90~ydx#48WDFiTjGj}5e_W~7i=0&T7j_-6pBY& zr6tP(XyJ|g7<~Fg9P&B=ve&ghZh*l~>iU7zf>7SV(L;q7w?0uMo~35LO%){OyZWFb zm!VnfP|0OzDmFQj5*1BC9av5kB_(mIQY}5nMZk5+G%7TL>Qh9GvXG2fa0@DO%OoTG zt5E4g6vHws%eBz-4Jr{d@l6-(_71ITDN~XvtyPt*Z*j-cAuc$^yb?yFkJ|uf$!WO` zCS@;ilxy+E-mHRtLO~tzw{-e$zZkDjSuLL)r(SU&i%FqV=_Ph5zP8jGH@reE7b*Zj z&%-U$k7*LK3+|)OZbDkCE-F_sFiA2_xT6LGna@@4VXS0pm0&;YE?{51d(n+Ay&7@2 z^31bpVc!}V-Wt(X2`Z^(FH<2?OO4f|ntkVLUACk$4+u&sIM%97+)zocy;xIwKPx{>3`W__|ZR^;yU2H6!aSC(2Hj)}M;=b-bi-{As<- zpc{d)!Cb4M7$0uy*Z}&wE|xYJi8Oe91assKE|K+|2@UR%5=5S+fWu8e=bA!%o5IqY zB3he37g@}=rcgP|t#6HCPnD8# zO|(>eYpD`!tvTFUcdoU;x3wv~wWYPSZKCzww^o{9TgTzHu5)cYzHNQ!Z3C@sLlbQy z-`ePccOM5S{*q4ypbGb{T3u$sZC7a9JL$W>0_&r2qLK+J6UUe!%tk zC4J-cqdy9tpOkJNL{$~R`Xz{E$dCG^eK5?-z`wSqdpU~0)+MlX2{GETa}aF;x2Ile&A4^pxT+IyuN>r1 zZEsI=3FVVK?+*an0!G)iepWrPn+#m%;F z+uPGO;q5*orZ0+J`A2r3zlanJf_Kt(nt_>!KW7Nt*`6vjP6sg^-El}sgAS>}f*prc z?im(1AvgTEk;?22hw8XQmYHbizHNt;%JxB2?dyN%koxD_Q|g}j>5G0K^w;y&Bg8x< z>~9aEkKTeOPIoZ9tmRy5B>SBVs&3_BE!OSrsp=yTFD|yNy5UTRo(#o<>1FjfJ>Zur zj-~3p9q6ypqLX~}kZ5`3BUQ(D)WeZ(AzvNGe$we0nfqed{#bsOrH|3OZp*txio`m(g-K+W9SD)BT>2CUI;0Mg z_CIi{^;7(%?6cRQ4@!J_B zhSdo(P{oQosS^2%Z{OTytJ7bBJxpNLZWUUwUs4a)r(Q73$rU5=8Dqkx)lRG3!uNS0 zG||b?Yr!tJ;!A`z6Cr``_J|{Be0?vW(}B_tgOXgWIe-yQwbT&SHyR@A3v#H!bLTd zkkvdDaa8NmokEkBvZwp?O&n?xsufaYon?-PCI*O+SAwLj9v`xdaY`;8#mG3GS#QxHu&_|KQkHqIOrH~*1| z%b3$c%OOzkrNzy5a^^yRGeDgN@EnnRpaF`GB8RM8R#6C(f@=YZHgjBA^KkwHK!ETl z9^89($?MY(qx@#!{$6iR>hhrdH*vsKFHJpSUpPyC0ET~_BzNIsggpc0(!MH~bjjQF zd}l?&BE8PzWeD*NRUoSR#+F$ zf#q;>J1d?_Y`eS;&cZ&N!lwQ``n<5CM8B2-5I^4uAZINiw~z;c%xM^_HLl#01n}Jd zzDHIZk1Ri6TVGc2NQO@p(_e@e*M1kYO9{_tzs}P%whP9@6K9w!k!)x&JtvCp7&?v& zYTmsrBHn|A=+)h+TV`<*REZmJx#ekCd$SXXt}*_Mz%vK&p^T5PBSox<>?aetZ4bAD zZmNKU=vORm9~Q-R>i`kCXdS?T5TD}{!0Cg5B3*fzc*F2K{B&)pLi2Mk3{yIc7PO_H zuHg)8B;kv9`w1`_Xt$#MZnqK&5I*cN5_xG-TvZ{zd-q4U*bsO%#kI4zP&@dV(qF!k zPwhASMAL5Bj5{GMit)$lh)ZiCbuDwZxQ>6_o6-u8*wt8@r5RppYRa6s@4<6Drh+|* z*8+wCn@R{e7%;k3rut)#< zgXsUIL&`%-v`4q#WAycsm%E>F^=Zcx$0bY}OEPO5`kqF0i>u8z`TKwXwmk#jfUqAn z^^Xb5T!K1blt*|Nz+$PI!`@DUB>s6oIF%uHv82qNRKN+yx$OR9|BBpMDU+<0Kdjt; zb4(dDUVR~Ya(_znelh~u`ul)jc@esX!%0S@vS*2IcR_ADrk>S9h~fBMC(Oo!~|-R?3`DbPHwS- zwy4JKAVHKSj{|6-{)+*@ZGVTJScXT$+aik9t3L7kB-P_oDni--#G9xlDpe0{%`TMH zy{%}syU+WWJRROyo2ff?|TeC_s0n#a`jE{LxJcg zjP=kjPm_&y?bRFumO~^E=UXE*U%8cgTk7!3 zT7vS^HTKO}+v4?IaKu2B@B+L;!=Lu@`be1nfe;b0-=qT~b@03rJYGqFg-oKT3d%0{ zBTbufEvu+gizG&paiSauGI_c}Iks2$CMGB(enLm*nraXi>s5KRu(hoqcWoho1q<~0 zxaP*kQva$B52XJ^_9J{p#EkXBcfkQpi38mq&peDEGUxp_tpL9b2w)eax^>ts<~h7E z1OOk|Keht+K*hH~l^SugU{{xQxVZW8qgOs9Fg$xAfyE(Kr?ZcOQqZH==JbN!B-$a7C}eDG>yK;eMPKe z35K%1gb=e{DNY%(JIOBz08RdIhPRS{IvUtVhW~Nl$QuljEYqrV+W-*@U6c~{51Jts z&}2~qX@*N&8BX2lQj!s96a2re6V)MOG#)2bXg>@XEhgvLbmeC9bt3Q}xP}ITYrGgx zHX=;hlSu%z>C%u7Tf!b{)Vo&Mqk5ui^tojE}#x8jW%mlDhcBf$-Ui)s835fsz8u#FKC> zB)?f#$w>Nn9yLw&f@vISUk;-P3C~mQ70jdqL^99kaE_e0_IR`Z&jZ4tr~60M+K~s5 znn**}PQemfi0-6Gf5>8xD3l$kr4zsrMCg*xkF%EF_Z(Y9t4>u^rYj1+FKaJCN=vK7 zSt&C{l085Rb#zz%k-uqs{$EagUIPHnzbSl+-xdBJ9`L*!h0pO{6h0fM z@EQKB@P+?P;eQBkSN$&vpZf0#U-e%KU*%s4fA$Ou@CSu2s{jA7!vF07r;=F4RvzU9 zN|s1F26xO+LnDvMzRgcOyPbiu0r_M*WzHa+8{%03Z;n!US75-0u)b?GS_W!W=9zabs?6&Yufi%hvU1}&wix3nA zQ7|-V0uhlWYCseV3Md`agib&Rh>D0BkX{2QHk44MsT37ZRKNmQ5D)<==5Ext`+nc| zp8uXZXZ|@enaoZMdn1|2leL~zDokXcb%U28Q?0@T$I%9gC#QO7rYo(8mBn?NS2tj@ z9~j>?H-11Kd4-tncdAWE?(rMmak{5hk82=P?__Ovd!Bka?_yxjNJTH`jd}Bk62DW)#O^twq9CweA5Bu z3tiQ0pySS_(V|Pb^JBuPAtp0z8+GO%J@wx5b#7jgyLqq%_*!s6Q<4hf?^QG_3yrPI&Mao~#zmpk}_lba>uxHryn@1{M*^03>$D$6CqB7kt@$EqyKfUJ@ zz2?f`{PVN*PoJ@4lwS^7bDX_gT#a%n+{U-O3fj7$o+j2We1 z&O)0K>{6!`Uw2tvH!}?agbG0#+MIv@!^i@cQ}=XPHe>9x;V4fZXbtAW07&20V3Fsv zEkly{WR_&Z3a|50m z$3HGFc8ox)qG;i)+lPdoxWf!SuhX`L3_;sRILlq!IvkmRm;xui%48fBEl?s1L3KGF z3ZkOGU5r3hwREFnF<{;0jZb%*Yih;tHyds*1YpDs>@F=fEsk`x6Ll&QYmY{Xrhvvg zB3khdUUtZGf*}Dtz-vRXyI^?Qd5fy^L&GU5g28N5-CG;yyOfvhz*UuBUFHEJ zRXvS%@VdcY>Jzh6<~(z~+4`?#&NDZA@0A8zYkM{Z<&zEYm;GPPCwqVCk?-|wvR{1) zjfg{AlCL*p>S-}H<_w7j7B*@;7fBcv`QDa*03Z+wgFqr8~(Ct3~q1`_Np&>s3p&tu=20|783_>w~1)=nxfKb+7K&ajyL8!wYK&Z=~Kxq2^ zdk}iZb8D37CTNC5EIaZbH{*E(1VVq+_(C(xY0YB(?=m*i&l9WuuV{R`3g92BH@8}S zylwUb^6?tIZTncGKZhIVtio;{uU#&gFkUCA);?Y@pvO1S09bCGX#D7$Fwr!yzkTBF zL^yF(s4O(YyrCI(Y(b@2TS;Hs>{h!G~Sf$@nOxj63gsF{at7Ido`@@uZr)hnXAiw;&no=O?^+D z%uLR~o(nV2!gINBjxztV4Y|+41m`f%a2SmhgHbw(qAwF?ZlHkJdQ9-EG^j8ds`-Hm zqggQ;b0gVjp~C3=ywZPB0=i=*u<*7{@KVU@rt^tm&qQz_F=^j^2x(dp*k* zr^5s|i!%c+LoH`to%R0uWh4*E!hL^@OOaCK^Q%X(Sc6~NS4yNJ&@(R=Vkp^Y7J%s8 zn8EKuNSPrI%7%p^$)hdPt?EEMZE9wa_eRN$C4_icKvpiPN z$tdvxB}xU!!@C__4m$%EQEhNj-D_?feUcPS5^)pc$^~#_{W!S1@klTxmW_ZC=u3cF zf~7A*jkklb*|iroPlh|E)uQtVrV{l*jYQe@2*)X;{3-&@bSWsFG9&?EE}@m)mKU2Z zD{pqgntD<3WgvhiQxJkdWC4$2s*Jp!nQC&KupAOlI^YxSOd|{Cp=k;dS~P)XASHg` ztb~4NoR$}W+?Wp|h5%?MCRMB=pSHq=6ifLE0qA{=s=q>{+$Rrn8IBM{sxV(s>a|YO zwQ)#DN}_>?)B+sa;i8qg8LB(AaAN)RbMuTS-F4+r{18t&9M-6AO2P$HRh}8BKC8P2 z59O?oc>&5(buz%k9iLn+D&%Cc;p6G{lFT6iDOQBRVxO&3LM=~<#K@fy2gsK~W&xn# zMr}2?AvnOFN69reQ|t7*tsojfs*{6J8OQexc@y*Ditbun=^B;UZ?G%WW(i0T*`209 zGv%G`z^1DS=Y0y{QJW?KV%0RHf-W89RgMl}h!j|qm`Em2Bh?xV1)NEU2)C@RoaX8V$Fza*tTA*nv6FT`_jr^%#FK)nd-^F#j~0zOvX|ysfus zshaNOKdkwIGBz#$vy9Edk2REcY~6D0X7){u0MndjAHokDer_rnRDbZ z|B__+E64fIA(F_yg-G}QW(j)WUqGa@KZQt6e}zb+KZQu?KZ8gGKY>WXKZ8h`e}PEc zKSQMEzd|IV-yo9HZxG4d;g1l>=Km2y`YXrTB#Kc=wm+~xJ8kcQM@p%Xg=Bep^xP$4 zWh^8;He3pR$jO4ni%KmQ{;v32gtJo%0n?kgpdoTOc$DIr0%2#XN~}O_G5dWbewxyq9TKINLAXvLdfv zs#Wb;zhs++x?Wqm_Fb<}hqZgcz9m_HdO$|4ge)ZD-yqV;OT-G54}PwjH{RQ~aWQP! z)rSnbL;l@P8!f#bIqrPse|fd1>U8fuTmOJ3Ucy%cpcXkudhGYDjAyuHW~pQP!^{gB zN&{+<6F)pV7^_@5I|OAm&%R`uLDJ(?$HQM%>~|!XBi2#Gk$6Qn z-rgLJ+W(7SFZ`QeZ|4M7I@i|~ihEXVXG2{c0P0)#!4|ln0~s>9Amx-trLkX=EjMp9 zMNyXWplL}!^EtJ-!SMC3+EeZrzFwZA6mR841pz1z+9~S$mM_S3qZ8F~<0`Y$MPVtZ zb+ypQfCK4ijq2tk9A5jV*dhoc9=jn;<*l?ZOfV(*5D;_~VI&(+*4+Y`8Z#lVqM)-6(XWjU^pY7_Q#GII-KM4eI#@ov-x%JGw;7U3h&-rL$-qq zbm&_3h;>;=Puuh9x6O>PMyG#4DQ%n0a&!v5u&eA@O8wl;w zZY}N8PAu)y%$D|PtC#j^AEA93#cbv0hxSlv@}qAy7uUc;?$_DHLZv+(INoVBfW^%9Om5IwZo$m+ltk+e^}WZ#u>+^DrMZK#I?qMr63r4t zUqN5epjq?ppv+rhMU6q*-_UUgQZu zi5y6XNe2_C<8K1-uvOzG0;w!s9kd~K=eWhPS1hzy+D5_SYzui2*&7bm>z>p3#TG~I zerP_uUh=*|^tGc=>gLVHv**Smtt{QfxlYYS;^F);mFz*jJ-+Le-m+sT#213}G$nbV zve;@|&loemQEECOc5_0O#A{_{-j-xD2WeTcz@El_U%Z(0f&%`o`Q5kH6A7CvcMH{D zuXE}j+g2IW_>md3-Y}rk(MQRVPh7QLPfsW$ut70-YM=2Dype!66S3m856W;lkr|Fe z%DR-t>aeop+_rjbbTy1I)SgUcYwuKAuBxQ3k?cAMM3Vwk`8+lliyaraXwU#V83q|h z@@PCaZl)#eW*f`-B;;sE=~%hITh4?c_i8+qPdXg1HI5_oM*F?IU|=yMIdRWj{duBw z|IJf@kFMk4@wk-^C2bFTBTjiHkMyk%ebXgWsB5ZD8N?n_F<#c)%e#t7NpfnS zOZ4?Nt@6=pch8NGxFmtpDuyNQ<#51hU0$s;`EH4R#W=aeedeZmN-2{9@i+RT9D-qd zN0s~~zfgG;Zl>G&jzowi4m7Tw8|`*`6(Q3=yGyh&Jn5%hnO1b&%+aluk$>lCp*?@f zw!oNe)P&tKF+0pQkkSS32-HiD#~w6rkY_-Dsf;FMlj2*g1UDZ;flqAIZs%G?X=zs3 zah_2!QKDCt-yx92XGW4WbaCLux{KWlTOmxxC;IbU2IrVOM3pDq?Tm2I&s4M3VV#fq z-@X*BAQ9EJ7P-*bRae)9lt}IR!f-vDRrZPzbu{o`Vi153m`jUVK`VD~-zz2(LWwbW zg%|W7T|PI0KJ0f-e(hUJVRoRIQ0^c6zxA<#s*)VY%_ z`zh-Yu!+x|nGmFOTIS2FyJO(KA>nwfMzxE{0luC?;x~;%OM*oC>rFKrsuB1(7I75^ z*6irxELNh@s4qLnNSssSCLHpsP|TEmEn&Sb@kab=DPdKHJWwlm95g2NyBTZT4KMS2 zG%WdA+DfnIi%H;{9jAP+Z9e$fSR`@ZCQ^`F0^LS3u+ziOUS@Gb$TTGWLvf~$Td!bO z$X3}os%If$T|6b;rLbt_nv*ui8cEMf--_N$6JR4TGu+ z&eFFn)=OnP4p+;GS$wZ0x&6s9%c}9>dmr@Q1jp0|1YFCUJ>*kAEIPh-Wp%;ru@Lo+ zXOfI-)#dv?9&ZzRv8?Nw;hU2iPe@6p07*;^&d6t4W?`_|N|zxiFu@SF9g=u;tx+e@ zS9nXPvx>XAq>P)!U$h|=o`0jj zeR@w$`{Q*OS+sy0rFsUkxvXCtr6k>am}ld^WOK=GzWKNavblsVzM~4>>e*sAT@NFV z7<*Hy+wwnGK{gkkq+9*NHZwQtp9woDM=8I*KXYe(@gq%e!?UwCkpE5L19sOgHROZY zCe&Av&q!YCa&%F?A%O`q9Q2+J$=Me&tu&FHD+i$no2HE+@8eK%u zR2^*R@2uW|S1{*6^THTU=D*Gyzq_EC_;n73KYXkbb!T$$IZCLxj&Bp^=G0l+MM%XA zT?UvesR?TqRzOrxkX(#NW^D7W3-cqp^rtIp7N>fSf6V<6FGeFHSB*pQVuawC`AZX4 z*N(%Fgdvi{xMxFxVz5jK!jps}uuwT55YIs)*sxU;EGms&8yEyf6Obw(Z$AADl=l10 z3R3}DVF(%kfLluYC7~r$!nGv=VZC(j1iivBFs~yb)G^}dwI2?ci8Jd9$FZ7Jltk|d zvU!9~Y{W!nguFyx_e`X(IA$5)o9ktq_}%rAOE4!=QMZR9ozm!ARH8l_Mr}y*XAWch z%wrC!V4Rt-ORSxA6F83+PN4(kJQHzHCH&Ax^aohXG4bGF&zMxMI2MXrU7hC7qQu=c z!!7{9*OsR!~wWn!yZ2!D+m38k9<$(3R$&OT(rt zHQ=GIDZ**9>fvPIun*>iQ^cT3;&a19hal`WDvm+HLdAEgBp{iTba)t}!G3 z&R?o8+3^}=+u_Y&qc<_(8Z4d+GB$#Sh-4yHbs$99fDQ@0(}(Bu2*zogCwClkl#N(E zfbi--u*P}U0$64LnM-XW1A!AB8?7kul=qz(y$bn!;sERnl_^02TK3~^4`UuI!&a zG1hss4rQeE0Ix5F$Ag1@UvTc@jnoe_0iSLp%M#!U9QbNWtTGwCu^CgvK?YHAds%_m zJ}KD%7Iz>{@Bq#X#Cne+;1ujmTBdUz5<$SOpa42Fgf0nQHGt}(;$+7WUOpJT8-DrY z7^q}0oQyur!bGysY0j5XBNuh%r1>4ACYPm8?Z=&@1-cAll$cN?VQ8xKRYO3&Z~@V9o$J^3+oondlghdG@*=gMwkjVq1dHkYlXGv1nwvq^OE#+lj?%7`Xs=EhT2TUZ6~ldT4CY)lVU@Yf&;OZ!`D~hZX~ZSJEa~pmloI3 zd*ZBma6nsjvJb*$JItDcVO1iwmw!QH2mX}CcKj=iJ^WJ|JLD%c_Q(96(AfB&(b&p= zp|NNFOk-dFD~)aN8;x!L8;z~-M;d#``u{bJE&0MuP3`T-Q>vbPd`l6cu@5RP(bx(Q zjm-y*4e>B}h{k?TfN1OmIf%xVmV;<)qAWyXOUpnscDpo0W4B8|G z-;#c6*Y5H9bWeA<_|yHi7I(D=2><{=QnyXP8dL*fEx9i>Dh|Q=0@$Ock8{|Rwi((t>S^ko>7Cx zhv%7{pppPEht9Snj=xW=T=QH)qqgH z?a`xn>H%iJ zh;Nd>t;+-+Omj5ITDDzGf&=m=dY5!H}_aTI=+LLX^TqDCufWTp1+#iBz+< zHy;3bOGXP+=-rHwhYA-58f4VSs4gD=d?!%^E>%x$k6N~{%r59Spt^L;9JMVnS#NL*!L|w7j>{ zAz5Bd_#?&uQkLB)Pm=>Fh`!*O2ff$g2{3X!&p;JKy}7}17^=jpawef zI`HPvcIz(q%rv2PL}*_yztL9ojAar!w^rHIh z%5tygm5P3IgsgM1PQ+N3Zr~cq)oVv?TIQ5S|<<#Z=%&DXP%Bi3D38zl|3#Y#JkDR*Q zA2@aAKXK}3{<}H#U-!3q1o#OkE9$bk8YFQo)S4T~Nw)i)#Pvr7Z}fBo6agqHYW2(D z6LPq>6alDi#(ob~@Zt|$wl3p{9V}jwxH1awt_}S~;yNeUR#Z6v`B(od5?ARwHE4gk z92$J>O3>g7Q(78)O3>izSA+&1Q4tz^t_slLE0%`_-+KbIzvUyeY200qZC};HCwp)0 zFj3~d-b}yr0|V4OsScy>``e|M|E1`t-#B%X`;*wmuH8BQJ=FTo{=FW7YXbWA?LK|z ziPv_2XnzYWar^ynpIaaM|Hu2=Upe)fT-eQltRw;5=ehGIL*5o&8=Hgr5bkW-*xo9j z^P#HS+G~vZq8z&Re2?@>dWh?xtuMXV~=1i_Dm! zfghu2Z)~ITVXa+^UO>@B9sp@9UfFS)bmaBA)rpKy-E};G9t@zMl_C+Nk+S-*ILQn* zF+xYZDx8Jh#K%IcQZbeJpsTj>VnYh=x+vvlHVj-~@v@A79<`JC_ zQ1Sq1ik7uWVgOl$H&ey%3IViPnqZ_iIP-A^{|H@}vf~{~ER%Av&J7_=H#S6rj0mrx z5V6cYm67j5Yp4#p2e`g}yU#VNsnFdnih6ugrm6e*YA{8~F_-7}}S z9)-N??yA)|V1wk$tq&_TZ*<+NvzslK@2|`an`wLTb#A5x5MVpdo%R$?)!^PVN zcyXf<7qRGX?YO_&^WOZ&GwDaL!r$92^8e0u@hw>4Z)_JjKLuky4OaM>?LzNoVC;La z!XIrHOTh|%v0eN$SmBShi+>WV@O#_E(Ep%d1!%kb4}ulYe+*Xmug20IDSQ9UJ9+V| zI*ADr^cqj(kt=4Oglre2c*u646${xeCZZtQMR~-M?c&5zutFGQyQm0SlC1hclGRm5 zmx2|%muwdYmuwgJe~mNzMN_milgx(W)U3@uJnpu0ye<03!Sj&lW0ydg)5>{4D+9Jr zlMYQ&PGpo++3qj<2^jk~nxao52bcD|5E%PA$*RCQV^9xyRS2Tjq)PadZ_HO?6?o4< zKFr&nG9IWENu&ypW*@HR19pgbR}ukjWBv)`X`|aydY|q?l2w!yWTTAycvRi(#Le4Z z)}!jbKKLjx|8-$%7Zx}C`TI=z2swB8SOCiWk24AMo(*LomCb9h&`gqOhxWY9wc$)7 zg4}z;Z377-d?HgsMSJj89WP+Z8jn)*I;#x$FvRPaky@J_1@#Egl2Fgb^7hQ@ToL(j z2O1S*&1UjP1r^(+Dumib#`6ErsjexO2T~Ca^UDB!MpgBuARsLp{2uV7- z*apT}_Z|QY#@h{#lZ+$A5r9!M2SBqUB%7D2=}j>nc&M8GB{G7eB(r8&!PWto!WQIf z6w(f>2@pj1Mv(w7iMAC~fXM_!X~PIO=k~e)O?HIFt!Arjz8s;Pv`8|u&nTJ(2Q-?= z1P{pem+dZ=4{(%sx-lHv!+DN^9y)HzC!xj_I2u1%zn9mCZrflaTnTv#0YbR5c4`RS zTtR0BqYgtJm0!h@m)c3iExS^ez67vL)Vj73$#|h0l~S>8h9*GHxEKU8qOsBR_w@n@ zCc@l8ugf`s&J)kcwmiEA*dnbYjOeV#@X}(Pb*BoJD(#@K@v6MR7|85s_yUPsD{4eGb2PhYX`EIj$cefQ0| z@ZCON{g21M|JvvO*FOJ0(mwwiH2ER-`S7`i8nd!0sj^vby6@=elhaRp3hqrm-Eo6| zrr)W>dgj^IzLPW0jYqlnW?mS4;s00C(qEy;pPUQvcj_Q$;`kxt=kB{P&4l(k<{FVor z%(eHZtC{*8XKhb(6@pP@cSG4xb?i1}uqYCCjh6l0lgTyIvc}_Jc*_H_a z=XIl$kQJD{YqJvxy#U&d65%{GAXutWOSG4VS!WQyF#8p3gDs#O`qdd=ykU-)#w5Qd z1LcHBXzj^WzuMC3ubF1N{1K)E7C9jwPas29aWt$M`;C(`*s@lvoz6tw6WwiT$P4Jg zfrWi^qvM1~K8k(Tx9A$SopT%kq_mG*TY?3}f=CUfVc*_CD=5c3k4=t33T(liJAM!t zTa8wEJ`Mm#n!uiSqqc@5+!Bo00zs|H-3`q$GX!Xv6*|dbEE>U^#iJ;HsPh`FkGkjCm&3>wflvXy4vE z>(j)%!VdxV`)XDOQoJ4<(xLP`|4$7FzfFlx1)E0bNj7sYo?g5k__pvnf%OxQ_6dW{ z2DMvDlE_IAPSDy}y(R2nme1nC@BD53fgd5T@J$r@JAd1fDD zF!MKHVTr&Rh=sc7?aU#tkcv|!rWuADVnYNnqwlUKeeQ4*XF9PulAA}*E;ev3_&i`QP`zM~kSc4YS$IvvGR!`h0 z`-^w!w~vnBTVq359H=(p?P_Dh{Jrj8#SX>F2N||wYsx0|{x06(o1T2h8hc6k)f2(? zV}JkAG1cR}aUuIv8F#Tiq{|q!bG$)yR)@GXtxn;4LLnMphSO?S5lkn0VuXMJzD-c+ zn=IOJi|-I!Hz-!szz|$J1t>_1pkW?R!nleNUh1J7YHP3IHkl3rLfTyQA{n4aXA7%? zG>~hQk9J0L5DMS+sVKV!Qp}pjM=Qiu(I})r0wSo^fM6KD8frWZC7S{wPz~GCYE_qq z|8lRoFhL1GNC3D4Ks;18E-Gdph1B*9C#Qy=C~3dqwkGvUA`2;##y;p>VgQmQ05a{TTV7%$qXA|)t* zklmIEeTy@Q+*969rUA`R$jhuOz{KE|)~R(wF(@`7ZVizm(7d2PB(tz!vpb&#rGa?a zf@qOo2#=>_paJ&%T|ylGvxH%Gt}~W`9zsbuApwEeAdGWRIFGGUgYN4uMGK1)!XdLT zboAPIaVAStsso{nkt9ZZO%@JjUN$yeDqJ(dQ?m2RM!uNYksy^SXe9h(oR^qj$Wq`D z+i0W3K?NA$>1d?9iZ8~9=$@tZS=5?GfwRE#+3B=MGobI*a#<{1Zb8@X_lwByX#e^@ z{xJSuBk7Mc-T&!E(jVrY{borhpC6UhKm?Ad(V?8kDLyE_-szWHQep-I3cnY*nRfz6gYqSF#gR*8eRim_vpOM z*Q>A2=XPPVF8E6FAMdINurDVA>H9`j5uij3I+YdDObF#Eke4-H@eDiRI@&|E-< z0Gfj^S_E2H&9#}GSsw!`T4tD+XEnx4tUl1+Tz>g(62X`uZBYRwaj9%Abp5S-xPoe! z{^uyo&dcVfhP*ge3SbD`O9tC4uNFQkGRcI;g5Bh;Nw!jcsfD6NOAS})UQ~inUx_PB zTeOXI*!41Ap<{8~Ou^H9UV-XuR!dpixZ719B&!sk-i}p-vbL9HJ-!wq$cU;YX+CN{ zU8^Qw4V4d{3*pxJ>7DsN?`H3A6FZ)(`7K~^&+i? zyP%?xuCmST5bqjblZhM*xcR(H;M_~@4x$M50V1k+wI3io2;+JCa=Yz^>03{ELvE*M z8@*QKMmRM0;CTQEr2)F$het0&QCsj-OA!+lx5&iTQJ0PlZk!l4*z z5XkE!lO$^nj4D$5qR)@OIZhNh`nKhQ?S%}lKI^x0kfx-iEWy?c|H zJo<0^+>K&i0fwngVs9c-BwxL*KV!L;6q)R7gIo^Sf&Q-Nyh2O}fTi@*3QHsSIKj+@ zl9}x&2bSk(qZ-%b+Ez+y?>Vn=;T#2wU3=hk3X~>H!CSs%i^3Utg(9M7#_~t=&d5wj z@&bg;u1G#GNZBk^?b;qbbSHN}HNV1|yeSjqYxu6z(6l4m6}2)~32>V%OigTBajRoz zuEG^H3!~h(c(@~c9A+dSO@oU{2|NW6fK#EDTh)->*bTAIs4gM8%^pN~y1bG`nPYar zo8po1*7pTQcFlNJ{o8?tV-^AP;Pp>$4vHc7jtpPT+)!Q z{&1RCE?Hh(t7Kl!%Clx*PJE0rYs%5EXCIduYjM)b02_2?7Lq+Jr|*hlZ6Z0MqA7D3 zggchI&mD zlFnPB{1Lwu0KQ%~^1Z5ZMnJq$Nz@2=fK0#A7Tox-FLMvP)$n{+Mcm|wRFcP5Gf7UZ z;Re#Pm+_-L-uO>0rv>nzj@)hxv1DigQD~*is$R1-)9RK)A&Hzb7d$k;1%W^YTQsF1 z!9p@_*{qVg{BtiRoj`2yCC!3mkp!Fgh?YS2CIhia%}7#$JRp5t3|+-MCikkD$2hAt z!H=S|icdk1yUfTaCg}B=>fjda$|-$u1KU_}Ra)j=4?G$WU`%9Yq7U_&EYOtw%!cF_ zNt5+tw~2&pibJN=*RG{WG>~~G6ofCuZi-7YXNZmLFeQ>3^#sh~#a?BJ*97X26nuhr zSDPgWP@FP*`{^~L+g;qQ>@}$c;itC<*ww^{LMLP!E0K# zsimlw_~j5iEv#f4E6(5tL1&+qww-eode;_mNHG@eS0siBw5iw6U9?-MqMy!nB;-2p z%x8K$KC=2qtu-m9<=)|t?&S}!yjioR+ak*A)A^Cjd3xQ=B2Lckq7Ou(LaWcF`9Jw| zakd|QUBibP;RtXpb*A!c;3wA~ee;QhzUmo!Qx#e;!39OGXBi4xb}|eq_nZkb&1_%Z z?ws~c=<}6)bF-T^PK3zIHIY0-Ni1#K6dp<(E!ga7xmBX#VfOti*4BZo-4~zOivb+f z&G&BD7|u=QH%yI?ycx{e29dLyObhKp3+&xit;w^#Q0Q1kcT6S?gInuPYDDQ>KK^11ZVk#~A8v9udv=rS5VF{?WLzB7;t+j^c!T}m<8 z+2}e$j`UEDN8fdsu6VfLL=o&t@^%odWbv=`C*tEGt{Yv+w=OvlzBSi>7=S z-jc*UAOf5wwXFyUz4K^p`kHRvrZsx!IZq@5#8R49I&6RewjNnG9`Ka<<;ABsGZiD7 z9_?GM?RJI|G;`~DPHE8HTOiHFL-c7!lV|tYXU<+d#GF`fRgTs3xm6DNs>wX-3MX7% zU!A$_lw3x$a(e+sh}Fo}7RZPV#U2WKS#qVMB;bbB0PJoLM`Evf`1%SgTHQk&<;LUt zZe|yDS7V*{eKw=zrd#3_UHK3Dc!0Nfx2HFI8XOF@=#K5X3y#Bu)#yCF&iHtqQk}?) z)Wb<<+dWP$%qmT0L^0*_>TEKV90CNw&4&bk2*qB2k?_vr0vxSz*EyBIO&{{HK^8{sRi zWCwfg6SrN~ZtqZ#`(^V}GgL?y>%LEpPL|!~6T#i*_p&a*WJW2s<{lM9t}gbpez&Rh z=Hu)4{rS90-tC-s39kNnl^s)}T@MHDHrP~E*iO5=)R^z<$Q3Q!nc2C;Z2n2_COmm- z@`uBr^G^rSn2xPP9~qgZOK5P3sS*C&a&cDbG!cZLv5kazf4hHOsis$nO4RD-#B2 ze~fK&+xaQZ=ln3CyvlgfMT7XG)x+6+M&_}Jez6oO;0QpIOt+EL0c4)#U0ik15&z7Z zZPZ*ms|UCyV;zdKM9ER6>JEb>$En?7rTa{Ycf35U)k8YX4Aib-Z2TLXTt~<6hdh>n z#T>9l0OvbCsoBvzfyiT3mkANFVj}@STAQeUS;hI4nttc(wu^=aI=xul{pE;`pJ-9X zUBj@>1P|#3!80|Xk3ahg?o`?>IZa(}DB)Olsn4x6!HSUr_|)j-jqRJPHjZ^a zfXe|SUf`8{QiQqj=Rikoqp9-5g8)aijI*D+QRu>cYgEl_hRpHFo?UM=p9V=)12h9_ zIcFUJ$l7V3))d2lbHfobs0n_6EC{tbmj;5PEU+B_zEC$7a>Cw=)2|F2m*N5Lvjpcz z$9p{mD+hQQSp4vPysLQCpR@Vyk_7vyp(7nM42&OzN4yC6dzxz%Mm^fR(Y`=XhUpeDrKr9;1XSnA0q+j&@Sa6CWfSM3^I4p3B#+xSL(8!_napErK zgA+c{)<+rA%i~`voDA+}|}zo<9y8nC~b%M7;%U4 z)BG(edr+`rOvFiy;mMZpqyxK8&gok9<%5g8hu?hWt4agEu=jTOL?7*?wF3w(fbR)Y zu-B6rypN7H7|p)1qWsRus~(xdWg`FJ)H%Hp@qFhK;prN~vUFSuE@k6t0r6 zJBf|S;*ySgD{rqn4SKJ^O(KEH#{KP0$x$iTul6dT;!L@|)N=Ww<#)m5syLDS5ZRpl z*DJ8;k12)90i~2}`h8$Am|6s;<~Aok9!WjWqIlftz#=teaU5F+2AJmB*Tw7)6bs0m zK4V{STyRT_{_dnO_L-Lo=;+|I=>0xnER^4yGd^EvSsZK=Phh^!*>fxQgksKaXz|?U zaH!#0a_MXD6Xdk)0@=;Z>G`Vr^UkFg2k$NFOJ~RJDO+~_O3UubKC3XN^Ea0*yVhcL zbp2rko0lcrE%3uW6t;~=S%&;m#i$(MweN>+wU`X zLE>`%qq|xl&oi(lMS$c)W%EI+G!E{S{aUnjg zsz~=#F;TumAux%qTM)E7*4DB_Srni4W=jkU^rfNVHsON^yFD99R5MFQgo}IBiYlLg zPqCMU4e5;yrONcOmY1dFSj$E=hbN5UDK-4Gnh;SnbyaqmY$jV>%_>_`u3}#jKr#?> z6ToQ2037~&05?W377dZ$d&(}FV&|SK*c1$=5wPAN_-;4L4Scxw|h5ZHXppO1?L16!)kJ1vbUt4AH z@=9HBRbNQ)frAy#T<|6m=g86E>hqXm92%}x;0wv!W%Qap;`#yD)$n37MHUy-374c!W9Z3zZUU}2;PE)$1J+HH+ck{*jnRl3 z`v-59y-SY{wL3d}+$c_+U)13wEd)akkbNB$y(R?(vn}g5WwLBtL%diMH?(@s+FKbt z;5*UOV(Z3%s^-m9&wzw8&TO9G!M=xMXZ`XoCek zW-}jPQ>)Y;rI)qGmDWo~avZfA2~VGAoGOC<+e0Gw{{z~(31&LrN=aNV3A2Ig`Op(gGY zwP%!swe}vwuDW~Zifda_a9g7ZHu()kpu6o3Uj}FM=DIMfMF2!Lv}c}f4_Ci8GTG9V z>ds%h=b`k~ryDdLOI!DD-uH}H@iK$>g3nrYMSFz9ef8G+)kp3>NWEY3COwt!{8+X6 zxa;Q0>ieJj(`UlG#pK)HzPFs;e0i}woy({8r5y}k`=HRi!}m-?bMXUtO`S&)N34J@fcmU1K~A*@l}W8fV7j( zT<^6%RQ=Gmp7+s)dsn{9Gepsrxfhn_>pzG%2418hq4|#n2rxtk0#yso@j>AY%Z1~? zjXo<;nSR^&vDPGj1!6=gFe4@$@Zrs2y#T{v)PaJ7W;!&ov}0UCxyg7ON0JeK;cl`n+PBLOygA_^hI^2njMpo{u& zna}kn`}k~xiz*SIQpSVlMzG~tI6I3TjAOW1I)(*>mR*Czl=T{wOS^0(u_r#e1^ z026_sBPu^*We?kB47@OxRn$G+&YpfbrS4b24?xy`#Ipk^8!Uo_uj9jRA^!;{&_Ec?8KjAVG>KH8`9EgvXAYl3ku45RznY z@YX5#a+ejSOP_hkUMp$pJwg}&z_;l#``24yP_@yx!Dmz#EENar^Z}!H!jc65+)_*f zwttTXZ5DO2eMRlqNWF%gZ0UsqrSA_3jJ3J;ppsG9wC4-QK~EYu$N-6u>6;A^{BV6T zkO^Rs0)Qa-`B9m1)F3>D^cE$LAp38ZZafr8!ZH$NPA1jx#v{#?!F!g6}gl-q+)KA9zhF zKe*z-+t*>;t1W=tKmfdgkhaI6KkX-aReQ?4z2fg}mp$Q4?-<*&YO=mI+iv4$1>b?) zCkA$pbzN#2&CtM5)87qW_BguuSn;0VMULR*`=c9^_TF8K(=0;g6H>;WPmSB)<2zs* zX>WWrcWx}XpGTV!zxVK7&L?Gqo`WkpqEE~%kh|dbb{Mg;QSxxzJ>7A#Urt{9QYJOH zs&)iD2*>%NarYGud(V5u&y(n*=XrpQKA z=02WI5nQZK`a+m^gBru!^yQ0&m~L4$`SHb9qVnQO-_M`8i=Vx@ zsDAFWG54!r*6a)OsgJ(X^JT!Cwe&NtqSlx9)Bo9Vdf&)GKk-7UtY-}u%gTNq2|X+! z`C5#AI~%qQSB#DRYSl}`37`G(nnj(IW*JKPIL6%KR_yl+6<*65^orCvcWT|Y+ZS+g zqtK}bhoKXOgi7AuB=O_{>-fBD_M{fN-mx2t?V=6-*0prisi5vE~LlbzH1%d7wH z$w4nwc!=3ri=FHaxVbd0t@9tLED|&6Q)v=YO1Y z*5Nic{``Y)=l{bo?-{OD#*gQJJ%+C6c$77}WlV19N)@1$u2d%e$d%=^XGk?D+^=mJ^>?7AH%j5f7r*DN{ zI#^b(|8(o6@pmt#Dr)Z7KnFa-HBi6qsAftMcUE*_7P|j&+l7Y?e4q8N&Y7A66@)G%HPa3!dKZaf=|9{wf^Khv9{%!m-W5&J= z#=ebxXRIMK_Fc$UQAk1*(n4r#S(81KU3L;ew#F`7C`-2Ndxaz^`F%!R+kI{Kb>H9T z_dL&WJbyao7=Jh%=j;7C&+~Pj$ixe8!7r-*=0|b0i0&2eQSY6tN$Wt(zxKt{G0z+w1B-v1w4;oVo^~4MYO2M?M%~72vMI(=FT9{>?nibk3ue#Ja&l2KzgUnMsl$!e;DZ73RdXkVR)C6r`^LVb~nxJ+r&PHyHmjj|u0>Z;z3*MJ3~cM^4x0ILnbNt%UfI2XY4 zVduvAryrL3v-Q%I_m2>=5yX65gaB#|tJ5tJ2OP&6>%FQNZFm@xUP}QlkbT|h$DcLs zf7#{!_RbFr!LkDD4C$DOg$vXE#C-YF0nuzT9CYf-SnKOj>la$EWsj3zpK54U0=yt>TU)eE*kY{4GA_@ytkBg`8AG>+*7R7@q{Px0N{6Vc`fN86>_S^k!0d zkL=od1!Ca|qVkpbMX)7w#}hAU9(AgMQmnnLnNQT?si{vXdRKd*3yKq&2=9JZzdd|2 zqkdrt-Xs#VbqM2irP)SN)g#LhzG!vcBqBpP7n9;7BvpRm^v6oBWAMVrpu+n( z?5p`W)53xz=I+>L)4~T=3Ntels7vgwI-lW1TC{yO>kYnYbk6m{NvZ4R$`7BUUo5dY z{b_qRq(`Pyx9(!vY9XRw_M@X;1MS&QpGTg<6Ac1IMdp|bM%xL4A4lDBF+d5w?rIJy zPwXvrIMV&P&wB?HExu>tO0JdVKI9cL=^h)d-FZ@Wr^H1kY>e?>_*xaQ8UH1={PD^1 zg(_iK>E&Z%<1;2@HSJ0fZhAEn^VjH}_6?ytv%e%P`t{eodb{RX@#VO$heZ;XSFjMx znyP;^gWjkwrB+kE!G@O}-RRNFY9vq2i0586+tPS{z3FJIX_B4QxBXYX_qYS(-`>kC zoY(S|G7C3ht+`C#U>wNtpqluWV>7bxey~!|4EYP!7B(<5^9`XLW!Q~YSK-auhLN)s z1(s?emo`VwJji71mUEGIh`w|A>l0RS#}37JDd2zGJnFJ*Cy7vbOvP<`n4s5li;G+S zY2*uqI~*1hsW~Zvmg`{B z6J$wBeINPIV*Rt)t;H+xUyCoO5Z&p&D(l&cU@OB2E95)-dA6}qIO?2;9As~5PtuByr%(ZYB=Krvk9^NjYz|pS_0}seRzrsI>D#rU2oF4l_2q-MO9_WCh|6jVn zUvcT*(})wY{(1D{{R(%)Y|l(~eINbdYs5yde{2KR0B5#hfeLgc#T-SZQbar}&Ag)&x;vrd?0G5i983bEkz^BVC<^1gmQ+3-@ep3oa(vCps-A zJLVQFrnpqCEZ%o(7hHPaIqbCbee^3_I>F6{wFC3BIlZ}~MI@TvsCcjCVn9j%sI@?3*%4Zo%TJF6V+W$ph`MJEgVEYb7Lv1b|3s zr{%?>8p6}las&gkbB`X87Oi8;QMLc+32WomowfJRtihlI9PF;JTNClEn{LhI7wgDO)#qXUM(0^d~6SlDqfQZql!noz^LMur(jg^qt9SeG3_gLu=cfB zs*m9Px>Sn%fymFX_7_>-7ejL8Qf!xumrfJxjel~hzcb@yqx6g~&j~b89J$m10 z@b;PbF}=+fmk)G4zIpUa`}6zvx3u=ZqyrK(I0&;F7hEv|$`*@*E1)?ke5OMkVhV_L z(dsD(VmQ(HCNe*5YP!ldB)~>ErMHoPK7bW6>}(E&4uRi$064wj6+OzE3H#U*51Z(NymtxiC5C3oOXS4lQIMS-@K?qF=nc8-8S zfv!c@U}Ej|L-ZZIU*ToS*mka5Z-F7+ui)WGUolE!6r%fzVh`z}Vc=|hx9e4|!p8!m zJB6kRIj;(tuNInD6q*?Px(^HQB$I^gd`D(Egti;%pF7ET&P8GC^F9l z=++?prCGU<8lf1S7=P#yJ|^ZEU0E-#lLIB&Q>u*dBXI(T4xbs}_%cRsBlh@HcST4X zX715G4{$hV-DnThwNDKjO7R^2Y)Qy~bKtje4WQ#U_IM|_oN;+YC;zOk-^V2*e|9kG z&8m&Kz&fnfR8T8|bZ9x}r%uNofj5UqZ^c!=>cesdL*)Ok4@>wVekm(u|9>+2t0G!2pe z0W!ZW=r^%&ePX(A@B4AsiW?tz^OvT7j?CC_p-0;XZ;wpRIzzYNm$%;P zE;lW6-R8XmpS^i!u|fAI9|WIe2jiJn6>t8Z zuS$PH=091=Tnx#wwc9Ao!KIA+4kRzBP0S=D;tYAVn<9Xn2-}PtY*JN!g$jbZ0C(IX zvsst4J2D<%$Y~+x*goyvgKtP+yo+rK8Si0j3uf-pZqAKM8U?Blu0@A>5`(IRKReFg zW;H1fomnRFiF)Xzirt(tzdW6TCq@nreNG8+Ki9<-mnW39b_<^)d9nw;m{{qVB6=&h z+iI`;>NE0O`e2=&?(OoVPW@cTd(V3u6lfJg0gM7DV}4ZnkfLF$p=D=muw(n-z9f^D z0-~JM)sBar2%nT^Yv5K(%im%XA}&}&`Ea6^Au4-zNT^Pz$v!46PKmUN$qw9XoEeoFX+Jm^{~Oj z@Kzr&_?S+J*&tKzDTQxcEN`6se< zhYC-9EVS$eon&1@rQRQlY$%HGPO|cpkHwCMPO{;u+K(k}cZ#f*bVq9Ux@fPlIh-L- z7;4y~v(4BovLQMx#?-3+Flc|#K<^2}kZ0%qWeo8(h4Vojh5FEImI9epwkKVL$}2{K zS_y;DC;P#00lbsU;+LiD0$5m5{@cP5+~0RPf;4^M7znZ?6KALM-|1r zujEgCoGNR0SHkHt$I|k7@Kf+k!y~`n2i}Cv6!a(?iktxi}c?my8_z7?b`n##o41 z1rXS#e`<(M~4cQO?L_Csjb*p~j7Qr!= zMA-aejNuoI?(24eg}(R&Bc1?UFldD-_dXV>^F(;jNB&qaDsq@?%li}oA;+i{FOXZz zKT)Kqf5IjxwG4CIl0s@AY6L&Vdh3oDrvUjILFbM9FDGb537_q&fBGR3M&U#EP4R8w z>S)EqH>HV9DyvdNng`KSo7i(fQK|YpO$`kQ0eirP z=JEA6>J@Atw@7Az(|BmBHV$ROxxo9OZ&O1iT`NZ+=>at8sH)s?D7XlTTkr{Th z`bH{*rwv!mpG6vNEF^t0bBdPM6$xe(us>WdxUO=lssT2OdgSU%OKD^@w){H#O>ziL zsLs;p10Oyi8vAhQRTaYPvRx07u$n0`nTg7#%l4tVt1Eeyyu?Du{+EITGjF*ofZU=k zuX9nu%7MH|0duPNKyFAgcrH=DgXb3igTPXdTU@VNdsnxCA7k6Y7k@Lxh(K-;#^3^S zi+^w~AxSaH44zAn7jb?H64_E>zvr^`T;O|PsZX2;^T)ZZ9_jmxdfx*}6^pETMU+5p z(W8|D?A?klneCSyL*4;%+sJaM)an>p!+VS`lw7sO9DQXd47{rNIBNffuDiFw)B2ad z(j(PdJ+7Z7H6DWD2w?A4&h@|U-Rdi--_jj>P~`h_tz+q+aDQP*xKM8O6vOI^!oJ$I z$~kylMfphSP3!6-_rJWuRSzAlct&(t@l=cW>93nT*Awc?yN`$~nZMv?**6N@q$0;EJBNO?N;PIZcO-s&OJ+zTde6>xc4qY+Iny69*#U0-C`DH%S zEimS&DO2{m&pVdK^~9ARWe1`Iti?o68bJ5_D1mN&05ka4GjPP5C@{jBH>1ck$V4(m z!OMay?vVZ-^@arhaPRGG6u4km(+r#)LPhek73fODViOJ*j1}DzoG(*!b8=+ie1=!R z1!HeJ4?|IiUof(mKjv#26q?-oWx>e%moY}?=CbE(b4_SiF7^pH#x9&WE4oUA=a- z;m+)3FO~^z(28rIC??giVYmKU`l?XvL_*?qTlmyQ zZfRMu&?7JRj$!J8>kX|J--k?*on3y;pt@ZmUhd%jhG@a!8Su{a7Qt_G+qjMC5s7WR ziUZ;1IFV*V)IGtpC$<-_-tb_&y}>ItKyn=HtFMa2!m zdMCRt?`!}1WRMOd*;rxk|1FY@yM>TK@ehxJzLRXX$&)McUZnr5uW5rMn>TovnWq1J zmHROR&6bJstXmFAwjcW1A<5QllB5SAARq+5?+A{>hrsRKzi9C#FzW?>WR?`@{P zLYBPSCRz4CFWs=A_Tzndz=sgW-8IqPE$DLa>|1n?$ksBRWIKb;kU(9}6K0pjPQ0a3 z?K~ve%5)ssdnGR_$czEV5Ob9XUOp-u23^j;7G#{N8uXnon0`M425!H2O%Ajy_s z=^(q1n1B9|Wb+y}ga%hWOgbdlbYecgvNI|F4aw%Sv$B+qB^3HOyR>jQD^eC*<^H7) zOtaU69U$6h2TukQy%X~C*lh6nT8b$z1sGJh3U*KK(G&s#sG<`54AiW-4d&jo(vumN z)iD>Xm$z_rgCyI|staCUd;8?iPX=r0!M@8@;mdW~!@{#X@$*IEygNHB8JV@pSd|JXgf6Tz&hj#yA zPTX&^OMk7ey&V(=qaP%|=!Z%4m~*ufdi+v{f%t^SNUGT6wIu_wDeq4Q`=W28eb+xt zheDO(ri1vE^JgSEOLyn|B*9g#Rrj3{t%{P$=O-x)E?%Zfwv<_O_p9mln$yLvPI0m4 z+C?uvtazf(Qox@>YE;wy&E;L%+Pg1*d%q1<8&7;$_5L&+nB4Vg=H7eWmBl=&dG^)A zJ}`Xr19-pv^D6fj(GS1Li6aY8{&>|b(EoD=rjJ{7BL)#9pr4tfYuUW<#ON<);6KpU z9=8$hCAddA>Sr^LbhgXZ{+NN<9rzg-=FNFH13`TaOP+%w(&8gQIH+; zhhJ8?!=oVSJe^+WQy)_97PHBc$*kAkHh;Gd`E5-)QnulRmL$< z$ZbyfeitvQ&Z{E#oX{F7KKu8kzl#^D2ALcxx{9)`=OBI9!`)&wjM*5#f{oM}T!g+d zsB9;JL-FF&vR#CtWPiG~=f{M(Xmxrgdr#28z-_JDbz?rx2=pzS*AbFE7kAvCU?I`! znv?mZr;uotICF=U1-y8{XKX_%ooju*^gqJYf1e^VpC5^p{5AyQD*K*rSu;I|tB1aY zeoZ_@_Aj`)BcuoV7Fg0`ANSaSyM<)60k~V#od&g%mv`%T7w$@%mW z*<#D$x7Ugc>P4%woIY*qPF{KDT|E*QeZY8q%K78u$2Zt#x^nFypW<)K6p4Wp*{?c% z|J=7g=_UmD%*Ns+&f9>@B=@c7Z8UKfoIxRbO7&d_8 z)|ceoM|Jz#v^##^zUn=>wRW(U{=59m@0rkl9lWNW3GNoZ30|XoM22gzHHA9

    N?) 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/login-screen.png b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/login-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..76aeec25997b9ead1830211b97bb1f835e087028 GIT binary patch literal 35251 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 U2rpI$0sNB`l@loy(*O3q0nR{4kpKVy literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/project-setup.png b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/project-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..b613d45378215396963e6468760ce6d3850ff3df GIT binary patch literal 38374 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�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.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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/users-on-dev-extreme.png b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/users-on-dev-extreme.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff9289a686668963fb9953ac7b21ee672dd606f GIT binary patch literal 4413 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 ZX$SGig}vb|kzc>mC{2B2(Pebde*vY(>I47) literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/users.png b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/users.png new file mode 100644 index 0000000000000000000000000000000000000000..87d86a0300065e7a9a8e2276ac451688e8ba1af8 GIT binary patch literal 43017 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 literal 0 HcmV?d00001 From 9e23d591660dddf0a84086c97dea399057e8a181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 29 Sep 2020 11:44:30 +0300 Subject: [PATCH 023/114] Create feature.md --- .github/ISSUE_TEMPLATES/feature.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/ISSUE_TEMPLATES/feature.md diff --git a/.github/ISSUE_TEMPLATES/feature.md b/.github/ISSUE_TEMPLATES/feature.md new file mode 100644 index 0000000000..3cc5678c46 --- /dev/null +++ b/.github/ISSUE_TEMPLATES/feature.md @@ -0,0 +1 @@ +Please describe the feature need! \ No newline at end of file From 16f8a91fcbc576f0acaa9f36d1fc4c367d42c961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 29 Sep 2020 11:56:45 +0300 Subject: [PATCH 024/114] Revise the home page of the startup template. --- .../Pages/Index.cshtml | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml index d01781f24b..bab10a24b0 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml @@ -18,9 +18,9 @@

    @@ -72,13 +72,13 @@
    Github
    -

    Do you love Abp.io?

    +

    Do you love the ABP Framework? Please give a star to support it!

    Star Issue Fork

    - Feature Requests + Request a feature
    @@ -93,16 +93,15 @@
    -
    -

    Meet the Abp Commercial

    -

    A Complete Web Application Platform Built-on Abp Framework

    +

    Meet the ABP Commercial

    +

    A Complete Web Application Platform Built on the ABP Framework

    - ABP Commercial is a platform based on the open source ABP framework. It provides pre-built application modules, + ABP Commercial is a platform based on the open source ABP framework. It provides pre-built application modules, rapid application development tooling, professional UI themes, premium support and more.

    @@ -124,13 +123,13 @@
    -
    +
    Developer
    Tools Details
    -
    +
    @@ -142,28 +141,28 @@
    - Additional Services - Details + Premium Support + Details
    - Premium Support - Details + Additional Services + Details
    -
    +

    8E~x&n1cdnQ<0UZEI(Ac=rTl# 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 ZE^b5XI2-O;34OhgvVyvNzO13o{{Vo9CFB4A literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/devextreme-second.png b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/devextreme-second.png new file mode 100644 index 0000000000000000000000000000000000000000..24d147d57cb45a7c1f75cda8dcecc1a3dfe3bffb GIT binary patch literal 22074 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%0DCnp!m7pO71%0`J_28-jj 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

    - \ No newline at end of file + From 2ce7371941af30761b1cafa8c088011a535657bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 29 Sep 2020 12:05:17 +0300 Subject: [PATCH 025/114] Copy the index.cshtml to the web.host --- .../MyProjectNameBrandingProvider.cs | 11 ++ .../Pages/Index.cshtml | 157 +++++++++++++++++- .../Pages/Index.cshtml | 2 +- 3 files changed, 160 insertions(+), 10 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameBrandingProvider.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameBrandingProvider.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameBrandingProvider.cs new file mode 100644 index 0000000000..aba2d3920e --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameBrandingProvider.cs @@ -0,0 +1,11 @@ +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Components; +using Volo.Abp.DependencyInjection; + +namespace MyCompanyName.MyProjectName +{ + [Dependency(ReplaceServices = true)] + public class MyProjectNameBrandingProvider : DefaultBrandingProvider + { + public override string AppName => "MyProjectName"; + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml index 65417cf55e..408c0f8849 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml @@ -15,15 +15,154 @@ } - - @L["Welcome"] - -

    @L["LongWelcomeMessage"]

    +
    +
    + +

    Welcome to the Application

    + +

    @L["LongWelcomeMessage"]

    + + abp.io @if (!CurrentUser.IsAuthenticated) { - @L["Login"] + @L["Login"] } -
    -

    abp.io

    - - + +
    +
    +

    Let's improve your application!

    +

    Here are some links to help you get started:

    +
    +
    +
    +
    +
    +
    +
    Learn the ABP Framework
    +

    Explore the compherensive documentation to learn how to build a modern web application.

    + See Documents +
    +
    +
    +
    +
    Samples
    +

    See the example projects built with the ABP Framework.

    + All samples +
    +
    +
    +
    +
    ABP Community
    +

    Get involved with a vibrant community and become a contributor.

    + Community + Contribute +
    +
    +
    +
    +
    +
    +
    ABP Blog
    +

    Take a look at our recently published articles.

    + See Blog +
    +
    +
    +
    +
    Github
    +

    Do you love the ABP Framework? Please give a star to support it!

    +

    + Star + Issue + Fork +

    + Request a feature + +
    +
    +
    +
    +
    Stackoverflow
    +

    See answers to previously asked questions or ask a new one.

    + Questions + Ask a Question +
    +
    +
    +
    +
    + +
    +

    Meet the ABP Commercial

    +

    A Complete Web Application Platform Built on the ABP Framework

    +
    + +
    +
    +

    + ABP Commercial is a platform based on the open source ABP framework. It provides pre-built application modules, + rapid application development tooling, professional UI themes, premium support and more. +

    + +
    +
    +
    +
    + Startup Templates + Details +
    +
    +
    +
    +
    +
    + Application Modules + Details +
    +
    +
    +
    +
    +
    + Developer
    Tools + Details +
    +
    +
    +
    +
    +
    + UI
    Themes + Details +
    +
    +
    +
    +
    +
    + Premium Support + Details +
    +
    +
    +
    +
    +
    + Additional Services + Details +
    +
    +
    +
    +
    +
    + +
    diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml index bab10a24b0..477b6627af 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml @@ -79,6 +79,7 @@ Fork

    Request a feature +
    @@ -165,4 +166,3 @@

    - From 3a80851e4e55d51fcd79bbae19c42a7517024509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 29 Sep 2020 12:07:55 +0300 Subject: [PATCH 026/114] Add ref --- .../Pages/Index.cshtml | 21 +++++++++---------- .../Pages/Index.cshtml | 21 +++++++++---------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml index 408c0f8849..1019cb311e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml @@ -24,7 +24,6 @@

    @L["LongWelcomeMessage"]

    - abp.io @if (!CurrentUser.IsAuthenticated) { @L["Login"] @@ -42,14 +41,14 @@
    Learn the ABP Framework

    Explore the compherensive documentation to learn how to build a modern web application.

    - See Documents + See Documents
    Samples

    See the example projects built with the ABP Framework.

    - All samples + All samples
    @@ -57,7 +56,7 @@
    ABP Community

    Get involved with a vibrant community and become a contributor.

    Community - Contribute + Contribute
    @@ -66,7 +65,7 @@
    ABP Blog

    Take a look at our recently published articles.

    - See Blog + See Blog
    @@ -111,7 +110,7 @@
    Startup Templates - Details + Details
    @@ -119,7 +118,7 @@
    Application Modules - Details + Details
    @@ -127,7 +126,7 @@
    Developer
    Tools - Details + Details
    @@ -135,7 +134,7 @@
    UI
    Themes - Details + Details
    @@ -143,7 +142,7 @@
    Premium Support - Details + Details
    @@ -151,7 +150,7 @@
    Additional Services - Details + Details
    diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml index 477b6627af..ef9d266639 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml @@ -24,7 +24,6 @@

    @L["LongWelcomeMessage"]

    - abp.io @if (!CurrentUser.IsAuthenticated) { @L["Login"] @@ -42,14 +41,14 @@
    Learn the ABP Framework

    Explore the compherensive documentation to learn how to build a modern web application.

    - See Documents + See Documents
    Samples

    See the example projects built with the ABP Framework.

    - All samples + All samples
    @@ -57,7 +56,7 @@
    ABP Community

    Get involved with a vibrant community and become a contributor.

    Community - Contribute + Contribute
    @@ -66,7 +65,7 @@
    ABP Blog

    Take a look at our recently published articles.

    - See Blog + See Blog
    @@ -111,7 +110,7 @@
    Startup Templates - Details + Details
    @@ -119,7 +118,7 @@
    Application Modules - Details + Details
    @@ -127,7 +126,7 @@
    Developer
    Tools - Details + Details
    @@ -135,7 +134,7 @@
    UI
    Themes - Details + Details
    @@ -143,7 +142,7 @@
    Premium Support - Details + Details
    @@ -151,7 +150,7 @@
    Additional Services - Details + Details
    From 54a20e4a7c8ad19926f1c0376293d98b52d8d646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 29 Sep 2020 12:12:10 +0300 Subject: [PATCH 027/114] Update the samples icon --- .../src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml | 2 +- .../src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml index 1019cb311e..fdf45439a8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml @@ -46,7 +46,7 @@
    -
    Samples
    +
    Samples

    See the example projects built with the ABP Framework.

    All samples
    diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml index ef9d266639..e7bc26ba45 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml @@ -46,7 +46,7 @@
    -
    Samples
    +
    Samples

    See the example projects built with the ABP Framework.

    All samples
    From 9a4fdc4440b25b98f391774451519bd767e0b9cf Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Tue, 29 Sep 2020 14:30:08 +0300 Subject: [PATCH 028/114] docs: finalize devextreme angular article --- ...ngularComponents-With-The-ABP-Framework.md | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md index 3a1b075d46..e5ee3ef274 100644 --- a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md +++ b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md @@ -34,7 +34,9 @@ You can login to the application by using following credentials After successful login, you should be redirected to home page. -## Create a lazy Angular Module for DevExtreme Demo + +## Create a lazy Angular Module for DevExtreme Demo + Let's create a module which will be loaded lazily. @@ -126,15 +128,19 @@ After completing the steps above, you should be able to see `Dev Extreme` on the ![A screenshot showing a page that says dev-extreme works!](dev-extreme-page.png) -## Display users on the dev-extreme page +## Display users on the dev-extreme page -For this demo, we will list users on the screen. We already have `admin` as user. Let's add couple of more to the list in `Administration -> Identity Management -> Users` page. +For this demo, we will list users on the screen. We already have `admin` as our first user. + +Let's add couple of more to the list in `Administration -> Identity Management -> Users` page. ![A screenshot showing users page after adding couple of users](users.png) +Now we are ready to fetch our users and display them on `/dev-extreme` page. + Firstly, let's create a service for our component. -Navigate to the `dev-extreme` folder and run following command +Navigate to the `dev-extreme` folder and run following command. If you run this command at the root, the service will be generated next to `app.module.ts` ```bash ng g s dev-extreme @@ -168,7 +174,7 @@ export class DevExtremeService { } ``` -Now we can simply inject `DevExtremeService` as public and utilize `users$` stream in `dev-extreme.component.ts` as follows. +Now we can simply inject `DevExtremeService` as public and utilize `users$` stream in `dev-extreme.component.ts` as follows: ```typescript import { Component } from '@angular/core'; @@ -184,7 +190,7 @@ export class DevExtremeComponent { } ``` -And use it within `dev-extreme.component.html` as follows +And use it within `dev-extreme.component.html` ```html @@ -200,7 +206,7 @@ This should list names of the users on the screen ![A screenshot showing list users on the dev extreme page](users-on-dev-extreme.png) -## Install DevExtreme +## Install DevExtreme We've added new users and listed them on the `/dev-extreme`. Now, it is time to integrate **DevExtreme** components into our application. @@ -235,7 +241,7 @@ After completing these steps, you need to restart the angular application. You can take a look at [demo](https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/ColumnCustomization/Angular/Light/) provided by **DevExtreme** team or apply the following steps. -At this point, our application is ready to use `dx-data-grid` in `dev-extreme.component.ts` +Now, our application is ready to use `dx-data-grid` in `dev-extreme.component.ts` Firstly, we need to import `DxDataGridModule` in our module as follows. @@ -334,4 +340,10 @@ And change the template to the following The headers should change when a new language is selected -![A gif showing the headers of the table getting translated into the chosen language](devextreme-final.gif) \ No newline at end of file +![A gif showing the headers of the table getting translated into the chosen language](devextreme-final.gif) + +## Conclusion + +In this article, we have seen how to integrate `DevExtreme` angular components into a project generated by `ABP CLI` + +You can download the code of [the demo here](https://github.com/abpframework/abp-samples/tree/master/DevExtreme-Angular) \ No newline at end of file From 93033fd49bd46bbd0917bee7566e189b4eebf936 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Tue, 29 Sep 2020 14:46:49 +0300 Subject: [PATCH 029/114] fix: #5638 --- .../Components/FeatureManagementModal.razor | 2 +- .../Components/FeatureManagementModal.razor.cs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor b/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor index 14074f60fe..90d2539841 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor @@ -16,7 +16,7 @@ } else { - + @foreach (var group in Groups) { diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor.cs index c4b31d7262..aed44df8bc 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Threading.Tasks; using Blazorise; +using JetBrains.Annotations; using Microsoft.AspNetCore.Components; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; @@ -29,6 +30,8 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components protected string ProviderName; protected string ProviderKey; + + protected string SelectedTabName; protected List Groups { get; set; } @@ -36,7 +39,7 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components protected Dictionary SelectionStringValues; - public virtual async Task OpenAsync(string providerName, string providerKey) + public virtual async Task OpenAsync([NotNull]string providerName, string providerKey = null) { ProviderName = providerName; ProviderKey = providerKey; @@ -46,6 +49,8 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components Groups = (await FeatureAppService.GetAsync(ProviderName, ProviderKey)).Groups; + SelectedTabName = GetNormalizedGroupName(Groups.First().Name); + foreach (var featureGroupDto in Groups) { foreach (var featureDto in featureGroupDto.Features) From 832ba06b5c000f9368935289886dac059d72a108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levent=20Arman=20=C3=96zak?= Date: Tue, 29 Sep 2020 16:00:33 +0300 Subject: [PATCH 030/114] Update Using-DevExtremeAngularComponents-With-The-ABP-Framework.md --- ...ngularComponents-With-The-ABP-Framework.md | 64 ++++--------------- 1 file changed, 14 insertions(+), 50 deletions(-) diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md index e5ee3ef274..e654802a16 100644 --- a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md +++ b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md @@ -40,67 +40,31 @@ After successful login, you should be redirected to home page. Let's create a module which will be loaded lazily. -Open up a terminal and navigate to `angular` to run following commands. Following commands require `angular-cli` being installed globally. -If you do not have `angular-cli` installed or you do not want to install it, you can run the same commands by adding `npx` to the beginning. -E.g. `npx ng g m dev-extreme --routing` +Open up a terminal and navigate to `angular` to run following command. -```bash -ng g m dev-extreme --routing -``` - -Following files should be created. - -```bash -CREATE src/app/dev-extreme/dev-extreme-routing.module.ts (253 bytes) -CREATE src/app/dev-extreme/dev-extreme.module.ts (297 bytes) +```shell +ng g m dev-extreme --route dev-extreme --module app ``` -Let's create a component for `DevExtremeModule` by running following command +...or with `npx`, if you do not have `angular-cli` installed... -```bash -ng g c dev-extreme +```shell +npx ng g m dev-extreme --route dev-extreme --module app ``` -Following files should be created. +Your terminal should log the following output: -```bash +```shell +CREATE src/app/dev-extreme/dev-extreme-routing.module.ts (361 bytes) +CREATE src/app/dev-extreme/dev-extreme.module.ts (379 bytes) CREATE src/app/dev-extreme/dev-extreme.component.scss (0 bytes) CREATE src/app/dev-extreme/dev-extreme.component.html (26 bytes) -CREATE src/app/dev-extreme/dev-extreme.component.spec.ts (657 bytes) +CREATE src/app/dev-extreme/dev-extreme.component.spec.ts (655 bytes) CREATE src/app/dev-extreme/dev-extreme.component.ts (295 bytes) -UPDATE src/app/dev-extreme/dev-extreme.module.ts (379 bytes) -``` - -We should edit `dev-extreme-routing.module.ts` to load newly created `DevExtremeComponent` when `DevExtremeModule` is loaded. - -Open `dev-extreme-routing.module.ts` and import `DevExtremeComponent` change `routes` array to the following - -```typescript -// ... -import { DevExtremeComponent } from './dev-extreme.component'; - -const routes: Routes = [{ - path: '', - component: DevExtremeComponent -}]; - -// ... +UPDATE src/app/app-routing.module.ts (362 bytes) ``` -We should also edit `app-routing.module.ts` to be able to load `DevExtremeModule` and `route.provider.ts` to show a link to this module. - -Open `app-routing.module.ts` and add following object to `routes` array - -```typescript -const routes: Routes = [ - // ... - { - path: 'dev-extreme', - loadChildren: () => import('./dev-extreme/dev-extreme.module').then((m) => m.DevExtremeModule), - }, - // ... -]; -``` +The Angular CLI has created a module and configured it to lazy-load at `/dev-extreme` path. The last step to be able to see our newly created module in the browser, open `route.provider.ts` and edit the array being added into the routes. @@ -346,4 +310,4 @@ The headers should change when a new language is selected In this article, we have seen how to integrate `DevExtreme` angular components into a project generated by `ABP CLI` -You can download the code of [the demo here](https://github.com/abpframework/abp-samples/tree/master/DevExtreme-Angular) \ No newline at end of file +You can download the code of [the demo here](https://github.com/abpframework/abp-samples/tree/master/DevExtreme-Angular) From 14281eacb906bf4d96c87f20d5a79989e9bda108 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Tue, 29 Sep 2020 16:08:05 +0300 Subject: [PATCH 031/114] Closes: #5635 --- .../Pages/Index.razor | 229 +++++++++++++++--- 1 file changed, 196 insertions(+), 33 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor index 66c4949ac9..d301cc831b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -2,48 +2,211 @@ @using Volo.Abp.Users @using Volo.Abp.MultiTenancy @using System.Security.Claims +@using Microsoft.Extensions.Localization +@using MyCompanyName.MyProjectName.Localization @inject ICurrentUser CurrentUser @inject ICurrentTenant CurrentTenant @inject AuthenticationStateProvider AuthenticationStateProvider +@inject IStringLocalizer L -

    Welcome to MyProjectName!

    -@if (CurrentUser.IsAuthenticated) -{ -

    Current User

    -
      -
    • Id: @CurrentUser.Id
    • -
    • TenantId: @CurrentUser.TenantId
    • -
    • UserName: @CurrentUser.UserName
    • -
    • Name: @CurrentUser.Name
    • -
    • SurName: @CurrentUser.SurName
    • -
    • Email: @CurrentUser.Email
    • -
    • EmailVerified: @CurrentUser.EmailVerified
    • -
    • PhoneNumber: @CurrentUser.PhoneNumber
    • -
    • PhoneNumberVerified: @CurrentUser.PhoneNumberVerified
    • -
    • Roles: @CurrentUser.Roles.JoinAsString(", ")
    • -
    -} +
    +
    + +
    Congratulations, MyProjectName is successfully running!
    +
    -@if (_claims != null) -{ -

    Current Claims

    -
      - @foreach (var claim in _claims) +

      Welcome to the Application

      + +

      @L["LongWelcomeMessage"]

      + + @if (!CurrentUser.IsAuthenticated) { -
    • @claim.Type: @claim.Value
    • + } -
    -} -@if (CurrentTenant.IsAvailable) -{ -

    Current Tenant

    -
      -
    • Id: @CurrentTenant.Id
    • -
    • Name: @CurrentTenant.Name
    • -
    -} + + @if (CurrentUser.IsAuthenticated) + { + +

    Current User

    +
      +
    • Id: @CurrentUser.Id
    • +
    • TenantId: @CurrentUser.TenantId
    • +
    • UserName: @CurrentUser.UserName
    • +
    • Name: @CurrentUser.Name
    • +
    • SurName: @CurrentUser.SurName
    • +
    • Email: @CurrentUser.Email
    • +
    • EmailVerified: @CurrentUser.EmailVerified
    • +
    • PhoneNumber: @CurrentUser.PhoneNumber
    • +
    • PhoneNumberVerified: @CurrentUser.PhoneNumberVerified
    • +
    • Roles: @CurrentUser.Roles.JoinAsString(", ")
    • +
    +
    + } + @if (_claims != null) + { + +

    Current Claims

    +
      + @foreach (var claim in _claims) + { +
    • @claim.Type: @claim.Value
    • + } +
    +
    + } + @if (CurrentTenant.IsAvailable) + { + +

    Current Tenant

    +
      +
    • Id: @CurrentTenant.Id
    • +
    • Name: @CurrentTenant.Name
    • +
    +
    + } +
    +
    + +
    +

    Let's improve your application!

    +

    Here are some links to help you get started:

    +
    + +
    +
    +
    +
    +
    +
    Learn the ABP Framework
    +

    Explore the compherensive documentation to learn how to build a modern web application.

    + See Documents +
    +
    +
    +
    +
    Samples
    +

    See the example projects built with the ABP Framework.

    + All samples +
    +
    +
    +
    +
    ABP Community
    +

    Get involved with a vibrant community and become a contributor.

    + Community + Contribute +
    +
    +
    +
    +
    +
    +
    ABP Blog
    +

    Take a look at our recently published articles.

    + See Blog +
    +
    +
    +
    +
    Github
    +

    Do you love the ABP Framework? Please give a star to support it!

    +

    + Star + Issue + Fork +

    + Request a feature + +
    +
    +
    +
    +
    Stackoverflow
    +

    See answers to previously asked questions or ask a new one.

    + Questions + Ask a Question +
    +
    +
    +
    +
    + +
    +

    Meet the ABP Commercial

    +

    A Complete Web Application Platform Built on the ABP Framework

    +
    + +
    +
    +

    + ABP Commercial is a platform based on the open source ABP framework. It provides pre-built application modules, + rapid application development tooling, professional UI themes, premium support and more. +

    + +
    +
    +
    +
    + Startup Templates + Details +
    +
    +
    +
    +
    +
    + Application Modules + Details +
    +
    +
    +
    +
    +
    + Developer
    Tools + Details +
    +
    +
    +
    +
    +
    + UI
    Themes + Details +
    +
    +
    +
    +
    +
    + Premium Support + Details +
    +
    +
    +
    +
    +
    + Additional Services + Details +
    +
    +
    +
    +
    +
    + +
    @code { From eecc75ab0aebf3593f9811d64d7944b09c036359 Mon Sep 17 00:00:00 2001 From: Mehmet Erim <34455572+mehmet-erim@users.noreply.github.com> Date: Tue, 29 Sep 2020 16:46:37 +0300 Subject: [PATCH 032/114] Update Getting-Started-React-Native.md --- docs/en/Getting-Started-React-Native.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Getting-Started-React-Native.md b/docs/en/Getting-Started-React-Native.md index 74a8f2b829..a06257fec9 100644 --- a/docs/en/Getting-Started-React-Native.md +++ b/docs/en/Getting-Started-React-Native.md @@ -110,4 +110,4 @@ The application is up and running. You can continue to develop your application ## See Also -* [React Native project structure](./Startup-Templates/Application.md#react-native) +* [React Native project structure](./Startup-Templates/Application#react-native) From e9ce7225971c021ec2c57f7c7e93b59a167fea8d Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Wed, 30 Sep 2020 09:49:59 +0300 Subject: [PATCH 033/114] docs: finalize devextreme angular blogpost --- ...ngularComponents-With-The-ABP-Framework.md | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md index e654802a16..4637f07e57 100644 --- a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md +++ b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md @@ -6,9 +6,11 @@ We will create the same application using Angular as the UI framework and integr ## Create the Project +For detail information about how to generate and start up a project, please refer to the [official docs](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No). For the scope of this post, we will not go into details of the backend applications. + Let's create an application using [ABP CLI](https://docs.abp.io/en/abp/latest/CLI#new) -```bash +```shell abp new DevExtremeAngular -u angular ``` @@ -34,9 +36,38 @@ You can login to the application by using following credentials After successful login, you should be redirected to home page. +## Install DevExtreme -## Create a lazy Angular Module for DevExtreme Demo +Let's start with installing DevExtreme into our project before writing any code. + +You can follow [the guide](https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Add_DevExtreme_to_an_Angular_CLI_Application/) provided by **DevExtreme** team or apply the following steps. + +* `npm install devextreme devextreme-angular` or `yarn add devextreme devextreme-angular` +* Import following two styles in `angular.json` + +```javascript + // ... + "styles": [ + // ... + "src/styles.scss", + "node_modules/devextreme/dist/css/dx.common.css", + "node_modules/devextreme/dist/css/dx.light.css" + ] +``` + +* Add `dx-viewport` to classes of `body` in `index.html` + +```html + + +
    +
    + +``` + +After completing these steps, you need to restart the angular application. +## Create a lazy Angular Module for DevExtreme Demo Let's create a module which will be loaded lazily. @@ -106,13 +137,13 @@ Firstly, let's create a service for our component. Navigate to the `dev-extreme` folder and run following command. If you run this command at the root, the service will be generated next to `app.module.ts` -```bash +```shell ng g s dev-extreme ``` Following files should be created -```bash +```shell CREATE src/app/dev-extreme/dev-extreme.service.spec.ts (378 bytes) CREATE src/app/dev-extreme/dev-extreme.service.ts (139 bytes) ``` @@ -170,37 +201,6 @@ This should list names of the users on the screen ![A screenshot showing list users on the dev extreme page](users-on-dev-extreme.png) -## Install DevExtreme - -We've added new users and listed them on the `/dev-extreme`. Now, it is time to integrate **DevExtreme** components into our application. - -You can follow [the guide](https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Add_DevExtreme_to_an_Angular_CLI_Application/) provided by **DevExtreme** team or apply the following steps. - -* `npm install devextreme devextreme-angular` or `yarn add devextreme devextreme-angular` -* Import following two styles in `angular.json` - -```javascript - // ... - "styles": [ - // ... - "src/styles.scss", - "node_modules/devextreme/dist/css/dx.common.css", - "node_modules/devextreme/dist/css/dx.light.css" - ] -``` - -* Add `dx-viewport` to classes of `body` in `index.html` - -```html - - -
    -
    - -``` - -After completing these steps, you need to restart the angular application. - ## Use DxDataGrid to list the users You can take a look at [demo](https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/ColumnCustomization/Angular/Light/) provided by **DevExtreme** team or apply the following steps. From dc19e4fdccf0f611a2722f01347c5f4915c42482 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 30 Sep 2020 10:04:26 +0300 Subject: [PATCH 034/114] cli add-module --add-to-solution-file option --- docs/en/CLI.md | 3 ++- .../Volo/Abp/Cli/Commands/AddModuleCommand.cs | 14 +++++++++++--- .../Cli/ProjectModification/SolutionModuleAdder.cs | 10 ++++++++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index dd3287ce12..3825f5884c 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -180,7 +180,8 @@ abp add-module Volo.Blogging * `--solution` or `-s`: Specifies the solution (.sln) file path. If not specified, CLI tries to find a .sln file in the current directory. * `--skip-db-migrations`: For EF Core database provider, it automatically adds a new code first migration (`Add-Migration`) and updates the database (`Update-Database`) if necessary. Specify this option to skip this operation. * `-sp` or `--startup-project`: Relative path to the project folder of the startup project. Default value is the current folder. -* `--with-source-code`: Add source code of the module instead of NuGet/NPM packages. +* `--with-source-code`: Downloads the source code of the module to your solution folder and uses local project references instead of NuGet/NPM packages. +* `--add-to-solution-file`: Adds the downloaded project to your solution file, so you will also see the projects of the module in your solution when you open it on a IDE. (only available when `--with-source-code` is used.) ### get-source diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs index 5e690d8bb0..02eac070c8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs @@ -36,7 +36,8 @@ namespace Volo.Abp.Cli.Commands ); } - var withSourceCode = commandLineArgs.Options.ContainsKey("with-source-code"); + var withSourceCode = commandLineArgs.Options.ContainsKey(Options.SourceCode.Long); + var addSourceCodeToSolutionFile = withSourceCode && commandLineArgs.Options.ContainsKey("add-to-solution-file"); var skipDbMigrations = Convert.ToBoolean( commandLineArgs.Options.GetOrNull(Options.DbMigrations.Skip) ?? "false"); @@ -55,7 +56,8 @@ namespace Volo.Abp.Cli.Commands commandLineArgs.Options.GetOrNull(Options.StartupProject.Short, Options.StartupProject.Long), version, skipDbMigrations, - withSourceCode + withSourceCode, + addSourceCodeToSolutionFile ); } @@ -71,7 +73,8 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(" abp add-module [options]"); sb.AppendLine(""); sb.AppendLine("Options:"); - sb.AppendLine(" --with-source-code Downloads the source code of the module and adds it to your solution."); + sb.AppendLine(" --with-source-code Downloads the source code of the module to your solution folder."); + sb.AppendLine(" --add-to-solution-file Adds the downloaded project to your solution file. (only available when --with-source-code used)"); sb.AppendLine(" -s|--solution Specify the solution file explicitly."); sb.AppendLine(" --skip-db-migrations Specify if a new migration will be added or not."); sb.AppendLine(" -sp|--startup-project Relative path to the project folder of the startup project. Default value is the current folder."); @@ -158,6 +161,11 @@ namespace Volo.Abp.Cli.Commands public const string Short = "sp"; public const string Long = "startup-project"; } + + public static class SourceCode + { + public const string Long = "with-source-code"; + } } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index e4c4c655f7..4cbeb2ba26 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -68,7 +68,8 @@ namespace Volo.Abp.Cli.ProjectModification string startupProject, string version, bool skipDbMigrations = false, - bool withSourceCode = false) + bool withSourceCode = false, + bool addSourceCodeToSolutionFile = false) { Check.NotNull(solutionFile, nameof(solutionFile)); Check.NotNull(moduleName, nameof(moduleName)); @@ -85,7 +86,12 @@ namespace Volo.Abp.Cli.ProjectModification { var modulesFolderInSolution = Path.Combine(Path.GetDirectoryName(solutionFile), "modules"); await DownloadSourceCodesToSolutionFolder(module, modulesFolderInSolution, version); - await SolutionFileModifier.AddModuleToSolutionFileAsync(module, solutionFile); + + if (addSourceCodeToSolutionFile) + { + await SolutionFileModifier.AddModuleToSolutionFileAsync(module, solutionFile); + } + await NugetPackageToLocalReferenceConverter.Convert(module, solutionFile); await AddAngularSourceCode(modulesFolderInSolution, solutionFile); } From dfef2b808cad008073445489979cc0a6c9d9dd7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 30 Sep 2020 10:10:37 +0300 Subject: [PATCH 035/114] Update SignalR-Integration.md --- docs/en/SignalR-Integration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/SignalR-Integration.md b/docs/en/SignalR-Integration.md index f6ba81b550..29c37e30b2 100644 --- a/docs/en/SignalR-Integration.md +++ b/docs/en/SignalR-Integration.md @@ -1,6 +1,6 @@ # SignalR Integration -> It is already possible to follow [the standard Microsoft tutorial](https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr) to add [SignalR](https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction) to your application. However, ABP provides a SignalR integration packages those simplify the integration and usage. +> It is already possible to follow [the standard Microsoft tutorial](https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr) to add [SignalR](https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction) to your application. However, ABP provides SignalR integration packages those simplify the integration and usage. ## Installation From 7657b2aca568eff5367a8bfcb6a571dc74b9ea80 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 30 Sep 2020 10:20:32 +0300 Subject: [PATCH 036/114] Update CLI.md --- docs/en/CLI.md | 2 +- .../Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index 3825f5884c..9aaf2777bb 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -181,7 +181,7 @@ abp add-module Volo.Blogging * `--skip-db-migrations`: For EF Core database provider, it automatically adds a new code first migration (`Add-Migration`) and updates the database (`Update-Database`) if necessary. Specify this option to skip this operation. * `-sp` or `--startup-project`: Relative path to the project folder of the startup project. Default value is the current folder. * `--with-source-code`: Downloads the source code of the module to your solution folder and uses local project references instead of NuGet/NPM packages. -* `--add-to-solution-file`: Adds the downloaded project to your solution file, so you will also see the projects of the module in your solution when you open it on a IDE. (only available when `--with-source-code` is used.) +* `--add-to-solution-file`: Adds the downloaded module to your solution file, so you will also see the projects of the module in your solution when you open it on a IDE. (only available when `--with-source-code` is used.) ### get-source diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs index 02eac070c8..42a8d76b98 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs @@ -74,7 +74,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(""); sb.AppendLine("Options:"); sb.AppendLine(" --with-source-code Downloads the source code of the module to your solution folder."); - sb.AppendLine(" --add-to-solution-file Adds the downloaded project to your solution file. (only available when --with-source-code used)"); + sb.AppendLine(" --add-to-solution-file Adds the downloaded module to your solution file. (only available when --with-source-code used)"); sb.AppendLine(" -s|--solution Specify the solution file explicitly."); sb.AppendLine(" --skip-db-migrations Specify if a new migration will be added or not."); sb.AppendLine(" -sp|--startup-project Relative path to the project folder of the startup project. Default value is the current folder."); From e172629a638e9e612cd7a5074fb38b697cef5431 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 30 Sep 2020 10:22:21 +0300 Subject: [PATCH 037/114] Update CLI.md --- docs/en/CLI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index 9aaf2777bb..8713bc9019 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -181,7 +181,7 @@ abp add-module Volo.Blogging * `--skip-db-migrations`: For EF Core database provider, it automatically adds a new code first migration (`Add-Migration`) and updates the database (`Update-Database`) if necessary. Specify this option to skip this operation. * `-sp` or `--startup-project`: Relative path to the project folder of the startup project. Default value is the current folder. * `--with-source-code`: Downloads the source code of the module to your solution folder and uses local project references instead of NuGet/NPM packages. -* `--add-to-solution-file`: Adds the downloaded module to your solution file, so you will also see the projects of the module in your solution when you open it on a IDE. (only available when `--with-source-code` is used.) +* `--add-to-solution-file`: Adds the downloaded module to your solution file, so you will also see the projects of the module when you open the solution on a IDE. (only available when `--with-source-code` is used.) ### get-source From c02e6bcf62f1074eac4a08322a80a9839652552e Mon Sep 17 00:00:00 2001 From: Ahmet Date: Wed, 30 Sep 2020 10:36:26 +0300 Subject: [PATCH 038/114] Update Index.razor --- .../src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor index d301cc831b..0f26f4cb60 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -120,7 +120,7 @@ Fork

    Request a feature - +
    From c3a9b5f0e8186e94c8854a46e675dac0f809a634 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Wed, 30 Sep 2020 11:09:31 +0300 Subject: [PATCH 039/114] Update Index.razor --- .../MyCompanyName.MyProjectName.Blazor/Pages/Index.razor | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor index 0f26f4cb60..ba2d89f2cd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -114,12 +114,8 @@
    Github

    Do you love the ABP Framework? Please give a star to support it!

    -

    - Star - Issue - Fork -

    - Request a feature + + See Open Source Framework
    From 0efbf56976662b5cf7b959f9cbf1c5fc364bf86b Mon Sep 17 00:00:00 2001 From: Ahmet Date: Wed, 30 Sep 2020 11:17:28 +0300 Subject: [PATCH 040/114] Update TenantManagementBlazorMenuContributor.cs ref: #5633 --- .../Navigation/TenantManagementBlazorMenuContributor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Navigation/TenantManagementBlazorMenuContributor.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Navigation/TenantManagementBlazorMenuContributor.cs index 1fe3d09ca2..c1d6e9ac7a 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Navigation/TenantManagementBlazorMenuContributor.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Navigation/TenantManagementBlazorMenuContributor.cs @@ -22,7 +22,7 @@ namespace Volo.Abp.TenantManagement.Blazor.Navigation if (await context.IsGrantedAsync(TenantManagementPermissions.Tenants.Default)) { - tenantManagementMenuItem.AddItem(new ApplicationMenuItem(TenantManagementMenuNames.Tenants, l["Tenants"], url: "~/tenant-management/tenants")); + tenantManagementMenuItem.AddItem(new ApplicationMenuItem(TenantManagementMenuNames.Tenants, l["Tenants"], url: "/tenant-management/tenants")); } } } From 4695ca933293a972b254822c25fd084548ee0644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 30 Sep 2020 16:58:33 +0300 Subject: [PATCH 041/114] Clean the index page of the startup template --- .../AbpIdentityWebMainMenuContributor.cs | 2 +- .../Pages/Index.razor | 55 ++----------------- 2 files changed, 6 insertions(+), 51 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityWebMainMenuContributor.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityWebMainMenuContributor.cs index 17c956f0c7..3198e1335d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityWebMainMenuContributor.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityWebMainMenuContributor.cs @@ -22,7 +22,7 @@ namespace Volo.Abp.Identity.Blazor var l = context.GetLocalizer(); - var identityMenuItem = new ApplicationMenuItem(IdentityMenuNames.GroupName, l["Menu:IdentityManagement"], icon: "fa fa-id-card-o"); + var identityMenuItem = new ApplicationMenuItem(IdentityMenuNames.GroupName, l["Menu:IdentityManagement"], icon: "far fa-id-card"); administrationMenu.AddItem(identityMenuItem); if (hasRolePermission) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor index ba2d89f2cd..114be0b5e1 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -8,8 +8,6 @@ @inject ICurrentTenant CurrentTenant @inject AuthenticationStateProvider AuthenticationStateProvider @inject IStringLocalizer L - -
    @@ -114,9 +69,9 @@
    Github

    Do you love the ABP Framework? Please give a star to support it!

    - + See Open Source Framework - +
    From adcc767fbb98aafbc0c802b40c847a3a026620d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 30 Sep 2020 17:08:28 +0300 Subject: [PATCH 042/114] Fixed the basic theme main menu --- .../Themes/Basic/NavMenu.razor | 46 +++++++++++++++- .../Themes/Basic/NavMenuItem.razor | 53 +++++++++---------- .../wwwroot/index.html | 2 +- 3 files changed, 70 insertions(+), 31 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor index e1ede1c0fd..c3ada520dc 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor @@ -2,6 +2,50 @@ { foreach (var menuItem in Menu.Items) { - + var elementId = menuItem.ElementId ?? "MenuItem_" + menuItem.Name.Replace(".", "_"); + var cssClass = string.IsNullOrEmpty(menuItem.CssClass) ? string.Empty : menuItem.CssClass; + var disabled = menuItem.IsDisabled ? "disabled" : string.Empty; + var url = string.IsNullOrEmpty(menuItem.Url) ? "#" : menuItem.Url; + if (menuItem.IsLeaf) + { + if (menuItem.Url != null) + { + + } + } + else + { + + } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor index 8194896f61..f0ce353bf9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor @@ -2,49 +2,44 @@ @{ var elementId = MenuItem.ElementId ?? "MenuItem_" + MenuItem.Name.Replace(".", "_"); var cssClass = string.IsNullOrEmpty(MenuItem.CssClass) ? string.Empty : MenuItem.CssClass; + var disabled = MenuItem.IsDisabled ? "disabled" : string.Empty; var url = string.IsNullOrEmpty(MenuItem.Url) ? "#" : MenuItem.Url; } @if (MenuItem.IsLeaf) { if (MenuItem.Url != null) { - + } + @MenuItem.DisplayName + } } else { - - +
    } @code { [Parameter] diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html index 99ab025095..9edbaa4185 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html @@ -16,7 +16,7 @@ - + Loading...
    From c8aa4e5e4a9b57970c272bc98b0ca9823a3ceec3 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Wed, 30 Sep 2020 17:25:06 +0300 Subject: [PATCH 043/114] Fixed the basic theme main menu --- .../Themes/Basic/NavMenu.razor | 46 +++++++++++++++- .../Themes/Basic/NavMenuItem.razor | 55 +++++++++---------- .../wwwroot/index.html | 2 +- 3 files changed, 71 insertions(+), 32 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor index e1ede1c0fd..c3ada520dc 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenu.razor @@ -2,6 +2,50 @@ { foreach (var menuItem in Menu.Items) { - + var elementId = menuItem.ElementId ?? "MenuItem_" + menuItem.Name.Replace(".", "_"); + var cssClass = string.IsNullOrEmpty(menuItem.CssClass) ? string.Empty : menuItem.CssClass; + var disabled = menuItem.IsDisabled ? "disabled" : string.Empty; + var url = string.IsNullOrEmpty(menuItem.Url) ? "#" : menuItem.Url; + if (menuItem.IsLeaf) + { + if (menuItem.Url != null) + { + + } + } + else + { + + } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor index 8194896f61..bbf9bb69d8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavMenuItem.razor @@ -2,51 +2,46 @@ @{ var elementId = MenuItem.ElementId ?? "MenuItem_" + MenuItem.Name.Replace(".", "_"); var cssClass = string.IsNullOrEmpty(MenuItem.CssClass) ? string.Empty : MenuItem.CssClass; + var disabled = MenuItem.IsDisabled ? "disabled" : string.Empty; var url = string.IsNullOrEmpty(MenuItem.Url) ? "#" : MenuItem.Url; } @if (MenuItem.IsLeaf) { if (MenuItem.Url != null) { - + } + @MenuItem.DisplayName + } } else { - - +
    } @code { [Parameter] public ApplicationMenuItem MenuItem { get; set; } -} +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html index 99ab025095..9edbaa4185 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html @@ -16,7 +16,7 @@ - + Loading...
    From 625a232d4418fd3895d2bbbea2814d64298e498d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 30 Sep 2020 17:35:44 +0300 Subject: [PATCH 044/114] Implement the navigation toolbar for the basic theme of the Blazor UI --- ...pNetCoreComponentsWebAssemblyBasicTheme.cs | 6 ++++ .../BasicThemeToolbarContributor.cs | 20 +++++++++++ .../Themes/Basic/LoginDisplay.razor | 4 +-- .../Themes/Basic/MainLayout.razor | 9 +---- .../Themes/Basic/NavToolbar.razor | 8 +++++ .../Themes/Basic/NavToolbar.razor.cs | 34 +++++++++++++++++++ 6 files changed, 71 insertions(+), 10 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeToolbarContributor.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/AbpAspNetCoreComponentsWebAssemblyBasicTheme.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/AbpAspNetCoreComponentsWebAssemblyBasicTheme.cs index 74c81ed72c..0de4e5de7a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/AbpAspNetCoreComponentsWebAssemblyBasicTheme.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/AbpAspNetCoreComponentsWebAssemblyBasicTheme.cs @@ -1,5 +1,6 @@ using Volo.Abp.AspNetCore.Components.WebAssembly.Theming; using Volo.Abp.AspNetCore.Components.WebAssembly.Theming.Routing; +using Volo.Abp.AspNetCore.Components.WebAssembly.Theming.Toolbars; using Volo.Abp.Modularity; namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme @@ -15,6 +16,11 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme { options.AdditionalAssemblies.Add(typeof(AbpAspNetCoreComponentsWebAssemblyBasicThemeModule).Assembly); }); + + Configure(options => + { + options.Contributors.Add(new BasicThemeToolbarContributor()); + }); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeToolbarContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeToolbarContributor.cs new file mode 100644 index 0000000000..8316a1480e --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeToolbarContributor.cs @@ -0,0 +1,20 @@ +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic; +using Volo.Abp.AspNetCore.Components.WebAssembly.Theming.Toolbars; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme +{ + public class BasicThemeToolbarContributor : IToolbarContributor + { + public Task ConfigureToolbarAsync(IToolbarConfigurationContext context) + { + if (context.Toolbar.Name == StandardToolbars.Main) + { + context.Toolbar.Items.Add(new ToolbarItem(typeof(LanguageSwitch))); + context.Toolbar.Items.Add(new ToolbarItem(typeof(LoginDisplay))); + } + + return Task.CompletedTask; + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor index 88a005d7bf..f55685e665 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor @@ -17,7 +17,7 @@ @menuItem.DisplayName } } - + Logout @@ -32,7 +32,7 @@ { Navigation.NavigateTo(uri); } - + private async Task BeginSignOut() { await SignOutManager.SetSignOutState(); diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor index af88212f0a..8e64b32022 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor @@ -13,14 +13,7 @@ - +
    diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor new file mode 100644 index 0000000000..5eea07ea8f --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor @@ -0,0 +1,8 @@ + diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs new file mode 100644 index 0000000000..c2f08568e4 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using Volo.Abp.AspNetCore.Components.WebAssembly.Theming.Toolbars; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic +{ + public partial class NavToolbar + { + [Inject] + private IToolbarManager ToolbarManager { get; set; } + + private RenderFragment ToolbarRender { get; set; } + + private List ToolbarItemRenders { get; set; } = new List(); + + protected override async Task OnInitializedAsync() + { + var toolbar = await ToolbarManager.GetAsync(StandardToolbars.Main); + + ToolbarItemRenders.Clear(); + + foreach (var item in toolbar.Items) + { + ToolbarItemRenders.Add(builder => + { + builder.OpenComponent(0, item.ComponentType); + builder.CloseComponent(); + }); + } + } + + } +} From e7c83894d42d36c6ba3322c8d4b9988f23a9a9d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 30 Sep 2020 21:07:23 +0300 Subject: [PATCH 045/114] Create codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 71 +++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000000..ae5d4fdacc --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,71 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +name: "CodeQL" + +on: + push: + branches: [dev, rel-1.0, rel-1.1, rel-2.0, rel-2.1, rel-2.2, rel-2.3, rel-2.4, rel-2.5, rel-2.6, rel-2.7, rel-2.8, rel-2.9, rel-3.0, rel-3.1, rel-3.2] + pull_request: + # The branches below must be a subset of the branches above + branches: [dev] + schedule: + - cron: '0 8 * * 6' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + # Override automatic language detection by changing the below list + # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] + language: ['csharp', 'javascript'] + # Learn more... + # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 From c0ee8748179e173657c17f29c7f2b291507a233d Mon Sep 17 00:00:00 2001 From: Ahmet Date: Wed, 30 Sep 2020 23:23:37 +0300 Subject: [PATCH 046/114] Added returnUrl to Manage Account page --- .../Volo/Abp/Account/Localization/Resources/en.json | 3 ++- .../Volo/Abp/Account/Localization/Resources/tr.json | 4 +++- .../Volo.Abp.Account.Web/Pages/Account/Manage.cshtml | 11 +++++++++++ .../Pages/Account/Manage.cshtml.cs | 4 ++++ .../MyCompanyName.MyProjectName.Blazor.csproj | 1 - .../MyProjectNameBlazorModule.cs | 2 -- 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json index 85bd040d8c..51abf72a1e 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json @@ -55,6 +55,7 @@ "GoToTheApplication": "Go to the application", "BackToLogin": "Back to login", "ProfileTab:Password": "Change password", - "ProfileTab:PersonalInfo": "Personal info" + "ProfileTab:PersonalInfo": "Personal info", + "ReturnToApplication": "Return to application" } } diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json index c9aff72675..48e43fd6cc 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json @@ -44,6 +44,7 @@ "LoggedOutTitle": "Çıkış Yaptınız", "LoggedOutText": "Çıkış yaptınız ve birazdan yönlendirileceksiniz.", "ReturnToText": "{0} uygulamasına dönmek için tıklayın.", + "OrLoginWith": "Veya bunlarla giriş yap;", "ForgotPassword": "Şifremi unuttum", "SendPasswordResetLink_Information": "E-posta adresinize bir şifre sıfırlama bağlantısı gönderilecektir. Birkaç dakika içerisinde bir e-posta almazsanız lütfen tekrar deneyin.", "PasswordResetMailSentMessage": "E-posta adresinize bir şifre sıfırlama bağlantısı gönderilmiştir. Lütfen e-posta adresinizi kontrol ediniz. Eğer 15 dakika içinde, bu e-postayı gelen kutusunda bulamazsanız, gereksiz veya istenmeyen e-posta kutularına bakınız.", @@ -54,6 +55,7 @@ "GoToTheApplication": "Uygulamaya git", "BackToLogin": "Girişe dön", "ProfileTab:Password": "Şifre değiştir", - "ProfileTab:PersonalInfo": "Kişisel bilgiler" + "ProfileTab:PersonalInfo": "Kişisel bilgiler", + "ReturnToApplication": "Uygulamaya geri dön" } } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml index ff6262f3ec..ec48e5bcde 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml @@ -13,6 +13,17 @@ } +@if (!Model.ReturnUrl.IsNullOrWhiteSpace()) +{ + + + + @L["ReturnToApplication"] + + + +} +e
    diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs index f7b08eb6c4..b48a20a545 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs @@ -10,6 +10,10 @@ namespace Volo.Abp.Account.Web.Pages.Account { public class ManageModel : AccountPageModel { + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrl { get; set; } + public ProfileManagementPageCreationContext ProfileManagementPageCreationContext { get; private set; } protected ProfileManagementPageOptions Options { get; } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index c716843c19..cba18ad1bd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -19,7 +19,6 @@ - diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index 80174dec40..7554ae8aca 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -14,7 +14,6 @@ using Volo.Abp.Autofac.WebAssembly; using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; using Volo.Abp.Identity.Blazor; -using Volo.Abp.Account.Blazor; using Volo.Abp.AutoMapper; using Volo.Abp.TenantManagement.Blazor; @@ -25,7 +24,6 @@ namespace MyCompanyName.MyProjectName.Blazor typeof(MyProjectNameHttpApiClientModule), typeof(AbpAspNetCoreComponentsWebAssemblyBasicThemeModule), typeof(AbpIdentityBlazorModule), - typeof(AbpAccountBlazorModule), typeof(AbpTenantManagementBlazorModule) )] public class MyProjectNameBlazorModule : AbpModule From 6ddbdf4a74f71a92de64bd47e5a06990468dc321 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 1 Oct 2020 14:28:15 +0800 Subject: [PATCH 047/114] Update MyProjectNameDbMigrationService.cs --- .../Data/MyProjectNameDbMigrationService.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs index fe86ebe33b..db5b9291a6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs @@ -47,9 +47,9 @@ namespace MyCompanyName.MyProjectName.Data var migratedDatabaseSchemas = new HashSet(); foreach (var tenant in tenants) { - if (tenant.ConnectionStrings.Any()) + using (_currentTenant.Change(tenant.Id)) { - using (_currentTenant.Change(tenant.Id)) + if (tenant.ConnectionStrings.Any()) { var tenantConnectionStrings = tenant.ConnectionStrings .Select(x => x.Value) @@ -62,9 +62,9 @@ namespace MyCompanyName.MyProjectName.Data migratedDatabaseSchemas.AddIfNotContains(tenantConnectionStrings); } } - } - await SeedDataAsync(tenant); + await SeedDataAsync(tenant); + } Logger.LogInformation($"Successfully completed {tenant.Name} tenant database migrations."); } From 2c601218d403d8ed3f5a277763c35fd90abb44be Mon Sep 17 00:00:00 2001 From: Erol Arkat Date: Thu, 1 Oct 2020 10:06:30 +0300 Subject: [PATCH 048/114] version update --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index 6b1fd2f15e..a22af0116f 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 3.2.0-rc.2 + 3.2.0 $(NoWarn);CS1591;CS0436 https://abp.io/assets/abp_nupkg.png https://abp.io/ From 6f9e11d29537902f60e74d78511da4c159ad2f61 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 1 Oct 2020 15:32:28 +0800 Subject: [PATCH 049/114] Update Chinese localization --- .../Account/Localization/Resources/zh-Hans.json | 5 ++++- .../Account/Localization/Resources/zh-Hant.json | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json index a7be7fd0b8..340fe95f74 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json @@ -52,6 +52,9 @@ "ResetPassword_Information": "请输入您的新密码.", "YourPasswordIsSuccessfullyReset": "您的密码已经被重置成功.", "GoToTheApplication": "转到应用程序", - "BackToLogin": "返回登录" + "BackToLogin": "返回登录", + "ProfileTab:Password": "更改密码", + "ProfileTab:PersonalInfo": "个人信息", + "ReturnToApplication": "返回到应用程序" } } diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hant.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hant.json index b75be0f73a..f4fd2d65b1 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hant.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hant.json @@ -40,6 +40,21 @@ "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "啟用自行註冊", "Description:Abp.Account.IsSelfRegistrationEnabled": "是否允許使用者自行註冊帳號.", "DisplayName:Abp.Account.EnableLocalLogin": "使用本地帳號進行身分驗證", - "Description:Abp.Account.EnableLocalLogin": "伺服器是否允許使用者使用本地帳號進行身份驗證。" + "Description:Abp.Account.EnableLocalLogin": "伺服器是否允許使用者使用本地帳號進行身份驗證。", + "LoggedOutTitle": "註銷", + "LoggedOutText": "你已成功註銷並將馬上返回.", + "ReturnToText": "點擊此處返回到 {0}", + "ForgotPassword": "忘記密碼?", + "SendPasswordResetLink_Information": "密碼重置鏈接將發送到您的電子郵件以重置密碼. 如果您在幾分鐘內沒有收到電子郵件,請重試.", + "PasswordResetMailSentMessage": "帳戶恢復電子郵件已發送到您的電子郵件地址. 如果您在15分鐘內未在收件箱中看到此電子郵件,請檢查垃圾郵件,並標記為非垃圾郵件.", + "ResetPassword": "重設密碼", + "ConfirmPassword": "確認(重復)密碼", + "ResetPassword_Information": "請輸入您的新密碼.", + "YourPasswordIsSuccessfullyReset": "您的密碼已經被重置成功.", + "GoToTheApplication": "轉到應用程序", + "BackToLogin": "返回登錄", + "ProfileTab:Password": "更改密碼", + "ProfileTab:PersonalInfo": "個人信息", + "ReturnToApplication": "返回到應用程序" } } From ce14d3d06c71d2d7e90a02207fa5fe32875fff27 Mon Sep 17 00:00:00 2001 From: erolarkat Date: Thu, 1 Oct 2020 12:41:53 +0300 Subject: [PATCH 050/114] npm packages 3.2.0 --- .../package.json | 2 +- .../yarn.lock | 224 ++++++------ .../package.json | 4 +- .../yarn.lock | 260 +++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 332 +++++++++--------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 238 ++++++------- modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 238 ++++++------- .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 238 ++++++------- .../host/Volo.CmsKit.Web.Unified/package.json | 2 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 238 ++++++------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 298 ++++++++-------- npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 22 +- npm/ng-packs/packages/account/package.json | 4 +- npm/ng-packs/packages/components/package.json | 4 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 4 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 4 +- .../packages/theme-shared/package.json | 4 +- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 30 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/cropperjs/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 4 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/star-rating-svg/package.json | 4 +- npm/packs/sweetalert/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 10 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/virtual-file-explorer/package.json | 6 +- templates/app/angular/package.json | 12 +- .../package.json | 2 +- .../yarn.lock | 238 ++++++------- .../package.json | 2 +- .../yarn.lock | 238 ++++++------- .../package.json | 2 +- .../yarn.lock | 238 ++++++------- .../package.json | 2 +- .../MyCompanyName.MyProjectName.Web/yarn.lock | 238 ++++++------- templates/module/angular/package.json | 12 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../yarn.lock | 238 ++++++------- .../package.json | 2 +- .../yarn.lock | 238 ++++++------- .../package.json | 2 +- .../yarn.lock | 238 ++++++------- 89 files changed, 2041 insertions(+), 2041 deletions(-) diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 56d6e1a68f..fc327ad536 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^3.2.0-rc.2", + "@abp/aspnetcore.mvc.ui.theme.shared": "^3.2.0", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index a5b1e77851..8252be1892 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.shared@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,145 +34,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 4ed08c4605..7d6c2e8636 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2", - "@abp/prismjs": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", + "@abp/prismjs": "^3.2.0" }, "devDependencies": {} } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index 180ba822ff..7b0d3f4b79 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,162 +41,162 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0-rc.2.tgz#5b770b15259f002348de5a26fd8583cb9f8f4fa5" - integrity sha512-0JkslTmo8l/sIoluCCUaXwEgG8mmOHoR+bEdGBmcy97GLD3ux4TowItulF9aLG3VmJCpJNJF579bp7zik5R/Qw== +"@abp/clipboard@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0.tgz#9c9f95c40639cabe89e6bc86ee0f33c853321225" + integrity sha512-WGonC5Hp4FCUBxevIt180QWIqOri0eO//mlRLBqj7gvo7H6zt5f4t90XKF24ZYWXjx7bCbIQQFt5t5ByeqdcJg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" clipboard "^2.0.6" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0-rc.2.tgz#da9073c9ee86a5d2b5970ee39a03b6eccd5ebac5" - integrity sha512-siResQWNtG5V6Q1xqY9S1wONIgKhKge5Oa0qTHjdljntZSvNTaEduFLW33YPMooAM3Ig6Gwlk8yvt+8ZOdGyVQ== +"@abp/prismjs@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0.tgz#11c7c3023f11097a3eb26d8a0c04f7fa39d9531b" + integrity sha512-OafE/K8rC7popNQDh1J97AtPuxVeAFWh/msfHE3K5nmdYABpl8U7190ITw5COcVjjFLCEONpkkhfN/9ZdAQ8fQ== dependencies: - "@abp/clipboard" "~3.2.0-rc.2" - "@abp/core" "~3.2.0-rc.2" + "@abp/clipboard" "~3.2.0" + "@abp/core" "~3.2.0" prismjs "^1.20.0" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index 6f2b1aab9f..759fb11760 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2", - "@abp/blogging": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", + "@abp/blogging": "^3.2.0" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index a2b6df4e66..0b75f07db8 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,214 +41,214 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/blogging@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.2.0-rc.2.tgz#1bf6a16e1891c423dde8e337161b612cc58b9985" - integrity sha512-VE+LmZcU1+bLfzNAKkfOFkMIu5JvCXmYRVNZKw7HBWSNpyjGvJcBMeTfhI4sSKHvoeAwgey0MQ2PCQm4/8Ft1w== +"@abp/blogging@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.2.0.tgz#a963c128fe92666a1b0f9059c2e9fb6519545ad3" + integrity sha512-+moP5svgo7eo3vegepH9Dff66kXLojtDN/5iLXZeNQmf+7KFmB7eATzIMJgWQzgRm99lBRERiGpQcAtWgpxpVA== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - "@abp/owl.carousel" "~3.2.0-rc.2" - "@abp/prismjs" "~3.2.0-rc.2" - "@abp/tui-editor" "~3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + "@abp/owl.carousel" "~3.2.0" + "@abp/prismjs" "~3.2.0" + "@abp/tui-editor" "~3.2.0" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0-rc.2.tgz#5b770b15259f002348de5a26fd8583cb9f8f4fa5" - integrity sha512-0JkslTmo8l/sIoluCCUaXwEgG8mmOHoR+bEdGBmcy97GLD3ux4TowItulF9aLG3VmJCpJNJF579bp7zik5R/Qw== +"@abp/clipboard@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0.tgz#9c9f95c40639cabe89e6bc86ee0f33c853321225" + integrity sha512-WGonC5Hp4FCUBxevIt180QWIqOri0eO//mlRLBqj7gvo7H6zt5f4t90XKF24ZYWXjx7bCbIQQFt5t5ByeqdcJg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" clipboard "^2.0.6" -"@abp/codemirror@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.2.0-rc.2.tgz#d4e30620bd43d9f93e46f56ce583a8b8e75c8b41" - integrity sha512-wvWixzZsxgifwRucGpd0jr3VsEMHgVVr4pKpvVYegn6mVbah4XofBUPqMYRbCFIXVI3aKfFkstr3NnJ8jFdtng== +"@abp/codemirror@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.2.0.tgz#b9604d31591522b3c3c140830444422f9742c9d7" + integrity sha512-Qv/+g6NSsv5M3puE3MgF17JPvWytkG4PDMyEX8cf8DOe2FCb3p44EbFyN6sqMY5l621S7fhjIRJfMAZ9I5FcZQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" codemirror "^5.54.0" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.2.0-rc.2.tgz#7bbdedbbe5f5396aebd2806c93b992086f7f7947" - integrity sha512-7pBS45whS/i1jJddZ+iVVpwdCFlM7gnqLX8cj6it8AC+xXh6nv+1OVw+IzDx3qlUiFHTCLetTZLm8KnM6Tfd6A== +"@abp/highlight.js@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.2.0.tgz#b180ef024744599a647b942c278eefd58722280e" + integrity sha512-Hcc2RbjqbmIZWaKfWs/6utpwl5Ehc/tMC9hG1m61uXwO+3ISif5MCb1GQ1i2ycFJJRumdHgfm2tFAyGXGS9Z6Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.2.0-rc.2.tgz#e45d18dc2334eee17b93395718481de9feae8aa9" - integrity sha512-8gQDcmwZ9VCexp49EKV8Vtxi8I/KyMX8Kgma7XJWt0uot9lq2PnodMhSAz4YCs8OYDFO7PR+wHwQDU4LnTZphw== +"@abp/markdown-it@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.2.0.tgz#6fdd0b7f43bffce569908ba907c85f351ff89164" + integrity sha512-dGyM9Zdj21Pf08KY/X2lYtDr+lMX8v6TPHMKQVpgkDQ3/fzWDcg0MAr4CWUpg+BGLIhpwDWyKVBI/nQtEG/ihg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" markdown-it "^11.0.0" -"@abp/owl.carousel@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.2.0-rc.2.tgz#33d4890d1353db5b8604179f5904b3d1cd9954b2" - integrity sha512-kfMbwiAVZw0pegQVBtwT9ipuwijbIV2fGRJtoIEfKaexokwqTASTyZuPKkOPmE3PZd1gLdBPmCwCq/wXcwKG3A== +"@abp/owl.carousel@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.2.0.tgz#dd4c0c0bd9b4cc033577fd885fa10ab4670ccaf1" + integrity sha512-bxVkjkW1gWTSFuyM1iqHY8esTf+65e/tUZIDf+El0/xLbVkygeAZZtumMnwkizCAzWifBpQSd3QgGkY+wtabVw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" owl.carousel "^2.3.4" -"@abp/prismjs@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0-rc.2.tgz#da9073c9ee86a5d2b5970ee39a03b6eccd5ebac5" - integrity sha512-siResQWNtG5V6Q1xqY9S1wONIgKhKge5Oa0qTHjdljntZSvNTaEduFLW33YPMooAM3Ig6Gwlk8yvt+8ZOdGyVQ== +"@abp/prismjs@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0.tgz#11c7c3023f11097a3eb26d8a0c04f7fa39d9531b" + integrity sha512-OafE/K8rC7popNQDh1J97AtPuxVeAFWh/msfHE3K5nmdYABpl8U7190ITw5COcVjjFLCEONpkkhfN/9ZdAQ8fQ== dependencies: - "@abp/clipboard" "~3.2.0-rc.2" - "@abp/core" "~3.2.0-rc.2" + "@abp/clipboard" "~3.2.0" + "@abp/core" "~3.2.0" prismjs "^1.20.0" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/tui-editor@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.2.0-rc.2.tgz#60d1e6b5c4e97eeccd0a91902e2c570a0fb5682d" - integrity sha512-QxEbeL/kxqvPL7tRk9jqOAI5kzWKenCcdC24HhVgvY09AQQzMQYCjdaZkevsbnX8E5ZADEnuBwWJfy7CQYMPVQ== +"@abp/tui-editor@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.2.0.tgz#025d3348db0aa9f90aa01c49010a15227e029cc0" + integrity sha512-8dKALM8tRuMdoa1WNOekiwAdDwFAMjyf9wy3FiWLX/oyJOkQhRyxsT455TxQ2yt7pTDiY3DrYyF1xeqwxbGoRw== dependencies: - "@abp/codemirror" "~3.2.0-rc.2" - "@abp/highlight.js" "~3.2.0-rc.2" - "@abp/jquery" "~3.2.0-rc.2" - "@abp/markdown-it" "~3.2.0-rc.2" + "@abp/codemirror" "~3.2.0" + "@abp/highlight.js" "~3.2.0" + "@abp/jquery" "~3.2.0" + "@abp/markdown-it" "~3.2.0" tui-editor "^1.4.10" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index c7882356b7..32abffa6e8 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index f482556466..972be20fa8 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 888461cb28..3c883b278e 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.2.0-rc.2", - "@abp/ng.identity": "~3.2.0-rc.2", - "@abp/ng.setting-management": "~3.2.0-rc.2", - "@abp/ng.tenant-management": "~3.2.0-rc.2", - "@abp/ng.theme.basic": "~3.2.0-rc.2", + "@abp/ng.account": "~3.2.0", + "@abp/ng.identity": "~3.2.0", + "@abp/ng.setting-management": "~3.2.0", + "@abp/ng.tenant-management": "~3.2.0", + "@abp/ng.theme.basic": "~3.2.0", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 5525dc9216..1806d9cad0 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.2.0-rc.2", - "@abp/ng.theme.shared": ">=3.2.0-rc.2" + "@abp/ng.core": ">=3.2.0", + "@abp/ng.theme.shared": ">=3.2.0" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 35d97dedec..fba2dab1f7 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index cd75357668..72a5d2df3d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 89e2d444b3..9b79ab6170 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 3b540c3620..a37f397509 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 89e2d444b3..9b79ab6170 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 9ef4b570e9..1a8ccc322d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index d084157d70..3c775e0c73 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2", - "@abp/docs": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", + "@abp/docs": "^3.2.0" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 67945d6f3c..d3ad70f70e 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.2.0-rc.2.tgz#0fc8411ad629fcfa773267b289d293aba666f9a5" - integrity sha512-3Nq3fRkOa5Voe2gFeFquH7/p4T6hKstO130efdWvur2Cwu7V0PDc8UDmEJZZJhEIqqkEqFhjGxaH10B04Krl3Q== +"@abp/anchor-js@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.2.0.tgz#df7e4483d2fbc9c3160031e42e6b27fff5d24d7b" + integrity sha512-rA1H6YWvS4bqGevdGM9H+D84ESh+Ka9eg7RzGoWyP4yK+/+Kgj8aOXPXtUrYlETfGwqg4dXQ1iu+AQUELcOaMQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" anchor-js "^4.2.2" -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,181 +49,181 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0-rc.2.tgz#5b770b15259f002348de5a26fd8583cb9f8f4fa5" - integrity sha512-0JkslTmo8l/sIoluCCUaXwEgG8mmOHoR+bEdGBmcy97GLD3ux4TowItulF9aLG3VmJCpJNJF579bp7zik5R/Qw== +"@abp/clipboard@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0.tgz#9c9f95c40639cabe89e6bc86ee0f33c853321225" + integrity sha512-WGonC5Hp4FCUBxevIt180QWIqOri0eO//mlRLBqj7gvo7H6zt5f4t90XKF24ZYWXjx7bCbIQQFt5t5ByeqdcJg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" clipboard "^2.0.6" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/docs@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.2.0-rc.2.tgz#17e63ef37b87a27079f54cce9a5edc0ac035bf33" - integrity sha512-N4Xho0VZ2h31ILDTKz9Z/bUG5ZOfBl0tbMTEeMB7YOrcJiUyFXzYgVWhip8O+MFZqwm+/RHAwZR2G+EoiNnUfw== +"@abp/docs@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.2.0.tgz#f4b5284af7ebbd1f5b9b741ebfb61ac2fd71fa4a" + integrity sha512-ZrCUHjrTba82NJRwZYUUyLxWIp6tu8ZdHpq1vnlfr5rZ+5m1vAx0dRi0VY3x50ZifIE65cqoI91F32fHYiE8KA== dependencies: - "@abp/anchor-js" "~3.2.0-rc.2" - "@abp/clipboard" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/popper.js" "~3.2.0-rc.2" - "@abp/prismjs" "~3.2.0-rc.2" + "@abp/anchor-js" "~3.2.0" + "@abp/clipboard" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/popper.js" "~3.2.0" + "@abp/prismjs" "~3.2.0" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.2.0-rc.2.tgz#4f4c6599e50f8f43a210282c0226420fcb98a104" - integrity sha512-jlnUKvIP4A2jmsNdqD55Sfhg3lbwMdxTitN59lx8QUfS4L7sPKBXc26BmWV1KsdJVvws7yiJd1NhN1OCORDZJQ== +"@abp/popper.js@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.2.0.tgz#2b1c078ad56a8e80e4030154b0e30f9e07a5e103" + integrity sha512-mdmx6qrkZvOKYBD9n0cblMKygWYprn9Mw8BB468oV/vf6izzGYgiOsC2dtwXLrVsELIaPQMZZbKVeeyPxgiH0Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" popper.js "^1.16.0" -"@abp/prismjs@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0-rc.2.tgz#da9073c9ee86a5d2b5970ee39a03b6eccd5ebac5" - integrity sha512-siResQWNtG5V6Q1xqY9S1wONIgKhKge5Oa0qTHjdljntZSvNTaEduFLW33YPMooAM3Ig6Gwlk8yvt+8ZOdGyVQ== +"@abp/prismjs@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0.tgz#11c7c3023f11097a3eb26d8a0c04f7fa39d9531b" + integrity sha512-OafE/K8rC7popNQDh1J97AtPuxVeAFWh/msfHE3K5nmdYABpl8U7190ITw5COcVjjFLCEONpkkhfN/9ZdAQ8fQ== dependencies: - "@abp/clipboard" "~3.2.0-rc.2" - "@abp/core" "~3.2.0-rc.2" + "@abp/clipboard" "~3.2.0" + "@abp/core" "~3.2.0" prismjs "^1.20.0" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/npm/lerna.json b/npm/lerna.json index c399610076..0dc2807678 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index 189f0c6a45..35ec182a4a 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 2be429f268..0ad3879ba5 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -25,17 +25,17 @@ "postinstall": "npm run compile:ivy" }, "devDependencies": { - "@abp/ng.account": "~3.2.0-rc.2", - "@abp/ng.core": "~3.2.0-rc.2", - "@abp/ng.feature-management": "~3.2.0-rc.2", - "@abp/ng.identity": "~3.2.0-rc.2", - "@abp/ng.permission-management": "~3.2.0-rc.2", - "@abp/ng.schematics": "~3.2.0-rc.2", - "@abp/ng.setting-management": "~3.2.0-rc.2", - "@abp/ng.tenant-management": "~3.2.0-rc.2", - "@abp/ng.theme.basic": "~3.2.0-rc.2", - "@abp/ng.theme.shared": "~3.2.0-rc.2", - "@abp/utils": "^3.2.0-rc.2", + "@abp/ng.account": "~3.2.0", + "@abp/ng.core": "~3.2.0", + "@abp/ng.feature-management": "~3.2.0", + "@abp/ng.identity": "~3.2.0", + "@abp/ng.permission-management": "~3.2.0", + "@abp/ng.schematics": "~3.2.0", + "@abp/ng.setting-management": "~3.2.0", + "@abp/ng.tenant-management": "~3.2.0", + "@abp/ng.theme.basic": "~3.2.0", + "@abp/ng.theme.shared": "~3.2.0", + "@abp/utils": "^3.2.0", "@angular-builders/jest": "^10.0.0", "@angular-devkit/build-angular": "~0.1001.2", "@angular-devkit/build-ng-packagr": "~0.1001.2", diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index c77c1cb1f5..e1ade0042b 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.account", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.2.0-rc.2", + "@abp/ng.theme.shared": "~3.2.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index ed73fbd9de..009a85f312 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.components", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=3.2.0-rc.2", + "@abp/ng.core": ">=3.2.0", "@ng-bootstrap/ng-bootstrap": ">=6.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 58b7d6d087..494aa62d6f 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "^3.2.0-rc.2", + "@abp/utils": "^3.2.0", "@angular/localize": "~10.0.10", "@ngxs/router-plugin": "^3.7.0", "@ngxs/storage-plugin": "^3.7.0", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 5fe64b1791..80ccfa562c 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.2.0-rc.2", + "@abp/ng.theme.shared": "~3.2.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index 471e553017..d0dc3eb54c 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.identity", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~3.2.0-rc.2", - "@abp/ng.theme.shared": "~3.2.0-rc.2", + "@abp/ng.permission-management": "~3.2.0", + "@abp/ng.theme.shared": "~3.2.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index c49d37f554..1d5a965074 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.2.0-rc.2", + "@abp/ng.theme.shared": "~3.2.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 20d4447275..e404d5cedd 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "3.2.0-rc.2", + "version": "3.2.0", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 1801d460bc..7927944a5a 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.setting-management", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.2.0-rc.2", + "@abp/ng.theme.shared": "~3.2.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index e27d018fc0..346263467b 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~3.2.0-rc.2", - "@abp/ng.theme.shared": "~3.2.0-rc.2", + "@abp/ng.feature-management": "~3.2.0", + "@abp/ng.theme.shared": "~3.2.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 6cfd129be2..c571438d84 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.basic", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.2.0-rc.2", + "@abp/ng.theme.shared": "~3.2.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index 74b482a40d..eed100dff9 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "3.2.0-rc.2", + "version": "3.2.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~3.2.0-rc.2", + "@abp/ng.core": "~3.2.0", "@fortawesome/fontawesome-free": "^5.14.0", "@ng-bootstrap/ng-bootstrap": "^7.0.0", "@ngx-validate/core": "^0.0.11", diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index da7bd645b8..e19192bbd5 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "anchor-js": "^4.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 5c01d66e81..642eec4e55 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.2.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 435970714c..900bccfb31 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,24 +1,24 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~3.2.0-rc.2", - "@abp/bootstrap": "~3.2.0-rc.2", - "@abp/bootstrap-datepicker": "~3.2.0-rc.2", - "@abp/datatables.net-bs4": "~3.2.0-rc.2", - "@abp/font-awesome": "~3.2.0-rc.2", - "@abp/jquery-form": "~3.2.0-rc.2", - "@abp/jquery-validation-unobtrusive": "~3.2.0-rc.2", - "@abp/lodash": "~3.2.0-rc.2", - "@abp/luxon": "~3.2.0-rc.2", - "@abp/malihu-custom-scrollbar-plugin": "~3.2.0-rc.2", - "@abp/select2": "~3.2.0-rc.2", - "@abp/sweetalert": "~3.2.0-rc.2", - "@abp/timeago": "~3.2.0-rc.2", - "@abp/toastr": "~3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui": "~3.2.0", + "@abp/bootstrap": "~3.2.0", + "@abp/bootstrap-datepicker": "~3.2.0", + "@abp/datatables.net-bs4": "~3.2.0", + "@abp/font-awesome": "~3.2.0", + "@abp/jquery-form": "~3.2.0", + "@abp/jquery-validation-unobtrusive": "~3.2.0", + "@abp/lodash": "~3.2.0", + "@abp/luxon": "~3.2.0", + "@abp/malihu-custom-scrollbar-plugin": "~3.2.0", + "@abp/select2": "~3.2.0", + "@abp/sweetalert": "~3.2.0", + "@abp/timeago": "~3.2.0", + "@abp/toastr": "~3.2.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 545eb74ab1..6bbaad44eb 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 843591c10f..ec72ff3331 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.2.0-rc.2", - "@abp/owl.carousel": "~3.2.0-rc.2", - "@abp/prismjs": "~3.2.0-rc.2", - "@abp/tui-editor": "~3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.2.0", + "@abp/owl.carousel": "~3.2.0", + "@abp/prismjs": "~3.2.0", + "@abp/tui-editor": "~3.2.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 83afa518ee..dde7632f9b 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/bootstrap-datepicker", "publishConfig": { "access": "public" diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index a6c0cd8c36..f85cb12d85 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "bootstrap": "^4.5.0", "bootstrap-v4-rtl": "4.4.1-2" }, diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 0864e7b0d3..7ab437b75c 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 56b3efbd21..46c477a0c7 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "clipboard": "^2.0.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 0041199ffb..0d2c6cbd12 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "codemirror": "^5.54.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index d2d87d8f85..2e70056ee8 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/core", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/utils": "^3.2.0-rc.2" + "@abp/utils": "^3.2.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index 61b028a349..8730203935 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "cropperjs": "^1.5.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 95d1e24b01..f0ba9af1b8 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~3.2.0-rc.2", + "@abp/datatables.net": "~3.2.0", "datatables.net-bs4": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index dca81c797e..6af41c035f 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.2.0-rc.2", + "@abp/jquery": "~3.2.0", "datatables.net": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index e69e963d60..0f74d41885 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~3.2.0-rc.2", - "@abp/clipboard": "~3.2.0-rc.2", - "@abp/malihu-custom-scrollbar-plugin": "~3.2.0-rc.2", - "@abp/popper.js": "~3.2.0-rc.2", - "@abp/prismjs": "~3.2.0-rc.2" + "@abp/anchor-js": "~3.2.0", + "@abp/clipboard": "~3.2.0", + "@abp/malihu-custom-scrollbar-plugin": "~3.2.0", + "@abp/popper.js": "~3.2.0", + "@abp/prismjs": "~3.2.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index 5ba331e800..4bbedfd30b 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index ec682426c7..6039de5eec 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "@fortawesome/fontawesome-free": "^5.13.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index 7db03d42c9..11d950f58e 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2" + "@abp/core": "~3.2.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 01517e902b..7f2691f24f 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.2.0-rc.2", + "@abp/jquery": "~3.2.0", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 0010af7c88..7e1810082d 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~3.2.0-rc.2", + "@abp/jquery-validation": "~3.2.0", "jquery-validation-unobtrusive": "^3.2.11" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 4337942550..453ed73717 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.2.0-rc.2", + "@abp/jquery": "~3.2.0", "jquery-validation": "^1.19.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index 64f982c936..26bc94fa2c 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "jquery": "~3.5.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 98302cc6c9..f617e79eb3 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.2.0-rc.2", + "@abp/jquery": "~3.2.0", "jstree": "^3.3.9" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 8e46a551b7..70079af1e2 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "lodash": "^4.17.15" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index c0a5b8e2b1..c136a899ba 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/luxon", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "luxon": "^1.24.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index fc19016a58..cea5d3c47f 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 7e939b0566..23412e06b2 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "markdown-it": "^11.0.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 1726b513de..bc56aa7c46 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 8e8631aa95..988a522538 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "popper.js": "^1.16.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 2ae777fcd4..b5842be17b 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.2.0-rc.2", - "@abp/core": "~3.2.0-rc.2", + "@abp/clipboard": "~3.2.0", + "@abp/core": "~3.2.0", "prismjs": "^1.20.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 392a6d81dd..96ff6b4cbe 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index a43a72f618..3bfd1169cc 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "@microsoft/signalr": "~3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json index 4c5ac00e7f..ca198bb5fe 100644 --- a/npm/packs/star-rating-svg/package.json +++ b/npm/packs/star-rating-svg/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/star-rating-svg", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.2.0-rc.2", + "@abp/jquery": "~3.2.0", "star-rating-svg": "^3.5.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index 91fbec3fc3..019edcbac6 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "sweetalert": "^2.1.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index 5507793481..303c3adc76 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.2.0-rc.2", + "@abp/jquery": "~3.2.0", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 61e55facfc..bf3827df65 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.2.0-rc.2", + "@abp/jquery": "~3.2.0", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index 5c39397dcf..b7460e54b8 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,14 +1,14 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~3.2.0-rc.2", - "@abp/highlight.js": "~3.2.0-rc.2", - "@abp/jquery": "~3.2.0-rc.2", - "@abp/markdown-it": "~3.2.0-rc.2", + "@abp/codemirror": "~3.2.0", + "@abp/highlight.js": "~3.2.0", + "@abp/jquery": "~3.2.0", + "@abp/markdown-it": "~3.2.0", "tui-editor": "^1.4.10" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index 2bf4722eb4..7286abc02a 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.2.0-rc.2", + "@abp/core": "~3.2.0", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 483e9a1590..2e4788bed1 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "3.2.0-rc.2", + "version": "3.2.0", "scripts": { "prepublish": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index b06b1c6b4a..20605a9942 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "3.2.0-rc.2", + "version": "3.2.0", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.2.0-rc.2", - "@abp/prismjs": "~3.2.0-rc.2" + "@abp/clipboard": "~3.2.0", + "@abp/prismjs": "~3.2.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index df7c39a260..68a90c79ea 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,11 +12,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.2.0-rc.2", - "@abp/ng.identity": "~3.2.0-rc.2", - "@abp/ng.setting-management": "~3.2.0-rc.2", - "@abp/ng.tenant-management": "~3.2.0-rc.2", - "@abp/ng.theme.basic": "~3.2.0-rc.2", + "@abp/ng.account": "~3.2.0", + "@abp/ng.identity": "~3.2.0", + "@abp/ng.setting-management": "~3.2.0", + "@abp/ng.tenant-management": "~3.2.0", + "@abp/ng.theme.basic": "~3.2.0", "@angular/animations": "~10.1.2", "@angular/common": "~10.1.2", "@angular/compiler": "~10.1.2", @@ -30,7 +30,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.2.0-rc.2", + "@abp/ng.schematics": "~3.2.0", "@angular-devkit/build-angular": "~0.1001.2", "@angular-devkit/build-ng-packagr": "~0.1001.2", "@angular/cli": "~10.1.2", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index 89e2d444b3..9b79ab6170 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock index 72db4ebbce..523197e919 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json index 35d97dedec..fba2dab1f7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index cd75357668..72a5d2df3d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index 89e2d444b3..9b79ab6170 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock index cd75357668..72a5d2df3d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index 89e2d444b3..9b79ab6170 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock index 72db4ebbce..523197e919 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index a4240fc61b..328dd7f8e0 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.2.0-rc.2", - "@abp/ng.identity": "~3.2.0-rc.2", - "@abp/ng.setting-management": "~3.2.0-rc.2", - "@abp/ng.tenant-management": "~3.2.0-rc.2", - "@abp/ng.theme.basic": "~3.2.0-rc.2", + "@abp/ng.account": "~3.2.0", + "@abp/ng.identity": "~3.2.0", + "@abp/ng.setting-management": "~3.2.0", + "@abp/ng.tenant-management": "~3.2.0", + "@abp/ng.theme.basic": "~3.2.0", "@angular/animations": "~10.1.2", "@angular/common": "~10.1.2", "@angular/compiler": "~10.1.2", @@ -33,7 +33,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.2.0-rc.2", + "@abp/ng.schematics": "~3.2.0", "@angular-devkit/build-angular": "~0.1001.2", "@angular-devkit/build-ng-packagr": "~0.1001.2", "@angular/cli": "~10.1.2", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index 60b5503f3c..5393668be9 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.2.0-rc.2", - "@abp/ng.theme.shared": ">=3.2.0-rc.2" + "@abp/ng.core": ">=3.2.0", + "@abp/ng.theme.shared": ">=3.2.0" }, "dependencies": { "tslib": "^2.0.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json index 35d97dedec..fba2dab1f7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index cd75357668..72a5d2df3d 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index 89e2d444b3..9b79ab6170 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock index cd75357668..72a5d2df3d 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index 89e2d444b3..9b79ab6170 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock index 9ef4b570e9..1a8ccc322d 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0-rc.2.tgz#c13c12f3e9350f4a9153ca04ea9b91891410f106" - integrity sha512-qUaOs14GqI2hauMP/LltrS+YUj/sHgnSyTqmCIdSA6AINcAxPj5JpTFSTzub66qmlo6PrDOp+wGbwiG+NURGjA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0-rc.2.tgz#c785f00f7f6590024c40dd9f99d6b140a6fb817c" - integrity sha512-+9vHqD9oIxxmQI28tcbYxclMKOmeWR07JJn/w/2X7zEj2uE4ZnjFWroKsTSb6zvPLKxZi+Sh6SlrJ0xcOZJmvQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.2.0-rc.2" - "@abp/bootstrap" "~3.2.0-rc.2" - "@abp/bootstrap-datepicker" "~3.2.0-rc.2" - "@abp/datatables.net-bs4" "~3.2.0-rc.2" - "@abp/font-awesome" "~3.2.0-rc.2" - "@abp/jquery-form" "~3.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.2.0-rc.2" - "@abp/lodash" "~3.2.0-rc.2" - "@abp/luxon" "~3.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.2.0-rc.2" - "@abp/select2" "~3.2.0-rc.2" - "@abp/sweetalert" "~3.2.0-rc.2" - "@abp/timeago" "~3.2.0-rc.2" - "@abp/toastr" "~3.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0-rc.2.tgz#0467845f12c38693a8e06d877b2e8c256588fbdc" - integrity sha512-ECXJXij6d32O4OkI3g8Z5CUGPlvqmXqIyMXoK80QlhtokbxEK+wZZyIZm3QXw//8XWDTF9ujW7eDaNBiVSR6vg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" + integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" + integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.2.0" + "@abp/bootstrap" "~3.2.0" + "@abp/bootstrap-datepicker" "~3.2.0" + "@abp/datatables.net-bs4" "~3.2.0" + "@abp/font-awesome" "~3.2.0" + "@abp/jquery-form" "~3.2.0" + "@abp/jquery-validation-unobtrusive" "~3.2.0" + "@abp/lodash" "~3.2.0" + "@abp/luxon" "~3.2.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.2.0" + "@abp/select2" "~3.2.0" + "@abp/sweetalert" "~3.2.0" + "@abp/timeago" "~3.2.0" + "@abp/toastr" "~3.2.0" + +"@abp/aspnetcore.mvc.ui@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" + integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0-rc.2.tgz#fbd33fc5dc675ab5356b24c15d8e2467e3aff3e0" - integrity sha512-gS2IhD4T/KK2xMtA/f7cpwD/TiGkHchXJxxGWpTYAQYHB0MEkf+nHXrNx7wH+KtNhJbXPf0VcC0ghOnDR1xoNA== +"@abp/bootstrap-datepicker@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" + integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0-rc.2.tgz#91a756303da1b7436b3c27f93597bc08cfa7fce0" - integrity sha512-UXBuAATzjoSWcCNETifBomu9YDWPb7jxpWeBVr2f4LQNpaLg+PjonVisYtlm83/EIxzZ294krCX43K4mLLkqzw== +"@abp/bootstrap@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" + integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0-rc.2.tgz#e9197ba392dcea16fd1543c65002807b7b2e63d0" - integrity sha512-d6DTWkvP9pr9gmxBxYd/UgLw/CR3C55DZXFThv76P0+KGEzuEKOybAWIr8+d7wClYXRKCigHNex7ecAvWXpN7g== +"@abp/core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" + integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== dependencies: - "@abp/utils" "^3.2.0-rc.2" + "@abp/utils" "^3.2.0" -"@abp/datatables.net-bs4@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0-rc.2.tgz#3e003126dd1bef827d06864cf9d01774d93dbf89" - integrity sha512-fsUaJVdx3BbgrN7q9dC85mW+YJap/vp7BWNX/t3TerLkLm5it6i7wNQKER5Tx94r+8TZ/VYc5jYpBEQxa02XCw== +"@abp/datatables.net-bs4@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" + integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== dependencies: - "@abp/datatables.net" "~3.2.0-rc.2" + "@abp/datatables.net" "~3.2.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0-rc.2.tgz#0c90543627f8fd56f92e374f286754116161a608" - integrity sha512-jMhv6fNfZ7vqtjS5Qmy8Sb3/SqbTX1sQQRKlEVGFDjBcFz3FQrUyAB2T0sdpQlebHrql739Wt/NzwT1tCKscpw== +"@abp/datatables.net@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" + integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0-rc.2.tgz#4b8ab19530e757ec3ef1090c50328d12d39ef810" - integrity sha512-/SLu953KUoszJKm1+gFkosyP6RFIb4lyyVWjKmrBQ62P40jk4GrKFrGE9CHWtn2gGsdPiYUtT6fDxGxsGiiB8g== +"@abp/font-awesome@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" + integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0-rc.2.tgz#3134714e4c269877d8a3a9e293bb83262809c8fd" - integrity sha512-HhIDl0p66+vyGexwLE1wFg+2EkDy7FjOzao4a9319vfBs+qm16/mHAlDa1BqhymTZTt4vPLoFTvVCjX1ylD5Kw== +"@abp/jquery-form@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" + integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0-rc.2.tgz#15e84a4143e74ef8ca0f8d55215c0636bcda0ad8" - integrity sha512-Nf1Y1oztQlA28bsCkdgYkD5qvxxzzu2/Bj+DIHHAK03/SgWXfC0WX66suM720Mq3E9vvxk2e4MSVRgTsI6mM9w== +"@abp/jquery-validation-unobtrusive@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" + integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== dependencies: - "@abp/jquery-validation" "~3.2.0-rc.2" + "@abp/jquery-validation" "~3.2.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0-rc.2.tgz#7a5f4fc8c18ce1d53d1886f1a4f047e03fb6c728" - integrity sha512-TgIBaynQfRmRJE7ts4H4DsyIg4EL7BZ2cldLR7H5XFo2VWVwSNqDnDyyN5R9+PUBHaQo8vvQklaOBH7zPig/Zg== +"@abp/jquery-validation@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" + integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0-rc.2.tgz#478f4ad1e40fd05b3e9bdcbc3d8fd4343b09ea11" - integrity sha512-vsOKJl7DSnNqqHh6ojWZQFT3+aWAR7KD3q7O+Ry3UGO0ExVR73l6iDueWJ67OpkRsRjQbI7ajWP3yhnGS6QXpQ== +"@abp/jquery@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" + integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" jquery "~3.5.1" -"@abp/lodash@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0-rc.2.tgz#1bc077230296d74b41c956cb6b695c9940f9a475" - integrity sha512-eaVqNCd8kKnbyfhLrDtTV9bW9rQ+spdc6dlGY8uMuG4svPC7EGhQlKhX5exuxNmj7ZGHVFAeaLeD7baheDPDTA== +"@abp/lodash@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" + integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" lodash "^4.17.15" -"@abp/luxon@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0-rc.2.tgz#c8de3eccd787bbbf304d028f0dd05f3d0e961536" - integrity sha512-kU6+MPU6yUEZ9i/GY/2au3DcMgUOqBcGyB/kCnMiMMQmVRqxNA8N1ijsENfvXHZwAN7YNtQ24hOHHgLdUnanww== +"@abp/luxon@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" + integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0-rc.2.tgz#55838bf814df9833a1367315ace5f6383ff7a104" - integrity sha512-EiC9wT/oaqSi3eAHOVm250DAlvUR0900VrkPkPkL4RLuzQiiwpWqN/v4J4wG0NGVTJkAhwforNkRphxUM23SSw== +"@abp/malihu-custom-scrollbar-plugin@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" + integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0-rc.2.tgz#82d256e0852556d4b5c81b5aedc2b3fac6bafb61" - integrity sha512-AwZ3VjKpcBWYywSYXGNgYJWRXDKLodEWUVCafUBOvd6yVrlXuDevkOPgTAeuOj+84oG2Qw/c+Um+gyq7o7Nq6A== +"@abp/select2@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" + integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" select2 "^4.0.13" -"@abp/sweetalert@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0-rc.2.tgz#30e4cd0895708d32cedf9b4b7b431b75532358b0" - integrity sha512-gq7irAt7pvNseCpEXr9hX3moL7svT+Or1h9oquzhc+mt3RoQlnWfVwBZ8Qq482GSSObhMxJzKu6GCm8xwmLwOA== +"@abp/sweetalert@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" + integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== dependencies: - "@abp/core" "~3.2.0-rc.2" + "@abp/core" "~3.2.0" sweetalert "^2.1.2" -"@abp/timeago@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0-rc.2.tgz#b90faae2a57c724b897d1a26551bf358a89beadd" - integrity sha512-iUhVCq07+1sU5RK///In9U368ijlvKkVBUy3Ngd96NDSnKBcoSm/dzd2mj/MtyBfEyuXTKUBnH/0oG1FEcw0xA== +"@abp/timeago@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" + integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" timeago "^1.6.7" -"@abp/toastr@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0-rc.2.tgz#8630f6d96019dc6cd1a430db3056662deccec58d" - integrity sha512-r43TNLjBeWNMP/hN1JaT7y+BQZ/SMwKzDSOcBbsDgPIwiUzJIfg2zwy08f4iYjWO9UkNTeOxfotwdEUPR1Nr/w== +"@abp/toastr@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" + integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== dependencies: - "@abp/jquery" "~3.2.0-rc.2" + "@abp/jquery" "~3.2.0" toastr "^2.1.4" -"@abp/utils@^3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" - integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== dependencies: just-compare "^1.3.0" From 42114a263cfc5d89f0db2bc0a7600233a429979c Mon Sep 17 00:00:00 2001 From: Ahmet Date: Thu, 1 Oct 2020 13:12:17 +0300 Subject: [PATCH 051/114] Update AbpIdentityBlazorAutoMapperProfile.cs --- .../AbpIdentityBlazorAutoMapperProfile.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs index bbe57e91fd..989986ce6d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs @@ -14,11 +14,6 @@ namespace Volo.Abp.Identity.Blazor CreateMap() .MapExtraProperties(); - - CreateMap() - .Ignore(x => x.Password) - .Ignore(x => x.RoleNames) - .MapExtraProperties(); } } } From 342eac954138947567466e8ce73d484ec8a4b351 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Thu, 1 Oct 2020 14:49:24 +0300 Subject: [PATCH 052/114] Update Manage.cshtml --- .../src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml index ec48e5bcde..29608f3e54 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml @@ -23,7 +23,7 @@ } -e +
    From d2f78fc797b2e415e9ad2d4e76ddfffc089c9e36 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Thu, 1 Oct 2020 14:50:19 +0300 Subject: [PATCH 053/114] Update en.json --- .../AbpIoLocalization/Community/Localization/Resources/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index ea5237bc29..2544e50726 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -83,6 +83,7 @@ "LatestBlogPost": "Latest Blog Post", "Edit": "Edit", "ProfileImageChange": "Change the profile image", - "BlogItemErrorMessage": "Could not get the latest blog post details from ABP." + "BlogItemErrorMessage": "Could not get the latest blog post details from ABP.", + "PlannedReleaseDate": "Planned release date" } } From 48d73aa60753d192236ce5b4a3a167f85fb5b53b Mon Sep 17 00:00:00 2001 From: Ahmet Date: Thu, 1 Oct 2020 14:52:57 +0300 Subject: [PATCH 054/114] Added ManageYourAccount navigation to Blazor LoginDisplay --- .../Themes/Basic/LoginDisplay.razor | 3 ++ .../Themes/Basic/LoginDisplay.razor.cs | 40 +++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor index f55685e665..3d3dd26fae 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor @@ -17,6 +17,9 @@ @menuItem.DisplayName } } + + @UiLocalizer["ManageYourAccount"] + Logout diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs index e0ad688513..17718dbcfb 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs @@ -1,18 +1,50 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; +using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Routing; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Options; +using Volo.Abp.Http.Client; using Volo.Abp.UI.Navigation; namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic { - public partial class LoginDisplay + public partial class LoginDisplay : IDisposable { - [Inject] protected IMenuManager MenuManager { get; set; } - + [Inject] + protected IMenuManager MenuManager { get; set; } + + [Inject] + protected IStringLocalizer UiLocalizer { get; set; } + + [Inject] + protected IOptions RemoteServiceOptions { get; set; } + protected ApplicationMenu Menu { get; set; } + protected string ServerUrl { get; set; } + protected string ServerAccountUrl { get; set; } + protected override async Task OnInitializedAsync() { Menu = await MenuManager.GetAsync(StandardMenus.User); + + ServerUrl = RemoteServiceOptions.Value.RemoteServices.Default?.BaseUrl?.TrimEnd('/'); + ServerAccountUrl = ServerUrl + "/Account/Manage?returnUrl=" + Navigation.Uri; + + Navigation.LocationChanged += OnLocationChanged; + } + + protected virtual void OnLocationChanged(object sender, LocationChangedEventArgs e) + { + ServerAccountUrl = ServerUrl + "/Account/Manage?returnUrl=" + Navigation.Uri; + StateHasChanged(); + } + + public void Dispose() + { + Navigation.LocationChanged -= OnLocationChanged; } } } \ No newline at end of file From a7799b3d66ccfc82665c633e9632852265f9f748 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Thu, 1 Oct 2020 15:07:52 +0300 Subject: [PATCH 055/114] add license type to api key result #3507. closes #3507 --- .../Abp/Cli/Licensing/DeveloperApiKeyResult.cs | 3 ++- .../Volo/Abp/Cli/Licensing/LicenseType.cs | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/LicenseType.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs index eb781c27b1..4230735680 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs @@ -12,7 +12,8 @@ namespace Volo.Abp.Cli.Licensing public string LicenseCode { get; set; } public string ErrorMessage { get; set; } public LicenseErrorType? ErrorType { get; set; } - + public LicenseType LicenseType { get; set; } + public enum LicenseErrorType { NotAuthenticated = 1, diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/LicenseType.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/LicenseType.cs new file mode 100644 index 0000000000..48bc818914 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/LicenseType.cs @@ -0,0 +1,14 @@ +namespace Volo.Abp.Cli.Licensing +{ + public enum LicenseType : byte + { + Personal = 1, + Team = 2, + Business = 3, + Enterprise = 4, + Personal_Discounted = 5, + Team_Discounted = 6, + Business_Discounted = 7, + Enterprise_Discounted = 8, + } +} \ No newline at end of file From 3d649abcf837f287b4b15fa9ffc714318b6f25ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 15:49:05 +0300 Subject: [PATCH 056/114] Update NavToolbar.razor.cs --- .../Themes/Basic/NavToolbar.razor.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs index c2f08568e4..6fddf263b3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/NavToolbar.razor.cs @@ -10,8 +10,6 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic [Inject] private IToolbarManager ToolbarManager { get; set; } - private RenderFragment ToolbarRender { get; set; } - private List ToolbarItemRenders { get; set; } = new List(); protected override async Task OnInitializedAsync() From d9144f45f71afb75ff97f465e106472c06c33c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 15:57:49 +0300 Subject: [PATCH 057/114] Update Getting-Started.md --- docs/en/Getting-Started.md | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/docs/en/Getting-Started.md b/docs/en/Getting-Started.md index 1ca6a61b1a..1e473b266f 100644 --- a/docs/en/Getting-Started.md +++ b/docs/en/Getting-Started.md @@ -43,24 +43,6 @@ The following tools should be installed on your development machine: > ABP CLI is a free & open source tool for the ABP framework. -{{if UI == "Blazor"}} - -BLAZOR UI IS ONLY AVAILABLE WITH THE PREVIEW VERSION. SO, YOU NEED TO INSTALL THE PREVIEW VERSION OF THE ABP CLI - -First, you need to install the ABP CLI **RC.2** using the following command: - -````shell -dotnet tool install Volo.Abp.Cli -g --version 3.2.0-rc.2 -```` - -If you've already installed, you can update it using the following command: - -````shell -dotnet tool update Volo.Abp.Cli -g --version 3.2.0-rc.2 -```` - -{{else}} - First, you need to install the ABP CLI using the following command: ````shell @@ -73,22 +55,14 @@ If you've already installed, you can update it using the following command: dotnet tool update -g Volo.Abp.Cli ```` -{{end}} - ## Create a New Project Use the `new` command of the ABP CLI to create a new project: ````shell -abp new Acme.BookStore{{if UI == "NG"}} -u angular{{else if UI == "Blazor"}} -u blazor --preview{{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC"}} --tiered{{else}} --separate-identity-server{{end}}{{end}} +abp new Acme.BookStore{{if UI == "NG"}} -u angular{{else if UI == "Blazor"}} -u blazor{{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC"}} --tiered{{else}} --separate-identity-server{{end}}{{end}} ```` -{{if UI == "Blazor"}} - -> BLAZOR UI IS ONLY AVAILABLE WITH THE PREVIEW VERSION. THIS IS WHY IT IS REQUIRED TO SET THE `--PREVIEW` OPTION. - -{{end}} - > You can use different level of namespaces; e.g. BookStore, Acme.BookStore or Acme.Retail.BookStore. > Alternatively, you can select the "Direct Download" tab from the [ABP Framework web site](https://abp.io/get-started) to create a new solution. From 3849f1423ea2baa3e7f9cf533225ee94272c39c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 16:22:16 +0300 Subject: [PATCH 058/114] Blog post for v3.2 release. --- .../2020-10-01 v3_2_Release_Stable/POST.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 docs/en/Blog-Posts/2020-10-01 v3_2_Release_Stable/POST.md diff --git a/docs/en/Blog-Posts/2020-10-01 v3_2_Release_Stable/POST.md b/docs/en/Blog-Posts/2020-10-01 v3_2_Release_Stable/POST.md new file mode 100644 index 0000000000..75ea442f0d --- /dev/null +++ b/docs/en/Blog-Posts/2020-10-01 v3_2_Release_Stable/POST.md @@ -0,0 +1,47 @@ +# ABP Framework 3.2 Final Has Been Released + +ABP Framework & ABP Commercial 3.2 have been released today. + +Since all the new features are already explained in details with the [3.2 RC Announcement Post](https://blog.abp.io/abp/ABP-Framework-ABP-Commercial-3.2-RC-With-The-New-Blazor-UI), I will not repeat all the details again. Please read [the RC post](https://blog.abp.io/abp/ABP-Framework-ABP-Commercial-3.2-RC-With-The-New-Blazor-UI) for **new feature and changes** you may need to do for your solution while upgrading to the version 3.2. + +## Creating New Solutions + +You can create a new solution with the ABP Framework version 3.2 by either using the `abp new` command or using the **direct download** tab on the [get started page](https://abp.io/get-started). + +> See the [getting started document](https://docs.abp.io/en/abp/latest/Getting-Started) for details. + +## How to Upgrade an Existing Solution + +### Install/Update the ABP CLI + +First of all, install the ABP CLI or upgrade to the latest version. + +If you haven't installed yet: + +````bash +dotnet tool install -g Volo.Abp.Cli +```` + +To update an existing installation: + +```bash +dotnet tool update -g Volo.Abp.Cli +``` + +### ABP UPDATE Command + +[ABP CLI](https://docs.abp.io/en/abp/latest/CLI) provides a handy command to update all the ABP related NuGet and NPM packages in your solution with a single command: + +````bash +abp update +```` + +After the update command, check [the RC blog post](https://blog.abp.io/abp/ABP-Framework-ABP-Commercial-3.2-RC-With-The-New-Blazor-UI) to learn if you need to make any changes in your solution. + +> You may want to see the new [upgrading document](https://docs.abp.io/en/abp/latest/Upgrading). + +## About the Next Versions + +The next two versions (3.3 & 4.0) will be mostly related to completing the Blazor UI features and upgrading the ABP Framework & ecosystem to the .NET 5.0. + +The ultimate goal is to complete the version 4.0 with a stable Blazor UI with the fundamental features implemented and publish it just after the Microsoft lunches .NET 5 in this November. \ No newline at end of file From 5e19bc8c4c92f764ddc3bc17cedc77cf1214bc79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 17:56:58 +0300 Subject: [PATCH 059/114] Revised the caching document. --- docs/en/Caching.md | 205 ++++++++++++++++++++++++++++----------------- 1 file changed, 126 insertions(+), 79 deletions(-) diff --git a/docs/en/Caching.md b/docs/en/Caching.md index bb11b2b45a..fb563e26a9 100644 --- a/docs/en/Caching.md +++ b/docs/en/Caching.md @@ -1,45 +1,31 @@ # Caching -ABP framework extends ASP.NET Core's distributed caching system. +ABP Framework extends the [ASP.NET Core distributed cache](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed). ## Volo.Abp.Caching Package -> This package is already installed by default with the startup template. So, most of the time, you don't need to install it manually. +> This package is already installed by default with the [application startup template](Startup-Templates/Application.md). So, most of the time, you don't need to install it manually. -Volo.Abp.Caching is the core package of the caching system. Install it to your project using the package manager console (PMC): +[Volo.Abp.Caching](https://www.nuget.org/packages/Volo.Abp.Caching) is the main package of the caching system. You can install it a project using the add-package command of the [ABP CLI](CLI.md): ``` -Install-Package Volo.Abp.Caching +abp add-package Volo.Abp.Caching ``` -Then you can add **AbpCachingModule** dependency to your module: - -```c# -using Volo.Abp.Modularity; -using Volo.Abp.Caching; - -namespace MyCompany.MyProject -{ - [DependsOn(typeof(AbpCachingModule))] - public class MyModule : AbpModule - { - //... - } -} -``` +You need to run this command on a command line terminal in a folder containing a `csproj` file (see [other options](https://abp.io/package-detail/Volo.Abp.Caching) to install). ## `IDistributedCache` Interface -ASP.NET Core defines the `IDistributedCache` interface to get/set cache values. But it has some difficulties: +ASP.NET Core defines the `IDistributedCache` interface to get/set the cache values. But it has some difficulties: * It works with **byte arrays** rather than .NET objects. So, you need to **serialize/deserialize** the objects you need to cache. * It provides a **single key pool** for all cache items, so; * You need to care about the keys to distinguish **different type of objects**. - * You need to care about the cache items of **different tenants** (see [multi-tenancy](Multi-Tenancy.md)). + * You need to care about the cache items of **different tenants** in a [multi-tenant](Multi-Tenancy.md) system. > `IDistributedCache` is defined in the `Microsoft.Extensions.Caching.Abstractions` package. That means it is not only usable for ASP.NET Core applications, but also available to **any type of applications**. -> Default implementation of the `IDistributedCache` interface is the `MemoryDistributedCache` which works **in-memory**. See [ASP.NET Core's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed) to see how to switch to **Redis** or another cache provider. +> Default implementation of the `IDistributedCache` interface is the `MemoryDistributedCache` which works **in-memory**. See [ASP.NET Core's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed) to see how to switch to Redis or another cache provider. See [ASP.NET Core's distributed caching document](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed) for more information. @@ -50,52 +36,63 @@ ABP framework defines the generic `IDistributedCache` interface in t `IDistributedCache` solves the difficulties explained above; * It internally **serializes/deserializes** the cached objects. Uses **JSON** serialization by default, but can be overridden by replacing the `IDistributedCacheSerializer` service in the [dependency injection](Dependency-Injection.md) system. -* It automatically adds a **cache name** prefix to the cache keys based on the object type stored in the cache. Default cache name is the full name of the cache item class (`CacheItem` postfix is removed if your cache item class ends with it). You can use the `CacheName` attribute on the cache item class to set the cache name. -* It automatically adds the **current tenant id** to the cache key to distinguish cache items for different tenants (only works if your application is [multi-tenant](Multi-Tenancy.md)). Define `IgnoreMultiTenancy` attribute on the cache item class to disable this if you want to share the cached objects among all tenants in a multi-tenant application. -* Allows to define a **global cache key prefix** per application, so different applications can use their isolated key pools in a shared distributed cache source. +* It automatically adds a **cache name** prefix to the cache keys based on the object type stored in the cache. Default cache name is the full name of the cache item class (`CacheItem` postfix is removed if your cache item class ends with it). You can use the **`CacheName` attribute** on the cache item class to set the cache name. +* It automatically adds the **current tenant id** to the cache key to distinguish cache items for different tenants (if your application is [multi-tenant](Multi-Tenancy.md)). Define `IgnoreMultiTenancy` attribute on the cache item class to disable this if you want to share the cached objects among all tenants in a multi-tenant application. +* Allows to define a **global cache key prefix** per application, so different applications can use their isolated key pools in a shared distributed cache server. +* ABP's distributed cache also **can tolerate errors** wherever possible and bypasses the cache. This is useful when you have temporary problems on the cache server. ### Usage An example class to store an item in the cache: ````csharp -public class BookCacheItem +namespace MyProject { - public string Name { get; set; } + public class BookCacheItem + { + public string Name { get; set; } - public float Price { get; set; } + public float Price { get; set; } + } } ```` -You can inject and use the `IDistributedCache` service to get/set `BookCacheItem` objects. - -Example usage: +You can inject and use the `IDistributedCache` service to get/set `BookCacheItem` objects: ````csharp -public class BookService : ITransientDependency -{ - private readonly IDistributedCache _cache; - - public BookService(IDistributedCache cache) - { - _cache = cache; - } - - public async Task GetAsync(Guid bookId) - { - return await _cache.GetOrAddAsync( - bookId.ToString(), //Cache key - async () => await GetBookFromDatabaseAsync(bookId), - () => new DistributedCacheEntryOptions - { - AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) - } - ); - } +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Caching.Distributed; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; - private Task GetBookFromDatabaseAsync(Guid bookId) +namespace MyProject +{ + public class BookService : ITransientDependency { - //TODO: get from database + private readonly IDistributedCache _cache; + + public BookService(IDistributedCache cache) + { + _cache = cache; + } + + public async Task GetAsync(Guid bookId) + { + return await _cache.GetOrAddAsync( + bookId.ToString(), //Cache key + async () => await GetBookFromDatabaseAsync(bookId), + () => new DistributedCacheEntryOptions + { + AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) + } + ); + } + + private Task GetBookFromDatabaseAsync(Guid bookId) + { + //TODO: get from database + } } } ```` @@ -108,53 +105,69 @@ Other methods of the `IDistributedCache` are same as ASP.NET Core ## `IDistributedCache` Interface -`IDistributedCache` interface assumes that the type of your cache key is `string` (so, you need to manually convert your key to string if you need to use a different kind of cache key). `IDistributedCache` can be used when your cache key type is not `string`. +`IDistributedCache` interface assumes that the type of your **cache key** is `string` (so, you need to manually convert your key to string if you need to use a different kind of cache key). While this is not a big deal, `IDistributedCache` can be used when your cache key type is not `string`. ### Usage An example class to store an item in the cache: ````csharp -public class BookCacheItem +using Volo.Abp.Caching; + +namespace MyProject { - public string Name { get; set; } + [CacheName("Books")] + public class BookCacheItem + { + public string Name { get; set; } - public float Price { get; set; } + public float Price { get; set; } + } } ```` Example usage (assumes that your cache key type is `Guid`): ````csharp -public class BookService : ITransientDependency -{ - private readonly IDistributedCache _cache; - - public BookService(IDistributedCache cache) - { - _cache = cache; - } +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Caching.Distributed; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; - public async Task GetAsync(Guid bookId) - { - return await _cache.GetOrAddAsync( - bookId, //Guid type used as the cache key - async () => await GetBookFromDatabaseAsync(bookId), - () => new DistributedCacheEntryOptions - { - AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) - } - ); - } - private Task GetBookFromDatabaseAsync(Guid bookId) +namespace MyProject +{ + public class BookService : ITransientDependency { - //TODO: get from database + private readonly IDistributedCache _cache; + + public BookService(IDistributedCache cache) + { + _cache = cache; + } + + public async Task GetAsync(Guid bookId) + { + return await _cache.GetOrAddAsync( + bookId, //Guid type used as the cache key + async () => await GetBookFromDatabaseAsync(bookId), + () => new DistributedCacheEntryOptions + { + AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) + } + ); + } + private Task GetBookFromDatabaseAsync(Guid bookId) + { + //TODO: get from database + } } } ```` * This sample service uses the `GetOrAddAsync()` method to get a book item from the cache. * Since cache explicitly implemented as using `Guid` as cache key, `Guid` value passed to `_cache_GetOrAddAsync()` method. +* This example uses the `CacheName` attribute for the `BookCacheItem` class. `IDistributedCache` internally uses `ToString()` method of the key object to convert it to a string. If you need to use a complex object as the cache key, you need to override `ToString` method of your class. @@ -192,7 +205,41 @@ public class BookService : ITransientDependency } ```` -### DistributedCacheOptions +## Error Handling TODO +## Configuration + +### AbpDistributedCacheOptions + +`AbpDistributedCacheOptions` is the main [options class](Options.md) to configure the caching. + +**Example: Set the cache key prefix for the application** + +```csharp +Configure(options => +{ + options.KeyPrefix = "MyApp1"; +}); +``` + +> Write that code inside the `ConfigureServices` method of your [module class](Module-Development-Basics.md). + +#### Available Options + +* `HideErrors` (`bool`, default: `true`): Enables/disables hiding the errors on writing/reading values from the cache server. +* `KeyPrefix` (`string`, default: `null`): If your cache server is shared by multiple applications, you can set a prefix for the cache keys for your application. In this case, different applications can not overwrite each other's cache items. +* `GlobalCacheEntryOptions` (`DistributedCacheEntryOptions`): Used to set default distributed cache options (like `AbsoluteExpiration` and `SlidingExpiration`) used when you don't specify the options while saving cache items. Default value uses the `SlidingExpiration` as 20 minutes. + +## Advanced Topics + +### IDistributedCacheSerializer + +`IDistributedCacheSerializer` service is used to serialize and deserialize the cache items. Default implementation is the `Utf8JsonDistributedCacheSerializer` class that uses `IJsonSerializer` service to convert objects to [JSON](Json.md) and vice verse. Then it uses UTC8 encoding to convert the JSON string to a byte array which is accepted by the distributed cache. + +You can [replace](Dependency-Injection.md) this service by your own implementation if you want to implement your own serialization logic. + +### IDistributedCacheKeyNormalizer + +`IDistributedCacheKeyNormalizer` is implemented by the `DistributedCacheKeyNormalizer` class by default. It adds cache name, application cache prefix and current tenant id to the cache key. If you need a more advanced key normalization, you can [replace](Dependency-Injection.md) this service by your own implementation. \ No newline at end of file From 3d6ae45db33a717bbbc406977b8e6927d5437951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 18:09:11 +0300 Subject: [PATCH 060/114] Error Handling section in the cache doc. --- docs/en/Caching.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/en/Caching.md b/docs/en/Caching.md index fb563e26a9..7de7d82f1e 100644 --- a/docs/en/Caching.md +++ b/docs/en/Caching.md @@ -207,7 +207,13 @@ public class BookService : ITransientDependency ## Error Handling -TODO +When you design a cache for your objects, you typically try to get the value from cache first. If not found in the cache, you query the object from the **original source**. It may be located in a **database** or may require to perform an HTTP call to a remote server. + +In most cases, you want to **tolerate the cache errors**; If you get error from the cache server you don't want to cancel the operation. Instead, you silently hide (and log) the error and **query from the original source**. This is what the ABP Framework does by default. + +ABP's Distributed Cache [handle](Exception-Handling.md), log and hide errors by default. There is an option to change this globally (see the options below). + +In addition, all of the `IDistributedCache` (and `IDistributedCache`) methods have an optional `hideErrors` parameter, which is `null` by default. The global value is used if this parameter left as `null`, otherwise you can decide to hide or throw the exceptions for individual method calls. ## Configuration From dcf3763ad8d5678bce6bf83987e939c3409bcda5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 20:45:05 +0300 Subject: [PATCH 061/114] Added Unit Of Work Level Cache --- docs/en/Caching.md | 51 ++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/docs/en/Caching.md b/docs/en/Caching.md index 7de7d82f1e..0f175c488e 100644 --- a/docs/en/Caching.md +++ b/docs/en/Caching.md @@ -2,7 +2,7 @@ ABP Framework extends the [ASP.NET Core distributed cache](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed). -## Volo.Abp.Caching Package +## Installation > This package is already installed by default with the [application startup template](Startup-Templates/Application.md). So, most of the time, you don't need to install it manually. @@ -14,7 +14,9 @@ abp add-package Volo.Abp.Caching You need to run this command on a command line terminal in a folder containing a `csproj` file (see [other options](https://abp.io/package-detail/Volo.Abp.Caching) to install). -## `IDistributedCache` Interface +## Usage + +### `IDistributedCache` Interface ASP.NET Core defines the `IDistributedCache` interface to get/set the cache values. But it has some difficulties: @@ -29,7 +31,7 @@ ASP.NET Core defines the `IDistributedCache` interface to get/set the cache valu See [ASP.NET Core's distributed caching document](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed) for more information. -## `IDistributedCache` Interface +### `IDistributedCache` Interface ABP framework defines the generic `IDistributedCache` interface in the [Volo.Abp.Caching](https://www.nuget.org/packages/Volo.Abp.Caching/) package. `TCacheItem` is the type of the object stored in the cache. @@ -41,9 +43,7 @@ ABP framework defines the generic `IDistributedCache` interface in t * Allows to define a **global cache key prefix** per application, so different applications can use their isolated key pools in a shared distributed cache server. * ABP's distributed cache also **can tolerate errors** wherever possible and bypasses the cache. This is useful when you have temporary problems on the cache server. -### Usage - -An example class to store an item in the cache: +**Example: Store Book names and prices in the cache** ````csharp namespace MyProject @@ -103,13 +103,11 @@ namespace MyProject Other methods of the `IDistributedCache` are same as ASP.NET Core's `IDistributedCache` interface, so you can refer [it's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed). -## `IDistributedCache` Interface +### `IDistributedCache` Interface `IDistributedCache` interface assumes that the type of your **cache key** is `string` (so, you need to manually convert your key to string if you need to use a different kind of cache key). While this is not a big deal, `IDistributedCache` can be used when your cache key type is not `string`. -### Usage - -An example class to store an item in the cache: +**Example: Store Book names and prices in the cache** ````csharp using Volo.Abp.Caching; @@ -126,7 +124,9 @@ namespace MyProject } ```` -Example usage (assumes that your cache key type is `Guid`): +* This example uses the `CacheName` attribute for the `BookCacheItem` class to set the cache name. + +You can inject and use the `IDistributedCache` service to get/set `BookCacheItem` objects: ````csharp using System; @@ -167,7 +167,8 @@ namespace MyProject * This sample service uses the `GetOrAddAsync()` method to get a book item from the cache. * Since cache explicitly implemented as using `Guid` as cache key, `Guid` value passed to `_cache_GetOrAddAsync()` method. -* This example uses the `CacheName` attribute for the `BookCacheItem` class. + +#### Complex Types as the Cache Key `IDistributedCache` internally uses `ToString()` method of the key object to convert it to a string. If you need to use a complex object as the cache key, you need to override `ToString` method of your class. @@ -205,16 +206,6 @@ public class BookService : ITransientDependency } ```` -## Error Handling - -When you design a cache for your objects, you typically try to get the value from cache first. If not found in the cache, you query the object from the **original source**. It may be located in a **database** or may require to perform an HTTP call to a remote server. - -In most cases, you want to **tolerate the cache errors**; If you get error from the cache server you don't want to cancel the operation. Instead, you silently hide (and log) the error and **query from the original source**. This is what the ABP Framework does by default. - -ABP's Distributed Cache [handle](Exception-Handling.md), log and hide errors by default. There is an option to change this globally (see the options below). - -In addition, all of the `IDistributedCache` (and `IDistributedCache`) methods have an optional `hideErrors` parameter, which is `null` by default. The global value is used if this parameter left as `null`, otherwise you can decide to hide or throw the exceptions for individual method calls. - ## Configuration ### AbpDistributedCacheOptions @@ -238,8 +229,24 @@ Configure(options => * `KeyPrefix` (`string`, default: `null`): If your cache server is shared by multiple applications, you can set a prefix for the cache keys for your application. In this case, different applications can not overwrite each other's cache items. * `GlobalCacheEntryOptions` (`DistributedCacheEntryOptions`): Used to set default distributed cache options (like `AbsoluteExpiration` and `SlidingExpiration`) used when you don't specify the options while saving cache items. Default value uses the `SlidingExpiration` as 20 minutes. +## Error Handling + +When you design a cache for your objects, you typically try to get the value from cache first. If not found in the cache, you query the object from the **original source**. It may be located in a **database** or may require to perform an HTTP call to a remote server. + +In most cases, you want to **tolerate the cache errors**; If you get error from the cache server you don't want to cancel the operation. Instead, you silently hide (and log) the error and **query from the original source**. This is what the ABP Framework does by default. + +ABP's Distributed Cache [handle](Exception-Handling.md), log and hide errors by default. There is an option to change this globally (see the options below). + +In addition, all of the `IDistributedCache` (and `IDistributedCache`) methods have an optional `hideErrors` parameter, which is `null` by default. The global value is used if this parameter left as `null`, otherwise you can decide to hide or throw the exceptions for individual method calls. + ## Advanced Topics +### Unit Of Work Level Cache + +Distributed cache service provides an interesting feature. Assume that you've updated the price of a book in the database, then set the new price to the cache, so you can use the cached value later. What if you have an exception after setting the cache and you **rollback the transaction** that updates the price of the book? In this case, cache value will be incorrect. + +`IDistributedCache<..>` methods gets an optional parameter, named `considerOuw`, which is `false` by default. If you set it to `true`, then the changes you made for the cache are not actually applied to the real cache store, but associated with the current [unit of work](Unit-Of-Work.md). You get the value you set in the same unit of work, but the changes are applied **only if the current unit of work succeed**. + ### IDistributedCacheSerializer `IDistributedCacheSerializer` service is used to serialize and deserialize the cache items. Default implementation is the `Utf8JsonDistributedCacheSerializer` class that uses `IJsonSerializer` service to convert objects to [JSON](Json.md) and vice verse. Then it uses UTC8 encoding to convert the JSON string to a byte array which is accepted by the distributed cache. From 14bd12b176b6edf3b1ed519d77361c280f088f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 21:15:23 +0300 Subject: [PATCH 062/114] Add the Redis-Cache document --- docs/en/Caching.md | 8 ++++++-- docs/en/Redis-Cache.md | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 docs/en/Redis-Cache.md diff --git a/docs/en/Caching.md b/docs/en/Caching.md index 0f175c488e..7a29247628 100644 --- a/docs/en/Caching.md +++ b/docs/en/Caching.md @@ -27,7 +27,7 @@ ASP.NET Core defines the `IDistributedCache` interface to get/set the cache valu > `IDistributedCache` is defined in the `Microsoft.Extensions.Caching.Abstractions` package. That means it is not only usable for ASP.NET Core applications, but also available to **any type of applications**. -> Default implementation of the `IDistributedCache` interface is the `MemoryDistributedCache` which works **in-memory**. See [ASP.NET Core's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed) to see how to switch to Redis or another cache provider. +> Default implementation of the `IDistributedCache` interface is the `MemoryDistributedCache` which works **in-memory**. See [ASP.NET Core's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed) to see how to switch to Redis or another cache provider. Also, see the [Redis Cache](Redis-Cache.md) document if you want to use the Redis as the distributed cache server. See [ASP.NET Core's distributed caching document](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed) for more information. @@ -255,4 +255,8 @@ You can [replace](Dependency-Injection.md) this service by your own implementati ### IDistributedCacheKeyNormalizer -`IDistributedCacheKeyNormalizer` is implemented by the `DistributedCacheKeyNormalizer` class by default. It adds cache name, application cache prefix and current tenant id to the cache key. If you need a more advanced key normalization, you can [replace](Dependency-Injection.md) this service by your own implementation. \ No newline at end of file +`IDistributedCacheKeyNormalizer` is implemented by the `DistributedCacheKeyNormalizer` class by default. It adds cache name, application cache prefix and current tenant id to the cache key. If you need a more advanced key normalization, you can [replace](Dependency-Injection.md) this service by your own implementation. + +## See Also + +* [Redis Cache](Redis-Cache.md) \ No newline at end of file diff --git a/docs/en/Redis-Cache.md b/docs/en/Redis-Cache.md new file mode 100644 index 0000000000..ee6b7056ae --- /dev/null +++ b/docs/en/Redis-Cache.md @@ -0,0 +1,39 @@ +# Redis Cache + +ABP Framework [Caching System](Caching.md) extends the [ASP.NET Core distributed cache](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed). So, **any provider** supported by the standard ASP.NET Core distributed cache can be usable in your application and can be configured just like **documented by Microsoft**. + +However, ABP provides an **integration package** for Redis Cache: [Volo.Abp.Caching.StackExchangeRedis](https://www.nuget.org/packages/Volo.Abp.Caching.StackExchangeRedis). There are two reasons for using this package, instead of the standard [Microsoft.Extensions.Caching.StackExchangeRedis](https://www.nuget.org/packages/Microsoft.Extensions.Caching.StackExchangeRedis/) package. + +1. It implements `SetManyAsync` and `GetManyAsync` methods. These are not standard methods of the Microsoft Caching library, but added by the ABP Framework [Caching](Caching.md) system. They **significiantly increases the performance** when you need to set/get multiple cache items with a single method call. +2. It **simplifies** the Redis cache **configuration** (will be explained below). + +> Volo.Abp.Caching.StackExchangeRedis is already depends on the Microsoft.Extensions.Caching.StackExchangeRedis package, but extends and improves it. + +## Installation + +> This package is already installed in the application startup template if it is using Redis. + +Open a command line in the folder of your `.csproj` file and type the following ABP CLI command: + +````bash +abp add-package Volo.Abp.Caching.StackExchangeRedis +```` + +## Configuration + +Volo.Abp.Caching.StackExchangeRedis package automatically gets the redis [configuration](Configuration.md) from the `IConfiguration`. So, for example, you can set your configuration inside the `appsettings.json`: + +````js +"Redis": { + "Configuration": "127.0.0.1" +} +```` + +Alternatively you can configure the standard [RedisCacheOptions](https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.caching.stackexchangeredis.rediscacheoptions) [options](Options.md) class in the `ConfigureServices` method of your [module](Module-Development-Basics.md): + +````csharp +Configure(options => +{ + //... +}); +```` \ No newline at end of file From 9058e97cdccd20c6edc28155552b39cf637582f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 21:28:54 +0300 Subject: [PATCH 063/114] Added Batch Operations section to the cache document --- docs/en/Caching.md | 16 +++++++++++++--- docs/en/Redis-Cache.md | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/en/Caching.md b/docs/en/Caching.md index 7a29247628..4da27e4e98 100644 --- a/docs/en/Caching.md +++ b/docs/en/Caching.md @@ -41,7 +41,8 @@ ABP framework defines the generic `IDistributedCache` interface in t * It automatically adds a **cache name** prefix to the cache keys based on the object type stored in the cache. Default cache name is the full name of the cache item class (`CacheItem` postfix is removed if your cache item class ends with it). You can use the **`CacheName` attribute** on the cache item class to set the cache name. * It automatically adds the **current tenant id** to the cache key to distinguish cache items for different tenants (if your application is [multi-tenant](Multi-Tenancy.md)). Define `IgnoreMultiTenancy` attribute on the cache item class to disable this if you want to share the cached objects among all tenants in a multi-tenant application. * Allows to define a **global cache key prefix** per application, so different applications can use their isolated key pools in a shared distributed cache server. -* ABP's distributed cache also **can tolerate errors** wherever possible and bypasses the cache. This is useful when you have temporary problems on the cache server. +* It **can tolerate errors** wherever possible and bypasses the cache. This is useful when you have temporary problems on the cache server. +* It has methods like `GetManyAsync` and `SetManyAsync` which significantly improve the performance on **batch operations**. **Example: Store Book names and prices in the cache** @@ -97,11 +98,11 @@ namespace MyProject } ```` -* This sample service uses the `GetOrAddAsync()` method to get a book item from the cache. +* This sample service uses the `GetOrAddAsync()` method to get a book item from the cache. `GetOrAddAsync` is an additional method that was added by the ABP Framework to the standard ASP.NET Core distributed cache methods. * If the book was not found in the cache, it calls the factory method (`GetBookFromDatabaseAsync` in this case) to retrieve the book item from the original source. * `GetOrAddAsync` optionally gets a `DistributedCacheEntryOptions` which can be used to set the lifetime of the cached item. -Other methods of the `IDistributedCache` are same as ASP.NET Core's `IDistributedCache` interface, so you can refer [it's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed). +`IDistributedCache` supports the same methods of the ASP.NET Core's standard `IDistributedCache` interface, so you can refer [it's documentation](https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed). ### `IDistributedCache` Interface @@ -239,6 +240,15 @@ ABP's Distributed Cache [handle](Exception-Handling.md), log and hide errors by In addition, all of the `IDistributedCache` (and `IDistributedCache`) methods have an optional `hideErrors` parameter, which is `null` by default. The global value is used if this parameter left as `null`, otherwise you can decide to hide or throw the exceptions for individual method calls. +## Batch Operations + +ABP's distributed cache interfaces provide methods to perform batch get/set methods those improves the performance when you want to get or set multiple cache items in a single method call. + +* `SetManyAsync` and `SetMany` methods can be used to set multiple values to the cache. +* `GetManyAsync` and `GetMany` methods can be used to retrieve multiple values from the cache. + +> These are not standard methods of the ASP.NET Core caching. So, a provide may not support them. They are supported by the [ABP Redis Cache integration package](Redis-Cache.md). + ## Advanced Topics ### Unit Of Work Level Cache diff --git a/docs/en/Redis-Cache.md b/docs/en/Redis-Cache.md index ee6b7056ae..584ae40306 100644 --- a/docs/en/Redis-Cache.md +++ b/docs/en/Redis-Cache.md @@ -7,7 +7,7 @@ However, ABP provides an **integration package** for Redis Cache: [Volo.Abp.Cach 1. It implements `SetManyAsync` and `GetManyAsync` methods. These are not standard methods of the Microsoft Caching library, but added by the ABP Framework [Caching](Caching.md) system. They **significiantly increases the performance** when you need to set/get multiple cache items with a single method call. 2. It **simplifies** the Redis cache **configuration** (will be explained below). -> Volo.Abp.Caching.StackExchangeRedis is already depends on the Microsoft.Extensions.Caching.StackExchangeRedis package, but extends and improves it. +> Volo.Abp.Caching.StackExchangeRedis is already uses the Microsoft.Extensions.Caching.StackExchangeRedis package, but extends and improves it. ## Installation From 4a1fa49faefb813eee223fda6200fa8a5c78cba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Oct 2020 21:32:57 +0300 Subject: [PATCH 064/114] Update Caching.md --- docs/en/Caching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Caching.md b/docs/en/Caching.md index 4da27e4e98..042f13ffe0 100644 --- a/docs/en/Caching.md +++ b/docs/en/Caching.md @@ -247,7 +247,7 @@ ABP's distributed cache interfaces provide methods to perform batch get/set meth * `SetManyAsync` and `SetMany` methods can be used to set multiple values to the cache. * `GetManyAsync` and `GetMany` methods can be used to retrieve multiple values from the cache. -> These are not standard methods of the ASP.NET Core caching. So, a provide may not support them. They are supported by the [ABP Redis Cache integration package](Redis-Cache.md). +> These are not standard methods of the ASP.NET Core caching. So, some providers may not support them. They are supported by the [ABP Redis Cache integration package](Redis-Cache.md). If the provider doesn't support, it fallbacks to `SetAsync` and `GetAsync` methods (called once for each item). ## Advanced Topics From b7e2a6e2d05d0e86559340ccab6b22723b082893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 08:09:45 +0300 Subject: [PATCH 065/114] Add redis cache to docs nav menu --- docs/en/Redis-Cache.md | 6 +++++- docs/en/docs-nav.json | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/en/Redis-Cache.md b/docs/en/Redis-Cache.md index 584ae40306..42679679c6 100644 --- a/docs/en/Redis-Cache.md +++ b/docs/en/Redis-Cache.md @@ -36,4 +36,8 @@ Configure(options => { //... }); -```` \ No newline at end of file +```` + +## See Also + +* [Caching](Caching.md) \ No newline at end of file diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 9116fca5a0..a9f9ed6bba 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -156,7 +156,13 @@ }, { "text": "Caching", - "path": "Caching.md" + "path": "Caching.md", + "items": [ + { + "text": "Redis Cache", + "path": "Redis-Cache.md" + } + ] }, { "text": "Logging", From ee11ba9fa4f85f66a8ce0bd5fe671e9e0f9a75ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 08:29:31 +0300 Subject: [PATCH 066/114] Added initial Blazor docs --- docs/en/UI/Blazor/Overall.md | 6 ++++++ docs/en/UI/Blazor/Services/Notification.md | 3 +++ docs/en/docs-nav.json | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 docs/en/UI/Blazor/Overall.md create mode 100644 docs/en/UI/Blazor/Services/Notification.md diff --git a/docs/en/UI/Blazor/Overall.md b/docs/en/UI/Blazor/Overall.md new file mode 100644 index 0000000000..74c469e3c4 --- /dev/null +++ b/docs/en/UI/Blazor/Overall.md @@ -0,0 +1,6 @@ +# Blazor UI for the ABP Framework + +The detailed documentation for the Blazor UI is in progress. However, you can follow the documents below to start with the Blazor UI today. + +* [Get started](https://docs.abp.io/en/abp/latest/Getting-Started?UI=Blazor) with the Blazor UI for the ABP Framework. +* [Web Application Development Tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=Blazor) with the Blazor UI. \ No newline at end of file diff --git a/docs/en/UI/Blazor/Services/Notification.md b/docs/en/UI/Blazor/Services/Notification.md new file mode 100644 index 0000000000..0e5ababa0e --- /dev/null +++ b/docs/en/UI/Blazor/Services/Notification.md @@ -0,0 +1,3 @@ +# Blazor UI Notification + +`UiNotificationService` is used to show toastr style notifications on the user interface. The documentation is in progress... \ No newline at end of file diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index a9f9ed6bba..1235d75429 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -430,6 +430,24 @@ } ] }, + { + "text": "Blazor", + "items": [ + { + "text": "Overall", + "path": "UI/Blazor/Overall.md" + }, + { + "text": "Services", + "items": [ + { + "text": "Overall", + "path": "UI/Blazor/Services/Notification.md" + } + ] + } + ] + }, { "text": "Angular", "items": [ From ee7a635979b47c523bc259588dbcf596596e094f Mon Sep 17 00:00:00 2001 From: dellins Date: Fri, 2 Oct 2020 07:48:06 +0100 Subject: [PATCH 067/114] Update Distributed-Event-Bus-Kafka-Integration.md Corrected text referencing multiple RabbitMQ server in the Kafka integration guide. --- docs/en/Distributed-Event-Bus-Kafka-Integration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Distributed-Event-Bus-Kafka-Integration.md b/docs/en/Distributed-Event-Bus-Kafka-Integration.md index e4796adf55..57a90c4b83 100644 --- a/docs/en/Distributed-Event-Bus-Kafka-Integration.md +++ b/docs/en/Distributed-Event-Bus-Kafka-Integration.md @@ -89,7 +89,7 @@ Defining multiple connections is allowed. In this case, you can specify the conn } ```` -This allows you to use multiple RabbitMQ server in your application, but select one of them for the event bus. +This allows you to use multiple Kafka cluster in your application, but select one of them for the event bus. You can use any of the [ClientConfig](https://docs.confluent.io/current/clients/confluent-kafka-dotnet/api/Confluent.Kafka.ClientConfig.html) properties as the connection properties. @@ -164,4 +164,4 @@ Configure(options => }); ```` -Using these options classes can be combined with the `appsettings.json` way. Configuring an option property in the code overrides the value in the configuration file. \ No newline at end of file +Using these options classes can be combined with the `appsettings.json` way. Configuring an option property in the code overrides the value in the configuration file. From 3cb44cc209b348bb40ba01ce7300e306c20183c2 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 2 Oct 2020 10:28:53 +0300 Subject: [PATCH 068/114] docs: add document on PWAs --- docs/en/.vscode/settings.json | 2 + docs/en/UI/Angular/PWA-Configuration.md | 342 ++++++++++++++++++ .../images/pwa-configuration-ng-add.png | Bin 0 -> 252484 bytes 3 files changed, 344 insertions(+) create mode 100644 docs/en/UI/Angular/PWA-Configuration.md create mode 100644 docs/en/UI/Angular/images/pwa-configuration-ng-add.png diff --git a/docs/en/.vscode/settings.json b/docs/en/.vscode/settings.json index 88052badbc..d04572b96c 100644 --- a/docs/en/.vscode/settings.json +++ b/docs/en/.vscode/settings.json @@ -7,7 +7,9 @@ "formatter", "md", "monorepo", + "ngsw", "npx", + "pwa", "rootNamespace" ] } \ No newline at end of file diff --git a/docs/en/UI/Angular/PWA-Configuration.md b/docs/en/UI/Angular/PWA-Configuration.md new file mode 100644 index 0000000000..918aa4970d --- /dev/null +++ b/docs/en/UI/Angular/PWA-Configuration.md @@ -0,0 +1,342 @@ +# PWA Configuration + +[Progressive Web Apps](https://web.dev/progressive-web-apps/) are web applications which, although not as integrated to the OS as a native app, can take advantage of native features. They can be discovered via search engines, installed on devices with a single tap or click, and shared via a regular link. They also can work offline and get updates when new content is available. + +Converting your Angular application to a PWA is easy. + +## 1. Install Angular PWA + +Run the following command in the root folder of your Angular application: + +```shell +yarn ng add @angular/pwa +``` + +...or... + +```shell +npm run ng add @angular/pwa +``` + +This will install the `@angular/service-worker` package and make your default app a PWA. Alternatively, you may add `project` parameter to target a specific app in your workspace: + +```shell +yarn ng add @angular/pwa --project MyProjectName +``` + +Here is the output of the command: + +Angular PWA updates and creates files + +So, Angular CLI updates some files and add a few others: + +- **ngsw-config.json** is where the [service worker configuration](https://angular.io/guide/service-worker-config) is placed. Not all PWAs have this file. It is specific to Angular. +- **manifest.webmanifest** is a [web app manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) and provides information about your app in JSON format. +- **icons** are placeholder icons that are referred to in your web app manifest. We will replace these in a minute. +- **angular.json** has following modifications: + - `assets` include _manifest.webmanifest_. + - `serviceWorker` is `true` in production build. + - `ngswConfigPath` refers to _ngsw-config.json_. +- **package.json** has _@angular/service-worker_ as a new dependency. +- **app.module.ts** imports `ServiceWorkerModule` and registers a service worker filename. +- **index.html** has following modifications: + - A `` element that refers to _manifest.webmanifest_. + - A `` tag that sets a theme color. + +## 2. Update the Web App Manifest + +### 2.1. Set the Name of Your App + +The `name` and the `short_name` properties in the generated manifest are derived from your project name. Let's change them. + +Open the _manifest.webmanifest_ file and update `name` and `short_name` props: + +```json +{ + /* rest of the manifest meta data */ + "short_name": "My Project", + "name": "My Project: My Catch-Phrase" +} +``` + +The short name must be really short because it will be displayed on anywhere with limited space, like the launcher and the home screen. + +### 2.2. Add a Description + +The `@angular/pwa` schematic we just added does not insert a description to your manifest file, but, according to [web app manifest standards](https://www.w3.org/TR/appmanifest/#description-member), you should. + +So, open the _manifest.webmanifest_ file and place the description as seen below: + +```json +{ + /* rest of the manifest meta data */ + "description": "My short project description giving a slightly better idea about my app" +} +``` + +As a bonus, providing a description [along with other criteria](https://docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-edgehtml/microsoft-store#criteria-for-automatic-submission) helps Bing web crawler to index your app and automatically submit your app to Microsoft Store in `.appx` format. + +### 2.3. Set App Colors + +Angular generates the manifest file with a default `theme_color` and `background_color`. Change these according to your brand identity: + +Open the _manifest.webmanifest_ file and update `theme_color` and `background_color` properties: + +```json +{ + /* rest of the manifest meta data */ + "theme_color": "#000000", + "background_color": "#ffffff" +} +``` + +Then open _index.html_ and change the theme color meta tag as below: + +```html + +``` + +### 2.4. Replace App Icons & Add Splash Screens + +We need to update the icons and add some splash screens. This normally is time-consuming, but we will use the marvelous [pwa-asset-generator](https://github.com/onderceylan/pwa-asset-generator#readme) library. + +First, open the _manifest.webmanifest_ file and remove all elements in the `icons` property: + +```json +{ + /* rest of the manifest meta data */ + "icons": [] +} +``` + +Then, run the following command in your terminal (changing the path of course): + +```shell +npx pwa-asset-generator /path/to/your/logo.png ./src/assets/pwa -i ./src/index.html -m ./src/manifest.webmanifest +``` + +Open the _manifest.webmanifest_ file again. You will see this: + +```json +{ + /* rest of the manifest meta data */ + "icons": [ + { + "src": "../manifest-icon-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "../manifest-icon-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable any" + } + ] +} +``` + +In addition to updated icons, the library will generate splash screens. However, Apple requires all splash screens to be added in your _index.html_ and displays a blank screen at startup otherwise. So, the following tags will be inserted into the _index.html_ file: + +```html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 3. Configure Service Worker + +### 3.1 Modify Asset Groups + +Angular has defined some static files to be cached by the service worker, but they are not 100% accurate. Let's change it. + +Open _ngsw-config.json_ file and replace its content with this: + +```json +{ + "$schema": "./node_modules/@angular/service-worker/config/schema.json", + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "prefetch", + "resources": { + "files": [ + "/favicon.ico", + "/index.html", + "/manifest.webmanifest", + "/*.css", + "/common-es2015.*.js", + "/main-es2015.*.js", + "/polyfills-es2015.*.js", + "/runtime-es2015.*.js", + "/vendor-es2015.*.js" + ] + } + }, + { + "name": "modules", + "installMode": "lazy", + "updateMode": "prefetch", + "resources": { + "files": [ + "/*-es2015.*.js", + "!/common-es2015.*.js", + "!/main-es2015.*.js", + "!/polyfills-es2015.*.js", + "!/runtime-es2015.*.js", + "!/vendor-es2015.*.js" + ] + } + }, + { + "name": "assets", + "installMode": "lazy", + "updateMode": "prefetch", + "resources": { + "files": [ + "/assets/**", + "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)" + ] + } + } + ] +} +``` + +In case you want to cache other static files, please refer to the [service worker configuration document](https://angular.io/guide/service-worker-config#assetgroups) on Angular.io. + +### 3.2 Set Data Groups + +This part is unique to your project. We recommend being very careful about which endpoints to cache. Please refer to [service worker configuration document](https://angular.io/guide/service-worker-config#datagroups) on Angular.io for details. diff --git a/docs/en/UI/Angular/images/pwa-configuration-ng-add.png b/docs/en/UI/Angular/images/pwa-configuration-ng-add.png new file mode 100644 index 0000000000000000000000000000000000000000..f96ac3bef16ede88f64287682f820b7446e08d06 GIT binary patch literal 252484 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 z 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 z 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
  • 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 U74+4Q?|^@@(n?Z=lKOuC2W@0qga7~l literal 0 HcmV?d00001 From 2be063c75e5d7605e11fe8f747dea8f681e8f0c4 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 2 Oct 2020 10:29:07 +0300 Subject: [PATCH 069/114] docs: add PWA doc to navigation --- docs/en/docs-nav.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 9116fca5a0..dfeea6d98c 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -449,6 +449,10 @@ { "text": "Service Proxies", "path": "UI/Angular/Service-Proxies.md" + }, + { + "text": "PWA Configuration", + "path": "UI/Angular/PWA-Configuration.md" } ] }, From 8cf87094f92001946adc99ca58969d8617735faf Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 2 Oct 2020 10:32:33 +0300 Subject: [PATCH 070/114] docs: add links to/from PWA configuration document --- docs/en/UI/Angular/PWA-Configuration.md | 4 ++++ docs/en/UI/Angular/Service-Proxies.md | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/en/UI/Angular/PWA-Configuration.md b/docs/en/UI/Angular/PWA-Configuration.md index 918aa4970d..a6aee244ba 100644 --- a/docs/en/UI/Angular/PWA-Configuration.md +++ b/docs/en/UI/Angular/PWA-Configuration.md @@ -340,3 +340,7 @@ In case you want to cache other static files, please refer to the [service worke ### 3.2 Set Data Groups This part is unique to your project. We recommend being very careful about which endpoints to cache. Please refer to [service worker configuration document](https://angular.io/guide/service-worker-config#datagroups) on Angular.io for details. + +## What's Next? + +- [Config State](./Config-State.md) diff --git a/docs/en/UI/Angular/Service-Proxies.md b/docs/en/UI/Angular/Service-Proxies.md index becec11ed9..92c4b01871 100644 --- a/docs/en/UI/Angular/Service-Proxies.md +++ b/docs/en/UI/Angular/Service-Proxies.md @@ -140,4 +140,4 @@ export class BookComponent implements OnInit { ## What's Next? -- [Config State](./Config-State.md) +- [PWA Configuration](./PWA-Configuration.md) From 0b238863759a24b1f2ed6085c82464c8cd2f03dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 10:50:54 +0300 Subject: [PATCH 071/114] Create Forms-Validation.md --- docs/en/UI/AspNetCore/Forms-Validation.md | 83 +++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 docs/en/UI/AspNetCore/Forms-Validation.md diff --git a/docs/en/UI/AspNetCore/Forms-Validation.md b/docs/en/UI/AspNetCore/Forms-Validation.md new file mode 100644 index 0000000000..2bac932311 --- /dev/null +++ b/docs/en/UI/AspNetCore/Forms-Validation.md @@ -0,0 +1,83 @@ +# ASP.NET Core MVC / Razor Pages: Forms & Validation + +ABP Framework provides infrastructure and conventions to make easier to create forms, localize display names for the form elements and handle server & client side validation; + +* [abp-dynamic-form](Tag-Helpers/Dynamic-Forms.md) tag helper automates **creating a complete form** from a C# model class: Creates the input elements, handles localization and client side validation. +* [ABP Form tag helpers](Tag-Helpers/Form-elements.md) (`abp-input`, `abp-select`, `abp-radio`...) render **a single form element** with handling localization and client side validation. +* ABP Framework automatically **localizes the display name** of a form element without needing to add a `[DisplayName]` attribute. +* **Validation errors** are automatically localized based on the user culture. + +> This document is for the **client side validation** and it doesn't cover the server side validation. Check the [validation document](../../Validation.md) for server side validation infrastructure. + +## The Classic Way + +In a typical Bootstrap based ASP.NET Core MVC / Razor Pages UI, you [need to write](https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation#client-side-validation) such a boilerplate code to create a simple form element: + +````html +

    +```` + +You can continue to use this approach if you need or prefer it. However, ABP Form tag helpers can produce the same output with a minimal code. + +## ABP Dynamic Forms + +[abp-dynamic-form](Tag-Helpers/Dynamic-Forms.md) tag helper completely automates the form creation. Take this model class as an example: + +```csharp +using System; +using System.ComponentModel.DataAnnotations; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +namespace MyProject.Web.Pages +{ + public class MovieViewModel + { + [Required] + [StringLength(256)] + public string Name { get; set; } + + [Required] + [DataType(DataType.Date)] + public DateTime ReleaseDate { get; set; } + + [Required] + [TextArea] + [StringLength(1000)] + public string Description { get; set; } + + public Genre Genre { get; set; } + + public float? Price { get; set; } + + public bool PreOrder { get; set; } + } +} +``` + +It uses the data annotation attributes to define validation rules and UI styles for the properties. `Genre`, is an `enum` in this example: + +````csharp +namespace MyProject.Web.Pages +{ + public enum Genre + { + Classic, + Action, + Fiction, + Fantasy, + Animation + } +} +```` + +## ABP Form Tag Helpers + + + +## See Also + +* [Server Side Validation](../../Validation.md) \ No newline at end of file From 59688af816f54968742f15426247b8ea3b2e10f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 10:55:13 +0300 Subject: [PATCH 072/114] Created empty IUiNotificationService for Blazor --- .../WebAssembly/IUiNotificationService.cs | 9 +++++++++ .../WebAssembly/NullUiNotificationService.cs | 13 +++++++++++++ .../BlazoriseUI/BlazoriseUiNotificationService.cs | 15 +++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiNotificationService.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiNotificationService.cs create mode 100644 framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiNotificationService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiNotificationService.cs new file mode 100644 index 0000000000..a25bf75ae0 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiNotificationService.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly +{ + public interface IUiNotificationService + { + Task Info(string message); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiNotificationService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiNotificationService.cs new file mode 100644 index 0000000000..d93aaa8e83 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiNotificationService.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly +{ + public class NullUiNotificationService : IUiNotificationService, ITransientDependency + { + public Task Info(string message) + { + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs b/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs new file mode 100644 index 0000000000..00ef875790 --- /dev/null +++ b/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs @@ -0,0 +1,15 @@ +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Components.WebAssembly; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.BlazoriseUI +{ + [Dependency(ReplaceServices = true)] + public class BlazoriseUiNotificationService : IUiNotificationService, ITransientDependency + { + public Task Info(string message) + { + throw new System.NotImplementedException(); + } + } +} From 28bf833e5489dac64157862a1e044065ff47864c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 11:06:06 +0300 Subject: [PATCH 073/114] Used logger for BlazoriseUiNotificationService --- .../BlazoriseUI/BlazoriseUiNotificationService.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs b/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs index 00ef875790..5163e05467 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs @@ -1,4 +1,6 @@ using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.AspNetCore.Components.WebAssembly; using Volo.Abp.DependencyInjection; @@ -7,9 +9,17 @@ namespace Volo.Abp.BlazoriseUI [Dependency(ReplaceServices = true)] public class BlazoriseUiNotificationService : IUiNotificationService, ITransientDependency { + public ILogger Logger { get; set; } + + public BlazoriseUiNotificationService() + { + Logger = NullLogger.Instance; + } + public Task Info(string message) { - throw new System.NotImplementedException(); + Logger.LogInformation(message); + return Task.CompletedTask; } } } From 489e855bc057342c40a8b3ea7a25aa73e1962a44 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 2 Oct 2020 11:28:53 +0300 Subject: [PATCH 074/114] Cli add-module improvements & blazor support resolves https://github.com/abpframework/abp/issues/5454 resolves https://github.com/abpframework/abp/issues/5680 --- .../ProjectModification/NuGetPackageTarget.cs | 5 +- .../Cli/ProjectModification/ProjectFinder.cs | 6 +- .../SolutionFileModifier.cs | 61 +++++++++++++++- .../SolutionModuleAdder.cs | 69 +++++++++++++++++-- 4 files changed, 127 insertions(+), 14 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs index 890053049f..10274f3528 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs @@ -12,6 +12,7 @@ Web = 7, EntityFrameworkCore = 8, MongoDB = 9, - SignalR = 10 + SignalR = 10, + Blazor = 11 } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs index d4b3a62b94..0c02f8cb87 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs @@ -45,6 +45,8 @@ namespace Volo.Abp.Cli.ProjectModification return FindProjectEndsWith(projectFiles, assemblyNames, ".SignalR") ?? FindProjectEndsWith(projectFiles, assemblyNames, ".Web") ?? FindProjectEndsWith(projectFiles, assemblyNames, ".HttpApi.Host"); + case NuGetPackageTarget.Blazor: + return FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor"); default: return null; } @@ -103,8 +105,8 @@ namespace Volo.Abp.Cli.ProjectModification private static string FindProjectEndsWith( string[] projectFiles, - string[] assemblyNames, - string postfix, + string[] assemblyNames, + string postfix, string excludePostfix = null) { for (var i = 0; i < assemblyNames.Length; i++) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionFileModifier.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionFileModifier.cs index 4eabeaa846..a24b31e5f1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionFileModifier.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionFileModifier.cs @@ -10,6 +10,61 @@ namespace Volo.Abp.Cli.ProjectModification { public class SolutionFileModifier : ITransientDependency { + public async Task RemoveProjectFromSolutionFileAsync(string solutionFile, string projectName) + { + var solutionFileContent = File.ReadAllText(solutionFile); + solutionFileContent.NormalizeLineEndings(); + var lines = solutionFileContent.Split(new[] {Environment.NewLine, "\n"}, StringSplitOptions.None); + File.WriteAllText(solutionFile, RemoveProject(lines.ToList(), projectName).JoinAsString(Environment.NewLine)); + } + + private List RemoveProject(List solutionFileLines, string projectName) + { + var projectKey = FindProjectKey(solutionFileLines, projectName); + + if (projectKey == null) + { + return solutionFileLines; + } + + var newSolutionFileLines = new List(); + var firstOccurence = true; + + for (var i = 0; i < solutionFileLines.Count; ++i) + { + if (solutionFileLines[i].Contains(projectKey)) + { + if (firstOccurence) + { + firstOccurence = false; + ++i; //Skip "EndProject" line too. + } + + continue; + } + + newSolutionFileLines.Add(solutionFileLines[i]); + } + + return newSolutionFileLines; + } + + private string FindProjectKey(List solutionFileLines, string projectName) + { + var projectNameWithQuotes = $"\"{projectName}\""; + foreach (var solutionFileLine in solutionFileLines) + { + if (solutionFileLine.Contains(projectNameWithQuotes)) + { + var curlyBracketStartIndex = solutionFileLine.LastIndexOf("{", StringComparison.OrdinalIgnoreCase); + var curlyBracketEndIndex = solutionFileLine.LastIndexOf("}", StringComparison.OrdinalIgnoreCase); + return solutionFileLine.Substring(curlyBracketStartIndex + 1, curlyBracketEndIndex - curlyBracketStartIndex - 1); + } + } + + return null; + } + public async Task AddModuleToSolutionFileAsync(ModuleWithMastersInfo module, string solutionFile) { await AddModule(module, solutionFile); @@ -19,7 +74,7 @@ namespace Volo.Abp.Cli.ProjectModification { var srcModuleFolderId = await AddNewFolderAndGetIdOrGetExistingId(solutionFile, module.Name, await AddNewFolderAndGetIdOrGetExistingId(solutionFile, "modules")); var testModuleFolderId = await AddNewFolderAndGetIdOrGetExistingId(solutionFile, module.Name + ".Tests", await AddNewFolderAndGetIdOrGetExistingId(solutionFile, "test")); - + var file = File.ReadAllText(solutionFile); var lines = file.Split(Environment.NewLine).ToList(); @@ -52,7 +107,7 @@ namespace Volo.Abp.Cli.ProjectModification + Environment.NewLine + "EndProject"; lines.InsertAfter(l => l.Trim().Equals("EndProject"), newProjectLine); - + var newPostSolutionLine = " {" + projectGuid + "}.Debug|Any CPU.ActiveCfg = Debug|Any CPU" + Environment.NewLine + " {" + projectGuid + "}.Debug|Any CPU.Build.0 = Debug|Any CPU" + Environment.NewLine + @@ -60,7 +115,7 @@ namespace Volo.Abp.Cli.ProjectModification " {" + projectGuid + "}.Release|Any CPU.Build.0 = Release|Any CPU"; lines.InsertAfter(l=>l.Contains("GlobalSection") && l.Contains("ProjectConfigurationPlatforms"), newPostSolutionLine); - + var newPreSolutionLine = " {"+ projectGuid + "} = {"+ parentFolderId + "}"; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index 4cbeb2ba26..cc563f97cf 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -76,7 +76,8 @@ namespace Volo.Abp.Cli.ProjectModification var module = await FindModuleInfoAsync(moduleName); - Logger.LogInformation($"Installing module '{module.Name}' to the solution '{Path.GetFileNameWithoutExtension(solutionFile)}'"); + Logger.LogInformation( + $"Installing module '{module.Name}' to the solution '{Path.GetFileNameWithoutExtension(solutionFile)}'"); var projectFiles = ProjectFinder.GetProjectFiles(solutionFile); @@ -86,6 +87,7 @@ namespace Volo.Abp.Cli.ProjectModification { var modulesFolderInSolution = Path.Combine(Path.GetDirectoryName(solutionFile), "modules"); await DownloadSourceCodesToSolutionFolder(module, modulesFolderInSolution, version); + await RemoveUnnecessaryProjectsAsync(Path.GetDirectoryName(solutionFile), module, projectFiles); if (addSourceCodeToSolutionFile) { @@ -103,6 +105,53 @@ namespace Volo.Abp.Cli.ProjectModification ModifyDbContext(projectFiles, module, startupProject, skipDbMigrations); } + private async Task RemoveUnnecessaryProjectsAsync(string solutionDirectory, ModuleWithMastersInfo module, string[] projectFiles) + { + var moduleDirectory = Path.Combine(solutionDirectory, "modules", module.Name); + var moduleSolutionFile = Directory.GetFiles(moduleDirectory, "*.sln", SearchOption.TopDirectoryOnly).First(); + var isProjectTiered = await IsProjectTiered(projectFiles); + + if (!projectFiles.Any(p => p.EndsWith(".Blazor.csproj"))) + { + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.Blazor,isProjectTiered); + } + + if (!projectFiles.Any(p => p.EndsWith(".Web.csproj"))) + { + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.Web, isProjectTiered); + } + + if (!projectFiles.Any(p => p.EndsWith(".MongoDB.csproj"))) + { + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.MongoDB, isProjectTiered); + } + + if (!projectFiles.Any(p => p.EndsWith(".EntityFrameworkCore.csproj"))) + { + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.EntityFrameworkCore, isProjectTiered); + } + } + + private async Task RemoveProjectByTarget(ModuleWithMastersInfo module, string moduleSolutionFile, NuGetPackageTarget target, bool isTieredProject) + { + var packages = module.NugetPackages.Where(n => + (isTieredProject && n.TieredTarget != NuGetPackageTarget.Undefined + ? n.TieredTarget + : n.Target) == target + ).ToList(); + + foreach (var package in packages) + { + await SolutionFileModifier.RemoveProjectFromSolutionFileAsync(moduleSolutionFile, package.Name); + + var projectPath = Path.Combine(Path.GetDirectoryName(moduleSolutionFile), "src", package.Name); + if (Directory.Exists(projectPath)) + { + Directory.Delete(projectPath, true); + } + } + } + private async Task AddAngularPackages(string solutionFilePath, ModuleWithMastersInfo module) { var angularPath = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(solutionFilePath)), "angular"); @@ -112,7 +161,8 @@ namespace Volo.Abp.Cli.ProjectModification return; } - var angularPackages = module.NpmPackages?.Where(p => p.ApplicationType.HasFlag(NpmApplicationType.Angular)).ToList(); + var angularPackages = module.NpmPackages?.Where(p => p.ApplicationType.HasFlag(NpmApplicationType.Angular)) + .ToList(); if (!angularPackages.IsNullOrEmpty()) { @@ -150,7 +200,8 @@ namespace Volo.Abp.Cli.ProjectModification } } - private async Task DownloadSourceCodesToSolutionFolder(ModuleWithMastersInfo module, string modulesFolderInSolution, string version = null) + private async Task DownloadSourceCodesToSolutionFolder(ModuleWithMastersInfo module, + string modulesFolderInSolution, string version = null) { var targetModuleFolder = Path.Combine(modulesFolderInSolution, module.Name); @@ -216,7 +267,8 @@ namespace Volo.Abp.Cli.ProjectModification await ProjectNugetPackageAdder.AddAsync(targetProjectFile, nugetPackage); } - var mvcNpmPackages = module.NpmPackages?.Where(p => p.ApplicationType.HasFlag(NpmApplicationType.Mvc)).ToList(); + var mvcNpmPackages = module.NpmPackages?.Where(p => p.ApplicationType.HasFlag(NpmApplicationType.Mvc)) + .ToList(); if (!mvcNpmPackages.IsNullOrEmpty()) { @@ -240,7 +292,8 @@ namespace Volo.Abp.Cli.ProjectModification } } - protected void ModifyDbContext(string[] projectFiles, ModuleInfo module, string startupProject, bool skipDbMigrations = false) + protected void ModifyDbContext(string[] projectFiles, ModuleInfo module, string startupProject, + bool skipDbMigrations = false) { if (string.IsNullOrWhiteSpace(module.EfCoreConfigureMethodName)) { @@ -275,11 +328,13 @@ namespace Volo.Abp.Cli.ProjectModification if (dbContextFile == null) { - Logger.LogDebug($"{dbMigrationsProject} project doesn't have a class that is derived from \"AbpDbContext\"."); + Logger.LogDebug( + $"{dbMigrationsProject} project doesn't have a class that is derived from \"AbpDbContext\"."); return; } - var addedNewBuilder = DbContextFileBuilderConfigureAdder.Add(dbContextFile, module.EfCoreConfigureMethodName); + var addedNewBuilder = + DbContextFileBuilderConfigureAdder.Add(dbContextFile, module.EfCoreConfigureMethodName); if (!skipDbMigrations) { From e5f1812e4405da127bef17180e08fe3c8e2d2c84 Mon Sep 17 00:00:00 2001 From: Mladen Macanovic Date: Fri, 2 Oct 2020 11:05:28 +0200 Subject: [PATCH 075/114] Formating settings for ABP solution based on the default C# settings --- framework/.editorconfig | 131 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 framework/.editorconfig diff --git a/framework/.editorconfig b/framework/.editorconfig new file mode 100644 index 0000000000..9f20b90112 --- /dev/null +++ b/framework/.editorconfig @@ -0,0 +1,131 @@ +# Rules in this file were initially inferred by Visual Studio IntelliCode from the D:\Projects\Volosoft\abp\framework codebase based on best match to current usage at 2.10.2020. +# You can modify the rules from these initially generated values to suit your own policies +# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference +[*.cs] + + +#Core editorconfig formatting - indentation + +#use soft tabs (spaces) for indentation +indent_style = space + +#Formatting - indentation options + +#indent switch case contents. +csharp_indent_case_contents = true +#indent switch labels +csharp_indent_switch_labels = true + +#Formatting - new line options + +#place catch statements on a new line +csharp_new_line_before_catch = true +#place else statements on a new line +csharp_new_line_before_else = true +#require members of object intializers to be on separate lines +csharp_new_line_before_members_in_object_initializers = true +#require braces to be on a new line for accessors, methods, lambdas, object_collection_array_initializers, control_blocks, types, and properties (also known as "Allman" style) +csharp_new_line_before_open_brace = accessors, methods, lambdas, object_collection_array_initializers, control_blocks, types, properties + +#Formatting - organize using options + +#sort System.* using directives alphabetically, and place them before other usings +dotnet_sort_system_directives_first = true + +#Formatting - spacing options + +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +#Formatting - wrapping options + +#leave code block on single line +csharp_preserve_single_line_blocks = true + +#Style - Code block preferences + +#prefer curly braces even for one line of code +csharp_prefer_braces = true:suggestion + +#Style - expression bodied member options + +#prefer block bodies for constructors +csharp_style_expression_bodied_constructors = false:suggestion +#prefer block bodies for methods +csharp_style_expression_bodied_methods = false:suggestion +#prefer expression-bodied members for properties +csharp_style_expression_bodied_properties = true:suggestion + +#Style - expression level options + +#prefer out variables to be declared inline in the argument list of a method call when possible +csharp_style_inlined_variable_declaration = true:suggestion +#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them +dotnet_style_predefined_type_for_member_access = true:suggestion + +#Style - Expression-level preferences + +#prefer default over default(T) +csharp_prefer_simple_default_expression = true:suggestion +#prefer objects to be initialized using object initializers when possible +dotnet_style_object_initializer = true:suggestion +#prefer inferred tuple element names +dotnet_style_prefer_inferred_tuple_names = true:suggestion + +#Style - implicit and explicit types + +#prefer var over explicit type in all cases, unless overridden by another code style rule +csharp_style_var_elsewhere = true:suggestion +#prefer var is used to declare variables with built-in system types such as int +csharp_style_var_for_built_in_types = true:suggestion +#prefer var when the type is already mentioned on the right-hand side of a declaration expression +csharp_style_var_when_type_is_apparent = true:suggestion + +#Style - language keyword and framework type options + +#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion + +#Style - modifier options + +#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods. +dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion + +#Style - Modifier preferences + +#when this rule is set to a list of modifiers, prefer the specified ordering. +csharp_preferred_modifier_order = public,protected,private,virtual,async,static,override,readonly,abstract:suggestion + +#Style - Pattern matching + +#prefer pattern matching instead of is expression with type casts +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion + +#Style - qualification options + +#prefer fields not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_field = false:suggestion +#prefer methods not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_method = false:suggestion +#prefer properties not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_property = false:suggestion From cacf4bc351f040d8bb53d5510aff65dbde4fc3de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 13:54:40 +0300 Subject: [PATCH 076/114] Added ABP Form Tag Helpers section --- docs/en/UI/AspNetCore/Forms-Validation.md | 51 +++++++++++++++++- .../AspNetCore/Tag-Helpers/Dynamic-Forms.md | 8 +-- docs/en/images/abp-dynamic-form-result.png | Bin 0 -> 55351 bytes 3 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 docs/en/images/abp-dynamic-form-result.png diff --git a/docs/en/UI/AspNetCore/Forms-Validation.md b/docs/en/UI/AspNetCore/Forms-Validation.md index 2bac932311..e8ef7b7ee7 100644 --- a/docs/en/UI/AspNetCore/Forms-Validation.md +++ b/docs/en/UI/AspNetCore/Forms-Validation.md @@ -74,9 +74,58 @@ namespace MyProject.Web.Pages } ```` -## ABP Form Tag Helpers +In order to create the form in a razor page, create a property in your `PageModel` class: + +```csharp +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace MyProject.Web.Pages +{ + public class CreateMovieModel : PageModel + { + [BindProperty] + public MovieViewModel Movie { get; set; } + + public void OnGet() + { + Movie = new MovieViewModel(); + } + + public async Task OnPostAsync() + { + if (ModelState.IsValid) + { + //TODO: Save the Movie + } + } + } +} +``` +Then you can render the form in the `.cshtml` file: + +```html +@page +@model MyProject.Web.Pages.CreateMovieModel + +

    Create a new Movie

    + + +``` + +The result is shown below: + +![abp-dynamic-form-result](../../images/abp-dynamic-form-result.png) + +See the *Localization & Validation* section below to localize the field display names and see how the validation works. + +> See [its own document](Tag-Helpers/Dynamic-Forms.md) for all options of the `abp-dynamic-form` tag helper. + +## ABP Form Tag Helpers +## Localization & Validation ## See Also diff --git a/docs/en/UI/AspNetCore/Tag-Helpers/Dynamic-Forms.md b/docs/en/UI/AspNetCore/Tag-Helpers/Dynamic-Forms.md index 3992c7d8a1..0c374a9cf8 100644 --- a/docs/en/UI/AspNetCore/Tag-Helpers/Dynamic-Forms.md +++ b/docs/en/UI/AspNetCore/Tag-Helpers/Dynamic-Forms.md @@ -1,7 +1,5 @@ # Dynamic Forms -`Warning:` Before getting into this document, be sure that you have clearly understood [abp form elements](Form-elements.md) document. - ## Introduction `abp-dynamic-form` creates a bootstrap form for a given c# model. @@ -272,4 +270,8 @@ You can set it yourself by using `[Display()]` attribute of Asp.Net Core. You ca ````csharp [Display(Name = "Name")] public string Name { get; set; } -```` \ No newline at end of file +```` + +## See Also + +* [Form Elements](Form-elements.md) \ No newline at end of file diff --git a/docs/en/images/abp-dynamic-form-result.png b/docs/en/images/abp-dynamic-form-result.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ecf14bd0c4c7e9a9dfb94d5bb996bf4015d822 GIT binary patch literal 55351 zcmdpd=U^7b?@dMNy?3Pd&mzZNqtcF%s7Df=p~>sQCQ`4?%Krnt`BR67y5D~9w4Dol5FQln|;U3@P2AJ-?CP=-xhkN{C;(c=W^>wV=-Q#WO|4U6* z9*;yuMw%C};b!uZF&^*In2-F%C*!c>iSpyek#rJRKfk~!B<{xx|MSenTvu8=qwgu> z_TfIph843ESi>E9rHQv1^mury9f2N4>f1s4rBmx&Qy=~8Br~fEOE83his)pW4SH(Q zcS4RUmJY;7NEw-9W!cgu0RATsp$27HCOw3Xf8;uh^!4}AFBd?HQVXf`R3c;~Cr?@#a;fRC?sGvC zx8e%-o{pY?EKUA9EvQ-8; QfTHzO03zDfEqtqG4)-+*+&QkIif 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�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%0AiM~1e>NJD`;`M03u;-gYZgdNkp|yPK9g| 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 fKTPPS^riIA_o@1?cYXN=3{VD7S3j3^P6 Date: Fri, 2 Oct 2020 14:19:06 +0300 Subject: [PATCH 077/114] abp-imput checkbox margin-bottom-2 --- .../TagHelpers/Form/AbpInputTagHelperService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs index 5bebab0257..9436acbbbf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs @@ -97,7 +97,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form protected virtual string SurroundInnerHtmlAndGet(TagHelperContext context, TagHelperOutput output, string innerHtml, bool isCheckbox) { - return "
    " + + return "
    " + Environment.NewLine + innerHtml + Environment.NewLine + "
    "; } From f10f3d59375e3483b1dd88ab45a9d5fe6198465a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levent=20Arman=20=C3=96zak?= Date: Fri, 2 Oct 2020 14:54:23 +0300 Subject: [PATCH 078/114] Update Environment.md --- docs/en/UI/Angular/Environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Angular/Environment.md b/docs/en/UI/Angular/Environment.md index ab2a99c8d8..708f77b91c 100644 --- a/docs/en/UI/Angular/Environment.md +++ b/docs/en/UI/Angular/Environment.md @@ -54,7 +54,7 @@ Everything else will be sent to `"https://localhost:8080"` * `rootNamespace` **(new)** : Root namespace of the related API. e.g. Acme.BookStore -## Application +## Application ```js export interface Application { From 1bcd6a0cafc1c988a56e765461a823a31f1af721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levent=20Arman=20=C3=96zak?= Date: Fri, 2 Oct 2020 14:54:58 +0300 Subject: [PATCH 079/114] Update Environment.md --- docs/en/UI/Angular/Environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Angular/Environment.md b/docs/en/UI/Angular/Environment.md index 708f77b91c..1b78a11cc6 100644 --- a/docs/en/UI/Angular/Environment.md +++ b/docs/en/UI/Angular/Environment.md @@ -69,7 +69,7 @@ Everything else will be sent to `"https://localhost:8080"` * `baseUrl`: [For detailed information](./Multi-Tenancy.md#domain-tenant-resolver) -## AuthConfig +## AuthConfig For authentication, we use angular-oauth2-oidc. Please check their [docs](https://github.com/manfredsteyer/angular-oauth2-oidc) out From bc8d19fd3108e32d705129dbd3f0e2f10e989b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levent=20Arman=20=C3=96zak?= Date: Fri, 2 Oct 2020 14:56:56 +0300 Subject: [PATCH 080/114] Update Toaster-Service.md --- docs/en/UI/Angular/Toaster-Service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Angular/Toaster-Service.md b/docs/en/UI/Angular/Toaster-Service.md index d2c1fc08f3..f6d5c71e99 100644 --- a/docs/en/UI/Angular/Toaster-Service.md +++ b/docs/en/UI/Angular/Toaster-Service.md @@ -67,7 +67,7 @@ With the options above, the toast overlay looks like this: ![toast](./images/toast.png) -### How to Remove a Toast Overlay +### How to Remove a Toast Overlay The open toast overlay can be removed manually via the `remove` method by passing the `id` of toast: From bf194cc68275feba7acc94a4f75d70008b3a61d4 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 2 Oct 2020 15:22:38 +0300 Subject: [PATCH 081/114] Fix: Links with `.md#` are failing resolves https://github.com/volosoft/volo/issues/3575 --- .../Markdown/MarkdownDocumentToHtmlConverter.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs b/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs index 9942c52309..48daaff769 100644 --- a/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs +++ b/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs @@ -74,6 +74,15 @@ namespace Volo.Docs.Markdown return Regex.Replace(content, MarkdownLinkRegExp, delegate (Match match) { var link = match.Groups[3].Value; + + var hashPart = ""; + if (link.Contains("#")) + { + var linkSplitted = link.Split("#"); + link = linkSplitted[0]; + hashPart = linkSplitted[1]; + } + if (UrlHelper.IsExternalLink(link)) { return match.Value; @@ -100,6 +109,11 @@ namespace Volo.Docs.Markdown documentLocalDirectoryNormalized = "/" + documentLocalDirectoryNormalized; } + if (!string.IsNullOrEmpty(hashPart)) + { + documentName += $"#{hashPart}"; + } + return string.Format( MdLinkFormat, displayText, From 54512b5412083a8958d6e6a000ffc21b2cb49b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 15:29:22 +0300 Subject: [PATCH 082/114] Completed the Forms & Validation document for ASP.NET Core MVC / Razor Pages --- docs/en/Localization.md | 5 +- docs/en/UI/AspNetCore/Forms-Validation.md | 76 +++++++++++++++++- docs/en/docs-nav.json | 6 +- ...orm-input-validation-error-french-name.png | Bin 0 -> 4382 bytes ...abp-form-input-validation-error-french.png | Bin 0 -> 4892 bytes .../abp-form-input-validation-error.png | Bin 0 -> 4401 bytes 6 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 docs/en/images/abp-form-input-validation-error-french-name.png create mode 100644 docs/en/images/abp-form-input-validation-error-french.png create mode 100644 docs/en/images/abp-form-input-validation-error.png diff --git a/docs/en/Localization.md b/docs/en/Localization.md index 954fe8620f..37104a4878 100644 --- a/docs/en/Localization.md +++ b/docs/en/Localization.md @@ -2,7 +2,7 @@ ABP's localization system is seamlessly integrated to the `Microsoft.Extensions.Localization` package and compatible with the [Microsoft's localization documentation](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization). It adds some useful features and enhancements to make it easier to use in real life application scenarios. -## Volo.Abp.Localization Package +## Installation > This package is already installed by default with the startup template. So, most of the time, you don't need to install it manually. @@ -242,4 +242,5 @@ Both of the samples above produce the output `Hello John, welcome!`. ## See Also -* [Localization in Angular UI](UI/Angular/Localization.md) \ No newline at end of file +* [Localization in Angular UI](UI/Angular/Localization.md) +* [Forms & Validation](UI/AspNetCore/Forms-Validation.md) for the ASP.NET Core MVC / Razor Pages UI \ No newline at end of file diff --git a/docs/en/UI/AspNetCore/Forms-Validation.md b/docs/en/UI/AspNetCore/Forms-Validation.md index e8ef7b7ee7..2934e81658 100644 --- a/docs/en/UI/AspNetCore/Forms-Validation.md +++ b/docs/en/UI/AspNetCore/Forms-Validation.md @@ -125,7 +125,81 @@ See the *Localization & Validation* section below to localize the field display ## ABP Form Tag Helpers -## Localization & Validation +While `abp-dynamic-form` covers most of the scenarios and allows you to control and customize the form using the attributes. + +However, if you want to **render the form body yourself** (for example, you may want to fully control the **form layout**), you can directly use the [ABP Form Tag Helpers](Tag-Helpers/Form-elements.md). The same auto-generated form above can be created using the ABP Form Tag Helpers as shown below: + +```html +@page +@model MyProject.Web.Pages.CreateMovieModel + +

    Create a new Movie

    + +
    + + + + + + + Save + +``` + +> See the [ABP Form Tag Helpers](Tag-Helpers/Form-elements.md) document for details of these tag helpers and their options. + +## Validation & Localization + +Both of the Dynamic Form and the Form Tag Helpers **automatically validate** the input based on the data annotation attributes and shows validation error messages on the user interface. Error messages are **automatically localized** based on the current culture. + +**Example: User leaves empty a requires string property** + +![abp-form-input-validation-error](../../images/abp-form-input-validation-error.png) + +The error message below is shown if the language is French: + +![abp-form-input-validation-error](../../images/abp-form-input-validation-error-french.png) + +Validation errors are already [translated](https://github.com/abpframework/abp/tree/dev/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization) a lot of languages. You can [contribute](../../Contribution/Index.md) to the translation for your own language or override the texts for your own application by following the [localization](../../Localization.md) documentation. + +## Display Name Localization + +ABP Framework uses the property name as the field name on the user interface. You typically want to [localize](../../Localization.md) this name based on the current culture. + +ABP Framework can conventionally localize the fields on the UI when you add the localization keys to the localization JSON files. + +Example: French localization for the *Name* property (add into the `fr.json` in the application): + +````js +"Name": "Nom" +```` + +Then the UI will use the given name for French language: + +![abp-form-input-validation-error](../../images/abp-form-input-validation-error-french-name.png) + +### Using the `DisplayName:` Prefix + +Directly using the property name as the localization key may be a problem if you need to use the property name for other purpose, which a different translation value. In this case, use the `DisplayName:` prefix for the localization key: + +````js +"DisplayName:Name": "Nom" +```` + +ABP prefers to use the `DisplayName:Name` key over the `Name` key if it does exists. + +### Using a Custom Localization Key + +If you need, you can use the `[DisplayName]` attribute to specify the localization key for a specific property: + +````csharp +[DisplayName("MyNameKey")] +public string Name { get; set; } +```` + +In this case, you can add an entry to the localization file using the key `MyNameKey`. + +> If you use the `[DisplayName]` but not add a corresponding entity to the localization file, then ABP Framework shows the given key as the field name, `MyNameKey` for this case. So, it provides a way to specify a hard coded display name even if you don't need to use the localization system. ## See Also diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index d6991ccc98..423ee8db9d 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -392,7 +392,7 @@ "text": "User Interface", "items": [ { - "text": "ASP.NET Core", + "text": "ASP.NET Core MVC / Razor Pages", "items": [ { "text": "Client Side Package Management", @@ -402,6 +402,10 @@ "text": "Bundling & Minification", "path": "UI/AspNetCore/Bundling-Minification.md" }, + { + "text": "Forms & Validation", + "path": "UI/AspNetCore/Forms-Validation.md" + }, { "text": "Tag Helpers", "path": "UI/AspNetCore/Tag-Helpers/Index.md", diff --git a/docs/en/images/abp-form-input-validation-error-french-name.png b/docs/en/images/abp-form-input-validation-error-french-name.png new file mode 100644 index 0000000000000000000000000000000000000000..5112cd259723391eced00322ec853aec352e5a05 GIT binary patch literal 4382 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 Date: Fri, 2 Oct 2020 15:34:49 +0300 Subject: [PATCH 083/114] docs: update link to RoutesService document --- docs/en/Tutorials/Part-2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 61271b1c93..ed59070cec 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -443,7 +443,7 @@ function configureRoutes(routes: RoutesService) { * `order` is the order of the menu item. * `layout` is the layout of the BooksModule's routes (there are three types of pre-defined layouts: `eLayoutType.application`, `eLayoutType.account` or `eLayoutType.empty`). -For more information, see the [RoutesService document](https://docs.abp.io/en/abp/latest/UI/Angular/Modifying-the-Menu.md#via-routesservice). +For more information, see the [RoutesService document](../UI/Angular/Modifying-the-Menu.md#via-routesservice). ### Service Proxy Generation From 12b90a9b5c223c4f9432f3768a898bce6d526bb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 15:38:02 +0300 Subject: [PATCH 084/114] Update Forms-Validation.md --- docs/en/UI/AspNetCore/Forms-Validation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/AspNetCore/Forms-Validation.md b/docs/en/UI/AspNetCore/Forms-Validation.md index 2934e81658..e62a6dc807 100644 --- a/docs/en/UI/AspNetCore/Forms-Validation.md +++ b/docs/en/UI/AspNetCore/Forms-Validation.md @@ -125,7 +125,7 @@ See the *Localization & Validation* section below to localize the field display ## ABP Form Tag Helpers -While `abp-dynamic-form` covers most of the scenarios and allows you to control and customize the form using the attributes. +`abp-dynamic-form` covers most of the scenarios and allows you to control and customize the form using the attributes. However, if you want to **render the form body yourself** (for example, you may want to fully control the **form layout**), you can directly use the [ABP Form Tag Helpers](Tag-Helpers/Form-elements.md). The same auto-generated form above can be created using the ABP Form Tag Helpers as shown below: From 53387c2f8250b29da5657889a494b526f3331df8 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Fri, 2 Oct 2020 17:19:18 +0300 Subject: [PATCH 085/114] feat: add manage profile guard --- .../account/src/lib/account-routing.module.ts | 3 +- .../account/src/lib/account.module.ts | 2 + .../src/lib/guards/manage-profile.guard.ts | 18 +++ .../src/lib/services/config-state.service.ts | 4 + .../core/src/lib/states/config.state.ts | 5 + npm/ng-packs/yarn.lock | 111 ++++++++++-------- 6 files changed, 90 insertions(+), 53 deletions(-) create mode 100644 npm/ng-packs/packages/account/src/lib/guards/manage-profile.guard.ts diff --git a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts index 6883921202..0b80242aab 100644 --- a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts +++ b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts @@ -11,6 +11,7 @@ import { ManageProfileComponent } from './components/manage-profile/manage-profi import { RegisterComponent } from './components/register/register.component'; import { eAccountComponents } from './enums/components'; import { AuthenticationFlowGuard } from './guards/authentication-flow.guard'; +import { ManageProfileGuard } from './guards/manage-profile.guard'; const routes: Routes = [ { path: '', pathMatch: 'full', redirectTo: 'login' }, @@ -43,7 +44,7 @@ const routes: Routes = [ { path: 'manage-profile', component: ReplaceableRouteContainerComponent, - canActivate: [AuthGuard], + canActivate: [AuthGuard, ManageProfileGuard], data: { replaceableComponent: { key: eAccountComponents.ManageProfile, diff --git a/npm/ng-packs/packages/account/src/lib/account.module.ts b/npm/ng-packs/packages/account/src/lib/account.module.ts index 7f2151dfd1..ac99aefdf6 100644 --- a/npm/ng-packs/packages/account/src/lib/account.module.ts +++ b/npm/ng-packs/packages/account/src/lib/account.module.ts @@ -15,6 +15,7 @@ import { Options } from './models/options'; import { ACCOUNT_OPTIONS } from './tokens/options.token'; import { accountOptionsFactory } from './utils/factory-utils'; import { AuthenticationFlowGuard } from './guards/authentication-flow.guard'; +import { ManageProfileGuard } from './guards/manage-profile.guard'; @NgModule({ declarations: [ @@ -41,6 +42,7 @@ export class AccountModule { ngModule: AccountModule, providers: [ AuthenticationFlowGuard, + ManageProfileGuard, { provide: ACCOUNT_OPTIONS, useValue: options }, { provide: 'ACCOUNT_OPTIONS', diff --git a/npm/ng-packs/packages/account/src/lib/guards/manage-profile.guard.ts b/npm/ng-packs/packages/account/src/lib/guards/manage-profile.guard.ts new file mode 100644 index 0000000000..ca840bd913 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/guards/manage-profile.guard.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; +import { ConfigStateService } from '@abp/ng.core'; + +@Injectable() +export class ManageProfileGuard implements CanActivate { + constructor(private configState: ConfigStateService) {} + + canActivate(_: ActivatedRouteSnapshot, __: RouterStateSnapshot) { + const env = this.configState.getEnvironment(); + if (env.oAuthConfig.responseType === 'code') { + window.open(`${env.oAuthConfig.issuer}/Account/Manage`, '_blank'); + return false; + } else { + return true; + } + } +} diff --git a/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts b/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts index dd7abf929e..ee3f49e17a 100644 --- a/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/config-state.service.ts @@ -17,6 +17,10 @@ export class ConfigStateService { return this.store.selectSnapshot(ConfigState.getApplicationInfo); } + getEnvironment() { + return this.store.selectSnapshot(ConfigState.getEnvironment); + } + getOne(...args: Parameters) { return this.store.selectSnapshot(ConfigState.getOne(...args)); } diff --git a/npm/ng-packs/packages/core/src/lib/states/config.state.ts b/npm/ng-packs/packages/core/src/lib/states/config.state.ts index 4e686dbe62..2953c5212f 100644 --- a/npm/ng-packs/packages/core/src/lib/states/config.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/config.state.ts @@ -28,6 +28,11 @@ export class ConfigState { return state.environment.application || ({} as Config.Application); } + @Selector() + static getEnvironment(state: Config.State): Config.Environment { + return state.environment; + } + static getOne(key: string) { const selector = createSelector([ConfigState], (state: Config.State) => { return state[key]; diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index a5c9cd69b5..dbec8a038b 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,20 +2,20 @@ # yarn lockfile v1 -"@abp/ng.account@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.2.0-rc.2.tgz#30ec416a9d05f87fe2664943d72f051d1b84aaad" - integrity sha512-iobXZEJh/pXz4dxFjN407KTFJnFcaUBH4Bx5pwUAPV1HIXwNQzANWHe4389GEZjUohV+0WVhdRI85bffGFCOQA== +"@abp/ng.account@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.2.0.tgz#95323fe873a91ed96f5604d0791dbf78b4245f31" + integrity sha512-0OKVYJ1uB33VCa+IReyz0VSb9ku4OJYG+6b1hrqCJcJCzqzbltCxCVVJ31FvrYDoEah3E1TNQIzTxvbCuoG8YA== dependencies: - "@abp/ng.theme.shared" "~3.2.0-rc.2" + "@abp/ng.theme.shared" "~3.2.0" tslib "^2.0.0" -"@abp/ng.core@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.2.0-rc.2.tgz#51ecd1884e99bb9a17802f786a25263f4d6fbfff" - integrity sha512-7zKejXr6Y75AlsrPsuBsmHmv2t4qCAfPhrgQ+/YHuqAd8h3XZcSWn75vKm8405KEe2pTTY8+mA+aUT8Mmc9HMg== +"@abp/ng.core@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.2.0.tgz#6970a9a483c3796af7b7db2af3d5c3c6cfd7410c" + integrity sha512-AYNrWi41hFpM6zOc2K/l13r6gmLu99QUbHr1dwsp+goGXo0UZ1dLJ3HtxNnwte4Wx2U2DmkLPvVovCHxcXbXAA== dependencies: - "@abp/utils" "^3.2.0-rc.1" + "@abp/utils" "^3.2.0-rc.2" "@angular/localize" "~10.0.10" "@ngxs/router-plugin" "^3.7.0" "@ngxs/storage-plugin" "^3.7.0" @@ -27,35 +27,35 @@ ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.2.0-rc.2.tgz#a46f8ba30341249d091887c7588fce0ecd62b624" - integrity sha512-9ILmEboRKqHdCjVS/uYR8wHXJrC+8n8zEdtDu6mwbMoGG5G2iGWUbL0coQrFhkXXWetCq8M1KqEnBATTW9r0ng== +"@abp/ng.feature-management@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.2.0.tgz#0ebe620f84b206ea87d876b791359b9d97e46c92" + integrity sha512-Up7BuPmp24/zmwllHAe6AqnbgwtiV2YnMQApsEnh2Mv+d8LfvGQEeqSILIYebovHod6rkEvIWrpXQBAwOF8O6Q== dependencies: - "@abp/ng.theme.shared" "~3.2.0-rc.2" + "@abp/ng.theme.shared" "~3.2.0" tslib "^2.0.0" -"@abp/ng.identity@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.2.0-rc.2.tgz#075a119bb585753231195ba1a71a3484a8e157fa" - integrity sha512-RivOj97jGbJgS9dKA3HWfm3VOHPQZan+l33B6F6lR9W5z7PX454h7a/dEtVcBa1B4tsyELP48IUv6hNx7iw1KA== +"@abp/ng.identity@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.2.0.tgz#3ab2e8d1813c6ddbceb4e7edb1de5fe28d4b1e39" + integrity sha512-7dP6Hbkr6lML1R2hjGxzZI65cjTvKPdOR2/OCYw2UxoCshQLqj0aiMxzzul+sMX2EFQCb5dLDuSJouK0CveyJg== dependencies: - "@abp/ng.permission-management" "~3.2.0-rc.2" - "@abp/ng.theme.shared" "~3.2.0-rc.2" + "@abp/ng.permission-management" "~3.2.0" + "@abp/ng.theme.shared" "~3.2.0" tslib "^2.0.0" -"@abp/ng.permission-management@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.2.0-rc.2.tgz#cf0f74759a930b778b104d2e85dd9345b08a969d" - integrity sha512-7HKq0JcWcqSyOOfrP+ud3tTjrn+3STEOgjfAcTF6Xg0l6DxXlwVnEa653qE51GH0JfWp9iaOtXChmt6e0VMHqg== +"@abp/ng.permission-management@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.2.0.tgz#43f7b3c2dca3c066c4ade8d137e3705a0480a55e" + integrity sha512-iPbAhYx8arAwMQ88hxTGSWFwv1UXxxrxSA0IefjCUAX2sdvIC/2WVcfo7UcS5DxM4TIu/+9TKsWC4gRR/8bHsQ== dependencies: - "@abp/ng.theme.shared" "~3.2.0-rc.2" + "@abp/ng.theme.shared" "~3.2.0" tslib "^2.0.0" -"@abp/ng.schematics@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-3.2.0-rc.2.tgz#22f4a7d00abbde7b03d4bca179ca235efed3e6d1" - integrity sha512-QewJMq7AYOQomvtXT0O/v+KQ+AxF8Crfx6uKvInCQ3o/ne+fcwrWITgUTdjn78Eb+hRj9kBLux0PHJF1IOGLZQ== +"@abp/ng.schematics@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-3.2.0.tgz#de45bddf14639b5cc2f39cd34f3b8250620aadaf" + integrity sha512-TV6jElMI4W7P/CmLkbhjzR9BsGdSx6C1SC4rlVvbKfwrpcTQ4jv4YJNOXHyk36EnwNMRu+TkUj+45MlOfEAQkw== dependencies: "@angular-devkit/core" "~10.0.3" "@angular-devkit/schematics" "~10.0.3" @@ -63,37 +63,37 @@ jsonc-parser "^2.3.0" typescript "~3.9.2" -"@abp/ng.setting-management@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.2.0-rc.2.tgz#f4586190a57bb06bc675c30484adea7b598f3663" - integrity sha512-lRkBeh7evzbeg1aBX2b1X0rwzjfnbrNllIk3gHadnbeRKts+cy7njENzSfoMjBAxUUh5I1Pd5vwK6syz1nJ+0Q== +"@abp/ng.setting-management@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.2.0.tgz#f0e4cb4deba76cbe4b49f54977bf260b6f41f4d7" + integrity sha512-cEuVjljCE9N+lLZP3ZOhhnShvRCck0yeAXELzvG/GTsAlJkw99jWUQxG+UI7Dh7lBVhFg9oF4qyr0zzM8Wf/PA== dependencies: - "@abp/ng.theme.shared" "~3.2.0-rc.2" + "@abp/ng.theme.shared" "~3.2.0" tslib "^2.0.0" -"@abp/ng.tenant-management@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.2.0-rc.2.tgz#df82ff2c28680ea001bc7e4e9b84433c8d87f082" - integrity sha512-Rwh0UVzpk2ItGwjv/ftJ9U6ZEAeAeDpl5jr4xzFm4sa7H5hWVKFCOxjL1DZOrcI9dk6b6DUifsIvqHPy0KxURA== +"@abp/ng.tenant-management@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.2.0.tgz#7402347ab45e11437838d4a1d5b4f52f908630f7" + integrity sha512-J0ma1fE/q/jDSoZpgV3eCZtd6NA9HrNHXkCi18QprfTAOCTqLipOvit60ed5rrPcZVbxdv8mnVTRtAaP/FnWLA== dependencies: - "@abp/ng.feature-management" "~3.2.0-rc.2" - "@abp/ng.theme.shared" "~3.2.0-rc.2" + "@abp/ng.feature-management" "~3.2.0" + "@abp/ng.theme.shared" "~3.2.0" tslib "^2.0.0" -"@abp/ng.theme.basic@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.2.0-rc.2.tgz#909e6d5a8da4acd04517eb974a631341195d47ee" - integrity sha512-DEebOMR7DSLF3iIVBBwb08EbZwn1jVc6lAvJIl4yttLbYjxmYc3ra5TXNSYJit0jeknmnibCo2rNDG6sFPeidg== +"@abp/ng.theme.basic@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.2.0.tgz#9a1a80050e37a2d029b0ec0b070f28c7afe06484" + integrity sha512-1z277I8mamzeSzYvJIwgwKXIPreH9CqQq0l+2tGu98HaivOxpkpWeWkviT3Xu6wGHILaTXtwBQMoae2AGEDL7A== dependencies: - "@abp/ng.theme.shared" "~3.2.0-rc.2" + "@abp/ng.theme.shared" "~3.2.0" tslib "^2.0.0" -"@abp/ng.theme.shared@~3.2.0-rc.2": - version "3.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.2.0-rc.2.tgz#4f8b1a44488be59888d6d458d356d436198404e5" - integrity sha512-WtYYo9dO+LGCUjkiZpgTN44oOA6r1O5Y+6XDxqoBGhzvhlN/Uz+t87cLkurhShRnqXAAd15DLW4Q/+y/F81tGQ== +"@abp/ng.theme.shared@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.2.0.tgz#0587daa9b88e274656ed7288c3280a80d90d17e0" + integrity sha512-DazYqnJGy5dfDZHQY0kfZF5hANHX+xSc25EFAkteEO4e9Y0XAM5Z3YPn/pdIkxmfBoXAeTiMOjkVeuhyHlgDew== dependencies: - "@abp/ng.core" "~3.2.0-rc.2" + "@abp/ng.core" "~3.2.0" "@fortawesome/fontawesome-free" "^5.14.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0" "@ngx-validate/core" "^0.0.11" @@ -102,7 +102,14 @@ chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^3.2.0-rc.1", "@abp/utils@^3.2.0-rc.2": +"@abp/utils@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" + integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== + dependencies: + just-compare "^1.3.0" + +"@abp/utils@^3.2.0-rc.2": version "3.2.0-rc.2" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0-rc.2.tgz#84697871830e7b061e255c1b7a2f66a92b2a6560" integrity sha512-DWsu2uwj7BeqROTYk9VXT29+kkDSbUeh86GRFvaDBrkeE+XGAiCW+rG43j6y1mdJHwmuaAkCDoV4xEBYdi/sVA== From 3066f1d4e7dfc26b32f0bdc51f2a5e20c32621c8 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Fri, 2 Oct 2020 17:29:34 +0300 Subject: [PATCH 086/114] chore: export manage profile guard --- npm/ng-packs/packages/account/src/lib/guards/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/ng-packs/packages/account/src/lib/guards/index.ts b/npm/ng-packs/packages/account/src/lib/guards/index.ts index 382170b2b1..a8b9edd4d5 100644 --- a/npm/ng-packs/packages/account/src/lib/guards/index.ts +++ b/npm/ng-packs/packages/account/src/lib/guards/index.ts @@ -1 +1,2 @@ export * from './authentication-flow.guard'; +export * from './manage-profile.guard'; From e65f5bfd7378ddb691b57f130a896797a3d183ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 2 Oct 2020 17:47:21 +0300 Subject: [PATCH 087/114] Update Using-DevExtremeAngularComponents-With-The-ABP-Framework.md --- ...ngularComponents-With-The-ABP-Framework.md | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md index 4637f07e57..c20b796073 100644 --- a/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md +++ b/docs/en/Community-Articles/2020-09-28-Using-DevExtremeAngularComponents-With-The-ABP-Framework/Using-DevExtremeAngularComponents-With-The-ABP-Framework.md @@ -1,34 +1,39 @@ -## Using DevExtreme Angular Components With the ABP Framework +# Using DevExtreme Angular Components With the ABP Framework -Hello, this is a follow up on the article [Using DevExtreme Components With the ABP Framework](https://community.abp.io/articles/using-devextreme-components-with-the-abp-framework-zb8z7yqv) - -We will create the same application using Angular as the UI framework and integrate [DevExpress Angular components](https://js.devexpress.com/Documentation/Guide/Angular_Components/DevExtreme_Angular_Components/). +In this article, I will show you how to integrate the [DevExpress Angular components](https://js.devexpress.com/Documentation/Guide/Angular_Components/DevExtreme_Angular_Components/) to a project created using the ABP Framework startup templates. Then I will use the [DataGrid](https://js.devexpress.com/Documentation/Guide/Widgets/DataGrid/Overview/) component to show a list of users on the UI. ## Create the Project -For detail information about how to generate and start up a project, please refer to the [official docs](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No). For the scope of this post, we will not go into details of the backend applications. - -Let's create an application using [ABP CLI](https://docs.abp.io/en/abp/latest/CLI#new) +Let's create a new web application with the Angular UI using [ABP CLI](https://docs.abp.io/en/abp/latest/CLI#new): ```shell abp new DevExtremeAngular -u angular ``` -After the project is created, you should run following projects in order +> For detail information about how to generate and start up a project, please refer to the [official docs](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No). For the scope of this post, we will not go into details of the backend applications. + +## Running the Solution + +### The Server Side + +Server side contains multiple projects in the solution: ![A screenshot showing DevExtremeAngular.DbMigrator and DevExtremeAngular.HttpApi.Host](project-setup.png) -Firstly, run `DevExtremeAngular.DbMigrator` for db migration and then run `DevExtremeAngular.HttpApi.Host` for backend APIs. +Run following projects in order; + +* Run `DevExtremeAngular.DbMigrator` to create the database and seed the initial data. +* Run `DevExtremeAngular.HttpApi.Host` project to make the backend API up & running. -After the backend is ready, navigate to `angular` folder and run `yarn` or `npm install` based on which package you are using. +### The Angular Application -After installation process is done, you can start your angular project by running `yarn start` or `npm start` +Open a command line terminal and navigate to `angular` folder then run `yarn` or `npm install` based on which package you are using. -Everything should run smoothly and when you go to http://localhost:4200 in the browser, you should see your application up and running. +After installation process is done, you can start your angular project by running `yarn start` or `npm start`. This command should serve the application and open the application in your default browser. If it doesn't open, you can navigate to http://localhost:4200 in your browser: ![A screenshot showing localhost is running](localhost-running.png) -You can login to the application by using following credentials +You can login to the application by using following credentials: > _Default admin username is **admin** and password is **1q2w3E\***_ @@ -38,18 +43,17 @@ After successful login, you should be redirected to home page. ## Install DevExtreme -Let's start with installing DevExtreme into our project before writing any code. - You can follow [the guide](https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Add_DevExtreme_to_an_Angular_CLI_Application/) provided by **DevExtreme** team or apply the following steps. * `npm install devextreme devextreme-angular` or `yarn add devextreme devextreme-angular` -* Import following two styles in `angular.json` +* Import given two following styles in `angular.json` file: ```javascript // ... "styles": [ // ... "src/styles.scss", + "node_modules/devextreme/dist/css/dx.common.css", "node_modules/devextreme/dist/css/dx.light.css" ] @@ -240,7 +244,7 @@ It should display a table on the screen Since, we did not specify any columns, `dx-data-grid` displayed every column avaliable. Let's pick some columns to make it more readable. -Change `dev-extreme.component.html` to the following +Change `dev-extreme.component.html` to the following: ```html @@ -273,7 +277,7 @@ import { CoreModule } from '@abp/ng.core'; export class DevExtremeModule {} ``` -And change the template to the following +And change the template to the following: ```html @@ -302,12 +306,12 @@ And change the template to the following ``` -The headers should change when a new language is selected +The headers should change when a new language is selected; ![A gif showing the headers of the table getting translated into the chosen language](devextreme-final.gif) ## Conclusion -In this article, we have seen how to integrate `DevExtreme` angular components into a project generated by `ABP CLI` +In this article, we have seen how to integrate `DevExtreme` angular components into a project generated by `ABP CLI`. -You can download the code of [the demo here](https://github.com/abpframework/abp-samples/tree/master/DevExtreme-Angular) +You can download source code of [the demo here](https://github.com/abpframework/abp-samples/tree/master/DevExtreme-Angular). From f57520755bc0a970f59472fb20796693c50048ec Mon Sep 17 00:00:00 2001 From: Ahmet Date: Sat, 3 Oct 2020 01:40:33 +0300 Subject: [PATCH 088/114] Added Setting Management Blazor UI Closes: #5541 --- .../Volo.Abp.SettingManagement.sln | 7 +++ .../AbpSettingManagementBlazorModule.cs | 36 +++++++++++ .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 ++++++++++ .../ISettingComponentContributor.cs | 11 ++++ .../Menus/SettingManagementMenuContributor.cs | 60 +++++++++++++++++++ .../Menus/SettingManagementMenus.cs | 7 +++ .../SettingManagement/SettingManagement.razor | 57 ++++++++++++++++++ .../SettingManagement.razor.cs | 45 ++++++++++++++ .../SettingComponentCreationContext.cs | 20 +++++++ .../SettingComponentGroup.cs | 39 ++++++++++++ ...ettingManagementBlazorAutoMapperProfile.cs | 12 ++++ .../SettingManagementComponentOptions.cs | 14 +++++ .../Volo.Abp.SettingManagement.Blazor.csproj | 20 +++++++ .../_Imports.razor | 5 ++ 15 files changed, 366 insertions(+) create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/AbpSettingManagementBlazorModule.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xml create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xsd create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/ISettingComponentContributor.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenus.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementComponentOptions.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Volo.Abp.SettingManagement.Blazor.csproj create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor diff --git a/modules/setting-management/Volo.Abp.SettingManagement.sln b/modules/setting-management/Volo.Abp.SettingManagement.sln index 54a63cb48a..8292218678 100644 --- a/modules/setting-management/Volo.Abp.SettingManagement.sln +++ b/modules/setting-management/Volo.Abp.SettingManagement.sln @@ -25,6 +25,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.SettingManagement. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement.Web", "src\Volo.Abp.SettingManagement.Web\Volo.Abp.SettingManagement.Web.csproj", "{AF6BE46D-AC88-4DEF-BBEC-F60A00847D43}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement.Blazor", "src\Volo.Abp.SettingManagement.Blazor\Volo.Abp.SettingManagement.Blazor.csproj", "{BDF54E3C-C262-406E-8060-84C423335BDD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -67,6 +69,10 @@ Global {AF6BE46D-AC88-4DEF-BBEC-F60A00847D43}.Debug|Any CPU.Build.0 = Debug|Any CPU {AF6BE46D-AC88-4DEF-BBEC-F60A00847D43}.Release|Any CPU.ActiveCfg = Release|Any CPU {AF6BE46D-AC88-4DEF-BBEC-F60A00847D43}.Release|Any CPU.Build.0 = Release|Any CPU + {BDF54E3C-C262-406E-8060-84C423335BDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BDF54E3C-C262-406E-8060-84C423335BDD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDF54E3C-C262-406E-8060-84C423335BDD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BDF54E3C-C262-406E-8060-84C423335BDD}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -81,6 +87,7 @@ Global {AFF6A7B6-A80B-4569-9F6B-CD6C72EAB6D4} = {7E8D2943-ADE7-4C89-8048-0780CE07E0E0} {DF76DE74-1029-4FEA-8ADF-3C5636944757} = {7E8D2943-ADE7-4C89-8048-0780CE07E0E0} {AF6BE46D-AC88-4DEF-BBEC-F60A00847D43} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA} + {BDF54E3C-C262-406E-8060-84C423335BDD} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {24B3A486-E7CA-4AA5-B76F-27D351A97E59} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/AbpSettingManagementBlazorModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/AbpSettingManagementBlazorModule.cs new file mode 100644 index 0000000000..2ff6f9b6cf --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/AbpSettingManagementBlazorModule.cs @@ -0,0 +1,36 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AspNetCore.Components.WebAssembly.Theming.Routing; +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; +using Volo.Abp.SettingManagement.Blazor.Menus; +using Volo.Abp.UI.Navigation; + +namespace Volo.Abp.SettingManagement.Blazor +{ + [DependsOn( + typeof(AbpSettingManagementDomainSharedModule), + typeof(AbpAutoMapperModule) + )] + public class AbpSettingManagementBlazorModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAutoMapperObjectMapper(); + + Configure(options => + { + options.AddProfile(validate: true); + }); + + Configure(options => + { + options.MenuContributors.Add(new SettingManagementMenuContributor()); + }); + + Configure(options => + { + options.AdditionalAssemblies.Add(typeof(AbpSettingManagementBlazorModule).Assembly); + }); + } + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xml b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xsd b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/ISettingComponentContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/ISettingComponentContributor.cs new file mode 100644 index 0000000000..19e8abb562 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/ISettingComponentContributor.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.SettingManagement.Blazor +{ + public interface ISettingComponentContributor + { + Task ConfigureAsync(SettingComponentCreationContext context); + + Task CheckPermissionsAsync(SettingComponentCreationContext context); + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs new file mode 100644 index 0000000000..5b9b7a3c35 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs @@ -0,0 +1,60 @@ +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.UI.Navigation; + +namespace Volo.Abp.SettingManagement.Blazor.Menus +{ + public class SettingManagementMenuContributor : IMenuContributor + { + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.Main) + { + await ConfigureMainMenu(context); + } + } + + private async Task ConfigureMainMenu(MenuConfigurationContext context) + { + var settingManagementPageOptions = context.ServiceProvider.GetRequiredService>().Value; + var settingPageCreationContext = new SettingComponentCreationContext(context.ServiceProvider); + if ( + !settingManagementPageOptions.Contributors.Any() || + !(await CheckAnyOfPagePermissionsGranted(settingManagementPageOptions, settingPageCreationContext)) + ) + { + return; + } + + var l = context.GetLocalizer(); + + context.Menu + .GetAdministration() + .AddItem( + new ApplicationMenuItem( + SettingManagementMenus.GroupName, + l["Settings"], + "/SettingManagement", + icon: "fa fa-cog" + ) + ); + } + + protected virtual async Task CheckAnyOfPagePermissionsGranted( + SettingManagementComponentOptions settingManagementComponentOptions, + SettingComponentCreationContext settingComponentCreationContext) + { + foreach (var contributor in settingManagementComponentOptions.Contributors) + { + if (await contributor.CheckPermissionsAsync(settingComponentCreationContext)) + { + return true; + } + } + return false; + } + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenus.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenus.cs new file mode 100644 index 0000000000..4e109b8d32 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenus.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.SettingManagement.Blazor.Menus +{ + public class SettingManagementMenus + { + public const string GroupName = "SettingManagement"; + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor new file mode 100644 index 0000000000..0586b5c5b6 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor @@ -0,0 +1,57 @@ +@page "/SettingManagement" +@using Microsoft.Extensions.Localization +@using Volo.Abp.SettingManagement.Localization +@inject IStringLocalizer L +@inherits SettingManagementBase + +@* ************************* PAGE HEADER ************************* *@ +
    +
    +

    @L["Settings"]

    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + @foreach (var group in SettingComponentCreationContext.Groups) + { + + @group.DisplayName + + } + + + @foreach (var group in SettingComponentCreationContext.Groups) + { + +

    @group.DisplayName

    + + + @{ + SettingItemRenders.Add(builder => + { + builder.OpenComponent(0, group.ComponentType); + builder.CloseComponent(); + }); + } + + @SettingItemRenders.Last() +
    + } +
    +
    +
    +
    \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs new file mode 100644 index 0000000000..3d41afd05f --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Options; + +namespace Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement +{ + public abstract class SettingManagementBase : OwningComponentBase + { + [Inject] + protected IServiceProvider ServiceProvider { get; set; } + + protected SettingComponentCreationContext SettingComponentCreationContext { get; set; } + + [Inject] + protected IOptions _options { get; set; } + + protected SettingManagementComponentOptions Options => _options.Value; + + protected List SettingItemRenders { get; set; } = new List(); + + protected string SelectedGroup; + + protected override async Task OnInitializedAsync() + { + SettingComponentCreationContext = new SettingComponentCreationContext(ServiceProvider); + + foreach (var contributor in Options.Contributors) + { + await contributor.ConfigureAsync(SettingComponentCreationContext); + } + + SettingItemRenders.Clear(); + + SelectedGroup = GetNormalizedString(SettingComponentCreationContext.Groups.First().Id); + } + + protected string GetNormalizedString(string value) + { + return value.Replace('.', '_'); + } + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs new file mode 100644 index 0000000000..5898ace730 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.SettingManagement.Blazor +{ + public class SettingComponentCreationContext : IServiceProviderAccessor + { + public IServiceProvider ServiceProvider { get; } + + public List Groups { get; } + + public SettingComponentCreationContext(IServiceProvider serviceProvider) + { + ServiceProvider = serviceProvider; + + Groups = new List(); + } + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs new file mode 100644 index 0000000000..22b59d83e1 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs @@ -0,0 +1,39 @@ +using System; +using JetBrains.Annotations; + +namespace Volo.Abp.SettingManagement.Blazor +{ + public class SettingComponentGroup + { + public string Id + { + get => _id; + set => _id = Check.NotNullOrWhiteSpace(value, nameof(Id)); + } + private string _id; + + public string DisplayName + { + get => _displayName; + set => _displayName = Check.NotNullOrWhiteSpace(value, nameof(DisplayName)); + } + private string _displayName; + + public Type ComponentType + { + get => _componentType; + set => _componentType = Check.NotNull(value, nameof(ComponentType)); + } + private Type _componentType; + + public object Parameter { get; set; } + + public SettingComponentGroup([NotNull] string id, [NotNull] string displayName, [NotNull] Type componentType, object parameter = null) + { + Id = id; + DisplayName = displayName; + ComponentType = componentType; + Parameter = parameter; + } + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs new file mode 100644 index 0000000000..94946a9889 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs @@ -0,0 +1,12 @@ +using AutoMapper; + +namespace Volo.Abp.SettingManagement.Blazor +{ + public class SettingManagementBlazorAutoMapperProfile : Profile + { + public SettingManagementBlazorAutoMapperProfile() + { + + } + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementComponentOptions.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementComponentOptions.cs new file mode 100644 index 0000000000..e49fe4aa2d --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementComponentOptions.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace Volo.Abp.SettingManagement.Blazor +{ + public class SettingManagementComponentOptions + { + public List Contributors { get; } + + public SettingManagementComponentOptions() + { + Contributors = new List(); + } + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Volo.Abp.SettingManagement.Blazor.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Volo.Abp.SettingManagement.Blazor.csproj new file mode 100644 index 0000000000..ea32179ddd --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Volo.Abp.SettingManagement.Blazor.csproj @@ -0,0 +1,20 @@ + + + + + + + netstandard2.1 + 3.0 + Volo.Abp.SettingManagement.Blazor + + + + + + + + + + + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor new file mode 100644 index 0000000000..4685ac9893 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor @@ -0,0 +1,5 @@ +@using Microsoft.AspNetCore.Components.Web +@using Volo.Abp.AspNetCore.Components.WebAssembly +@using Volo.Abp.BlazoriseUI +@using Blazorise +@using Blazorise.DataGrid \ No newline at end of file From 3fcdeeeb05810b7a2e162f212ef435b81d412aa5 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Sat, 3 Oct 2020 01:42:01 +0300 Subject: [PATCH 089/114] update setting management blazor routing --- .../Menus/SettingManagementMenuContributor.cs | 2 +- .../Pages/SettingManagement/SettingManagement.razor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs index 5b9b7a3c35..214c0a7485 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs @@ -37,7 +37,7 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus new ApplicationMenuItem( SettingManagementMenus.GroupName, l["Settings"], - "/SettingManagement", + "/setting-management", icon: "fa fa-cog" ) ); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor index 0586b5c5b6..8f5285ff98 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor @@ -1,4 +1,4 @@ -@page "/SettingManagement" +@page "/setting-management" @using Microsoft.Extensions.Localization @using Volo.Abp.SettingManagement.Localization @inject IStringLocalizer L From a46df8a7a4ee429e3264c72efd801c2298bf6287 Mon Sep 17 00:00:00 2001 From: John Barrett <40014477+274188A@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:07:19 +0800 Subject: [PATCH 090/114] Update Part-2.md grammar --- docs/en/Tutorials/Part-2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index ed59070cec..e52fe7a46d 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -643,7 +643,7 @@ Open the `Books.razor` and replace the content as the following: ```` -> If you see some syntax errors, you can ignore them if your application property built and run. Visual Studio still has some bugs with Blazor. +> If you see some syntax errors, you can ignore them if your application properly built and run. Visual Studio still has some bugs with Blazor. * Inherited from the `BlazoriseCrudPageBase` which implements all the CRUD details for us. * `Entities`, `TotalCount`, `PageSize`, `OnDataGridReadAsync` are defined in the base blass. From b734bde85b5e839475f51f76eefbad17bcd1a866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 3 Oct 2020 16:52:32 +0300 Subject: [PATCH 091/114] Typo fix --- docs/en/UI/AspNetCore/Forms-Validation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/AspNetCore/Forms-Validation.md b/docs/en/UI/AspNetCore/Forms-Validation.md index e62a6dc807..48d7937013 100644 --- a/docs/en/UI/AspNetCore/Forms-Validation.md +++ b/docs/en/UI/AspNetCore/Forms-Validation.md @@ -152,7 +152,7 @@ However, if you want to **render the form body yourself** (for example, you may Both of the Dynamic Form and the Form Tag Helpers **automatically validate** the input based on the data annotation attributes and shows validation error messages on the user interface. Error messages are **automatically localized** based on the current culture. -**Example: User leaves empty a requires string property** +**Example: User leaves empty a required string property** ![abp-form-input-validation-error](../../images/abp-form-input-validation-error.png) @@ -203,4 +203,4 @@ In this case, you can add an entry to the localization file using the key `MyNam ## See Also -* [Server Side Validation](../../Validation.md) \ No newline at end of file +* [Server Side Validation](../../Validation.md) From f1e6464b61fbd8716c396aaf5e44d9888db15a1a Mon Sep 17 00:00:00 2001 From: ChangYinShung Date: Sun, 4 Oct 2020 11:29:51 +0800 Subject: [PATCH 092/114] Update AbpUi 's zh-Hant --- .../Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json index 496e6e3e9d..c595a26476 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json @@ -17,6 +17,7 @@ "Error": "錯誤", "AreYouSure": "你確定嗎?", "Cancel": "取消", + "Clear": "清除", "Yes": "是", "No": "否", "Ok": "好", @@ -61,6 +62,9 @@ "500Message": "內部伺服器錯誤", "GoHomePage": "返回首頁", "GoBack": "返回", - "Search": "查詢" + "Search": "查詢", + "ItemWillBeDeletedMessageWithFormat": "{0} will be deleted!", + "ItemWillBeDeletedMessage": "This item will be deleted!", + "ManageYourAccount": "Manage your account" } } From dc58a58d9f99f26f4aa2e6cb2a1e2e0fc7cabe5b Mon Sep 17 00:00:00 2001 From: ChangYinShung Date: Sun, 4 Oct 2020 11:43:21 +0800 Subject: [PATCH 093/114] Update Identity's zh-Hant --- .../Volo/Abp/Identity/Localization/zh-Hant.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json index 54298f530d..98c649cd63 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json @@ -78,6 +78,12 @@ "Permission:ChangePermissions": "更改權限", "Permission:UserManagement": "使用者管理", "Permission:UserLookup": "使用者查詢", + "Feature:IdentityGroup": "身份識別", + "Feature:TwoFactor": "雙因素", + "Feature:TwoFactorDescription": "雙因素", + "Feature:TwoFactor.Optional": "選用", + "Feature:TwoFactor.Disabled": "關閉", + "Feature:TwoFactor.Forced": "強制啟用", "DisplayName:Abp.Identity.Password.RequiredLength": "長度需符合", "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "需最小特殊字元數", "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "需包含非數字字母", @@ -106,5 +112,9 @@ "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "決定使用者是否需電話認證後才能登入.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "決定使用者是否能更新帳號.", "Description:Abp.Identity.User.IsEmailUpdateEnabled": "決定使用者是否能更新信箱." + "DisplayName:Abp.Identity.TwoFactorBehaviour": "雙因素認證行為", + "Description:Abp.Identity.TwoFactorBehaviour": "雙因素認證行為", + "DisplayName:Abp.Identity.UsersCanChange": "允許使用者變更雙因素認證.", + "Description:Abp.Identity.UsersCanChange": "允許使用者變更雙因素認證." } } From ec97e73d3bd5650408d2ed27af26fc039ade8473 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Sun, 4 Oct 2020 16:19:31 +0800 Subject: [PATCH 094/114] Update zh-Hant.json --- .../Volo/Abp/Identity/Localization/zh-Hant.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json index 98c649cd63..dd8c9e0a17 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json @@ -111,7 +111,7 @@ "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "是否啟用電話認證.", "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "決定使用者是否需電話認證後才能登入.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "決定使用者是否能更新帳號.", - "Description:Abp.Identity.User.IsEmailUpdateEnabled": "決定使用者是否能更新信箱." + "Description:Abp.Identity.User.IsEmailUpdateEnabled": "決定使用者是否能更新信箱.", "DisplayName:Abp.Identity.TwoFactorBehaviour": "雙因素認證行為", "Description:Abp.Identity.TwoFactorBehaviour": "雙因素認證行為", "DisplayName:Abp.Identity.UsersCanChange": "允許使用者變更雙因素認證.", From 5151be6bddcd837a6a84113e970c5b7fadbc8086 Mon Sep 17 00:00:00 2001 From: PMExtra Date: Sun, 4 Oct 2020 17:57:24 +0800 Subject: [PATCH 095/114] Improve EFCoreRepositoryExtensions. --- .../EfCoreRepositoryExtensions.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs index a019d29a49..1153f5e873 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs @@ -9,28 +9,27 @@ namespace Volo.Abp.Domain.Repositories public static class EfCoreRepositoryExtensions { - public static DbContext GetDbContext(this IReadOnlyBasicRepository repository) - where TEntity : class, IEntity + public static DbContext GetDbContext(this IReadOnlyBasicRepository repository) + where TEntity : class, IEntity { return repository.ToEfCoreRepository().DbContext; } - public static DbSet GetDbSet(this IReadOnlyBasicRepository repository) - where TEntity : class, IEntity + public static DbSet GetDbSet(this IReadOnlyBasicRepository repository) + where TEntity : class, IEntity { return repository.ToEfCoreRepository().DbSet; } - public static IEfCoreRepository ToEfCoreRepository(this IReadOnlyBasicRepository repository) - where TEntity : class, IEntity + public static IEfCoreRepository ToEfCoreRepository(this IReadOnlyBasicRepository repository) + where TEntity : class, IEntity { - var efCoreRepository = repository as IEfCoreRepository; - if (efCoreRepository == null) + if (repository is IEfCoreRepository efCoreRepository) { - throw new ArgumentException("Given repository does not implement " + typeof(IEfCoreRepository).AssemblyQualifiedName, nameof(repository)); + return efCoreRepository; } - return efCoreRepository; + throw new ArgumentException("Given repository does not implement " + typeof(IEfCoreRepository).AssemblyQualifiedName, nameof(repository)); } } } From 9d9f5691fffbd97d3b54ab5dc3037de93e2bfb02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Oct 2020 21:35:37 +0300 Subject: [PATCH 096/114] Documented Navigation Menu --- docs/en/UI/AspNetCore/Navigation-Menu.md | 143 ++++++++++++++++++ .../images/nav-main-menu-administration.png | Bin 0 -> 25300 bytes docs/en/images/nav-main-menu.png | Bin 0 -> 18329 bytes docs/en/images/user-menu.png | Bin 0 -> 9475 bytes 4 files changed, 143 insertions(+) create mode 100644 docs/en/images/nav-main-menu-administration.png create mode 100644 docs/en/images/nav-main-menu.png create mode 100644 docs/en/images/user-menu.png diff --git a/docs/en/UI/AspNetCore/Navigation-Menu.md b/docs/en/UI/AspNetCore/Navigation-Menu.md index 4e0164ec72..4a8db0a6c5 100644 --- a/docs/en/UI/AspNetCore/Navigation-Menu.md +++ b/docs/en/UI/AspNetCore/Navigation-Menu.md @@ -1,3 +1,146 @@ # Navigation Menu +Every application has a main menu to allow users to navigate to pages/screens of the application. Some applications may contain more than one menu in different sections of the UI. + +ABP Framework is a [modular](../../Module-Development-Basics.md) application development framework. **Every module may need to add items to the menu**. + +So, ABP Framework **provides a menu infrastructure** where; + +* The application or the modules can add items to a menu, without knowing how the menu is rendered. +* The [theme](Theming.md) properly renders the menu. + +## Adding Menu Items + +In order to add menu items (or manipulate the existing items) you need to create a class implementing the `IMenuContributor` interface. + +**Example: Add a *CRM* menu item with *Customers* and *Orders* sub menu items** + +```csharp +using System.Threading.Tasks; +using MyProject.Localization; +using Volo.Abp.UI.Navigation; + +namespace MyProject.Web.Menus +{ + public class MyProjectMenuContributor : IMenuContributor + { + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.Main) + { + await ConfigureMainMenuAsync(context); + } + } + + private async Task ConfigureMainMenuAsync(MenuConfigurationContext context) + { + var l = context.GetLocalizer(); + + context.Menu.AddItem( + new ApplicationMenuItem("MyProject.Crm", l["Menu:CRM"]) + .AddItem(new ApplicationMenuItem( + name: "MyProject.Crm.Customers", + displayName: l["Menu:Customers"], + url: "/crm/customers") + ).AddItem(new ApplicationMenuItem( + name: "MyProject.Crm.Orders", + displayName: l["Menu:Orders"], + url: "/crm/orders") + ) + ); + } + } +} +``` + +* This example adds items only to the main menu (`StandardMenus.Main`: see the *Standard Menus* section below). +* It gets a `IStringLocalizer` from `context` to localize the display names of the menu items. +* Adds the Customers and Orders as children of the CRM menu. + +Once you create a menu contributor, you need to add it to the `AbpNavigationOptions` in the `ConfigureServices` method of your module: + +````csharp +Configure(options => +{ + options.MenuContributors.Add(new MyProjectMenuContributor()); +}); +```` + +When you run the application, you will see the menu items added to the main menu: + +![nav-main-menu](../../images/nav-main-menu.png) + +> The menu is rendered by the current UI theme. So, the look of the main menu can be completely different based on your theme. + +Here, a few notes on the menu contributors; + +* ABP Framework calls the `ConfigureMenuAsync` method **whenever need to render** the menu. +* Every menu item can have **children**. So, you can add menu items with **unlimited depth** (however, your UI theme may not support unlimited depth). +* Only leaf menu items have `url`s normally. When you click to a parent menu, its sub menu is opened or closed, you don't navigate the `url` of a parent menu item. +* If a menu item has no children and has no `url` defined, then it is not rendered on the UI. This simplifies to authorize the menu items: You only authorize the child items (see the next section). If none of the children are authorized, then the parent automatically disappears. + +### Authorization + +As seen above, a menu contributor contributes to the menu dynamically. So, you can perform any custom logic or get menu items from any source. + +One use case is the [authorization](Authorization.md). You typically want to add menu items by checking a permission. + +**Example: Check if the current user has a permission** + +````csharp +if (await context.IsGrantedAsync("MyPermissionName")) +{ + //...add menu items +} +```` + +> You can use `context.AuthorizationService` to directly access to the `IAuthorizationService`. + +### Resolving Dependencies + +`context.ServiceProvider` can be used to resolve any service dependency. + +**Example: Get a service** + +````csharp +var myService = context.ServiceProvider.GetRequiredService(); +//...use the service +```` + +> You don't need to care about releasing/disposing services. ABP Framework handles it. + +### The Administration Menu + +There is a special menu item in the menu menu that is added by the ABP Framework: The *Administration* menu. It is typically used by the pre-built admin [application modules](../../Modules/Index.md): + +![nav-main-menu-administration](../../images/nav-main-menu-administration.png) + +If you want to add menu items under the *Administration* menu item, you can use the `context.Menu.GetAdministration()` extension method: + +````csharp +context.Menu.GetAdministration().AddItem(...) +```` + +## Standard Menus + +A menu is a **named** component. An application may contain more than one menus with different, unique names. There are two pre-defined standard menus: + +* `Main`: The main menu of the application. Contains links to the page of the application. Defined as a constant: `Volo.Abp.UI.Navigation.StandardMenus.Main`. +* `User`: User profile menu. Defined as a constant: `Volo.Abp.UI.Navigation.StandardMenus.User`. + +The `Main` menu already covered above. The `User` menu is available when a user has logged in: + +![user-menu](../../images/user-menu.png) + +You can add items to the `User` menu by checking the `context.Menu.Name` as shown below: + +```csharp +if (context.Menu.Name == StandardMenus.User) +{ + //...add items +} +``` + +## IMenuManager + TODO \ No newline at end of file diff --git a/docs/en/images/nav-main-menu-administration.png b/docs/en/images/nav-main-menu-administration.png new file mode 100644 index 0000000000000000000000000000000000000000..21ad977264aa77f6e0ecb1d622e237091f00f226 GIT binary patch literal 25300 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 z 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 XIOtD~`@2&h!UieGs7jZDP5l24ZGoOr literal 0 HcmV?d00001 diff --git a/docs/en/images/nav-main-menu.png b/docs/en/images/nav-main-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..2784c035c2535de6e3afc6b49b56576df30a4753 GIT binary patch literal 18329 zcmd43WmH^G@HR*i2u^S(xVt+fxJz(%cO3=|WRT$Q65JuUTd?5nu7eKlwv*p~-~IM} z*|WQ6?>Wrv+lT4fU0q%ERQ1#IQ$x4Onw2l{+!D_@C+CV*xyD(CR=KWg^m9aRif^;9 z**ku_3SFBT9ZzfE@;Oa=%FGSNW1@ui00xGwZfa)jzY+|eC@kQ=66yC%w10)o59q7! z{uO*-f&~BFzkmAT4F9ii{tf~1?+zmZ(?jy_-VIOI{NZ2W9_Ih+M)D3Fq3YoL;eM^N$$ksYPp zzvZsE|1cXO1s$qFt_=djq_jm@=vE~$h~@3th&8}{l3JlwNyYY1EykBux99C{Zo}X6 z*G_vi@P+l&%SiXv9sOA?V3y=%H-R-85T&oAmS1;8>T`k-;P#{QC|B-juN@OcU-t4> z-ySkJgsvZiVCk^&TFY>ZBX@fFJr*YI*TNCY^Nn>46(3(LC&3NRAit)WL~ZOOO!-%* znzpJh;uF#Fe|v-Gl=8=o#X~=IbBhsU;wmhvo|YtFj);rTR;coNCv$$+FGTw$dm~OL zD5~>5<7;0a`PXm590fIo_dFCW3`{B}vys|M1pe+R)`UTA+6*y2BVx4JzY;YI(*!cLZCq+)+SzNB=l-m)t2?`xIIF;#c znOGFH^0?A&ZH*4cyoT0piATQ*88v@9NQ(&01FPoLWf`?_Za;4Xl+;+sMR==kxhya< zey&()Y||A?dTQaIlfuS~)7DQVB|V%_sV6&6o?2gPYrH!&mI$}y^_z0tS^?2mRHbF;);x8jXD4~_#~%l&{pFT@>;i7{&kUCv ztq|nLo1Zd>P8+~o-Y{%)eH@bR?um6B57+&dC5!lm;17Fl6c}0P7zg}{+@R0qXSt_uqP-F>!GqPQ=aeq&Ar|>vQv->vP)0EtPwjFH+&%na}(MgRWCOS!j$5 z<7ZU|=dgfvM|-=L&0{z`N;)<+vM<7iF$y$wn#FB@7tH>+rfm52>KmNC2KWM<7p*OH z45={XsVKlhpWxPv#~>XfTw^B!Ue|he>j_%5WX3)n;57`d;;1`ThH>j9O`o!r*koL6 zaJY6GnFu(VfQFx4weT|Ip7JZYfN~}qe$g%}EFVerp;P6Vkk-$&!uFE2*>zWHWfv~R z(9q!Fy-V2u0inDaUDmuri?SAlbee?y>Bd4E0SX}nngqq?I5GrEO2Tr7$7&g6J!f!5 zC}1AsG-?!^a=E1P5)0s`RNZjivGp(58ZnvrVAf;c^7QGmb{5X{1yR6r+4gKY;sfL7 z_Pc?t%TI=0;Pbu(-lc02T&u6m0@)Zh7<)HFXI*}hi&k%UfZEHDhO6nU4=XvZy@5PeQ^Ru$tfQKY1wq}%-g>WB>$K&aSK2OOGQT7D-5}mK zPDEiV*RRN|rw45nk3Qc^Y2p~4cRAAY!ny@dG|T<$zl7%m`~sO)@-%%b{6)X*sy(Jz zEK_!_HB2w(+;&1!_hN1YPaQ|Ejzl1dF@DOG#=M$z0E=N=lLbaFK_JJ}_#4h$&g`i~ zg8wTv+$&U7nFjZd%Dao7U+XOZepa?NUan$ZGd4Y0@r)X-X{j_pD>lUg2H-0-_;9%S zeP_m(L@sK+Q_YAm>iFTo=vfN$h?_9dV+Y-_J9cGEa?&DPDuHYvPL zkN>AWOOXRjLX^iyqQ6{eB6RR=V>Ag7Sopz4zrRuE*`#r>QEBhjr;ZVm>{dIcD`++q zzeUFnC&{%W7KL?Rd1fr}Xm+vQeo~pr?B6zje!;%JrxZX=FWTST2L*>@*60_L3OhT; zU!AweCI%8|vbx+YJm1Zn`VG{aoVxNGRB=YYd1cqd+}_zpyCv+&i3#;&0qQ=ieb9lU zj+55)i8PxU6y>U-Vl1i*AY*+Um5QcC2+}8i+s`7xLFzvg+&(5G)LUL=z14=P!qzQ9 z_$J5vkuzU?xS!(dW~F8R58(%ZET_MmXqtosY>y-73}#`NYYd_CSr)eJ`LwX1RucpQ8r{N1=j(*SaP9ijGq5 zw;^g%IrJ0Fy15}tG3%ccGSm$RsAykf8J^WS;+CxA?n?_ObT`*<>xK?Rq-zSul4NjM zb;*QZyh&IQgoQhPq_`Jot=7W<0_&V!cFT$UU!#bs7*}<==6rxMX*Kp1O4c{DPTVtv zv?)uiAJ+~ym|9yJthMIw){QDx_nIaq(B1~y67XDxCF5n%QtQ&Z`FP0{wAEc-GqsON zHbz=%R7PDiElR@3UolEQ319Rr2U+(T8=ak($Y5yKGFkb{_LO%8+-32}ME-t2`*Mzy?heoT{4_fZ^g+6j}jV+<>!QVEaX26L(1otu1F^8cf zUVtbZrL_$Dw?amk&x-oO6EnAE;5cs+aZ6_d8I)OnciXityZ-?t)XJoz6WNg*63wH@ zhoWBX#D6&8>D3l2i7lChD|CDR(kHR0(`M60Lt}mdQg3$GKrti6-!sb#>ZceG5l}Jo zpkNUc6p`qk6Sg}>8xtlw+DkWN z?J3lu{m(?eT)KzDV3S6JEq2*?{DYgBxP}B7whJ%m;sP~lhreN`0u$yo^1SqwLxZ&4 zBQv9Bbv^2}tT^Q?W|iYvC$3?QtG~;4F$R^OFa+VsK{QRzp&8fteX0mVSp_4)j8RWw z5%)2ctlQCKhJr zU$m$mA4!@Rl`R2Z(T@lTH~jB92!AVQ_WB-1s8AG98x|m<^VSwX zv8fszH~G5lB+L*nTzS<(WmvKx{Q8RbW_^l^bfvDIK)v0<>(|OfQQz0+?R#S!MXYcN z4{6a-Yl0_J;y4}kRLsi6a0wIw`|2e?#n68G^EDHKn6lGGpm-=AYwFo)6fSITQ*{9J z8EsI~h&>iAge6rAljK0z`l|$ngVD?@WrI}Pm#OW<)j!YI62Ty6P%4-1wlvnnNcj)E zN<)St2p|L${3tI8vi4rK6Nn5hY_San<=V`g|1@Ze!Pi#8%<41&+Aisl^435WD}wfx zOgtLI+3Ba`=zCSf054PG4F+hAmnY*_Vp@PtekJx(LBQ#Rjc>4D4-O$~0SCW(fu$eN zt4eGttZ;PE9IH<@RBG=BT1e0Mr_E?V=r-M_yhg>Qp}bB@4sBCJtFm_eV8z~Y*JKv7 zM{wg-O=sSsUNS9FD_RP7z0&0}#oiyB4F;qnPsqActv131v;~S0UCg&FqqnmT*5er@ zic{Z7z$=*c__7z!ewDG&*|>1BkJ#V0SM{=U^~o3fN;=mhqA?d>8K`)fr}w$tYVJID zEJo<*@>c?S9MfAP{M+Sbx|8GT)Ah#PCD&CJsi>!#>~-#^*T+>+(J6jJaw-~OBXgp~ z_G7Dyet9E*h>g#aps1HS7`r_U2JffopZIS`KPU&8k*?7gauahIHJNdvJWpR;0bT25 zC_l5hn(NJb^m`lE1mMX*e-mHb0sZi2r-`9OEJm93<~phS5~qWtT$mcGwH8;%m+^vt z`N{Cu;D~)VfyYLFZ-ujh`2A5MAwbW0_m`Ce3lx0Jp}KIqWJ?KltidjXc9W7TW5uVw zRhASuTIo_BhEIYzcVDDgGc+?34~*taFcD0iDN|Tjsh8)gJvE|IgG&-K3$I+Q!KD-A z!E$3ce6O#8B*W*|N%F`kOvt2%6%WQ*b#!blOSRK^&jrz04OWm?(>yH7n9qw%l^gi+ zv8|@67ptp@4${hkYK6Od)E}pe93I^N?tTjm86nn;0`59gn)KetgR+0<4SOS!4{th) zO<~lK58j>GoXohkqi4t29oh&?PTSO9AqFFBS>jytpfzfe0?U=2ZrboXHT=Ds$E6U+ z$z_Y9h4~<@h5c2z^VPR=(W#j|Q?kf%5y?!W8_y3W6F5e1vGsB3m!AMPGGds?ER0!N z@kY}aR65L6{u8I?$^7uRi64gSKE?j&glO$6+W zNBPT9lNXe=-e%p2e6bBJ4?~NYV7VrJD*Oy_I#}@fET8{PBlOPkc&;rTSw3Zd*Yf7> z^D$3pK4&rxjh!w-qefE(P*&4qY89b$hggFgJ1bKo5xtvqv87PnOf6J$WR3RiJDsFD zouAhexEEKX+}+>CR!LXd>1MJ8$-cF<6_{;Q>zu34LJ4yBsXgg0_7n?K$VHF*Avkh} zdc>@nM$H&8!}$X~`r1Ye3!J!1gUY2rQtDtv08}z`@h`An{hYelH(6^S*kng?QQ9vr zSF0(dXFH5Gdvhp`g|xt=q^#`7;*_oOTbiEY$55by9v2S-;5DelEj;8gglL>!QBm3o zj};*TZ!~4702Di3g$4hK)MY$!R;lP=y!517+K3n<2-8tF^-KpHH^uKIs6P5fM$Ap7 zrldK9l+U?9l`yVNU;(SA^n6c#=KW!~c-yklYx+Own5l(B1#Xos@U^*L$oqZs<2{0 zHf>V>0hO2KuI{GucA^W_+i>QzJC+nd(Nv;q5Ab=U53+UtRbp z!768J{4uWpsZjS+6q572d-y$ERsp4mS^AUa?Qtaty}Yq$-;47Uj}QyvNT=6ko_o%N zkKYvk=x8CGU|ip=e(DIbqP3@IOEp*^RV7h?gL*Wkx~yVSTc7y&#HMPtjY`#pJ;i?- zW5`V|WmGZdy2x|f=JfcKh?wx`6jH|LdOosd;l0w=W1y~W`whknax{4X(vJEd?5!o| z8=shqkV~;`_JQ8*p(ouWK^}eawejfaUGM$u5u0r~QL8>N0m%XWq#k`r&7)V{8gpvH zOE0BVumC9bCq~?Y=PcLlAzzR1^n#D+B7`*0TwzUSXi3jZ0UoYGPs8nXahi6C@?fQ6~n&$7k} z`qzuW#u<>lxK_tvveX7z??>s~*R4z0=mRdxI^ff|ux_PN@yyw3$6fqL4?Vj$*0|re zu70Ty8HErBBd?mt*~;^U)flDK$%w!Cor|owt)?p~?D@4lJ1;X`F4W|2COwCz=lqQ0F;`Pp;4* zW%PLV8w}*M+Snay1CX@b4Fqk&MTk_b+UMgif|&~{{o3xhfo-39HLCoQgV%R4)G{wH7enL)xiLGG8HxQdEjU zh$~4wd)wY?8(@x#$IyxuE262PrYEO3ig~m~4tn{Rrc7IdACWb&x z(IC`)%67D<79ir?Ha;5nWoofde7s*EGh39nsdvv)usOG;RTl5ql`WD~QdJ>Lj3It^ zOfQWdT?|2T#ujle`L85M|Ic+hE&X>C>`fq5h z7q~@c)zb;E33z-pOjl57StFK~r57u43qZ}I(}~R)nLhgs6!m}&?Tpz==;ufRx7>XX zBjZ~o#)$ZUz<+kmm_OC*0Co(|V@j4MeVnj6VWH5X9+JJ$>6JEGxeag-z`&35Uhp$A z>hiWY%g8|yR2J;H^_=xg+hv(a8rc`%rfB~~ zb*kNhfZ(xlzUVf4tL9J**mPsAxi!Ybs8WCZoKgw}ZpUXEm;G93p*ya%6%0&ORIH3D z^!t3{%wgszr~FBhk3$L{q;`fFe0w0COD!&6lK?gY)437gip&hc2A=^%#P{G`V4=3q zkis`1yNl1IL#M5ql&6qGc6?ONw%)_cWkDzX3L7*?^y_|>1*&8dPL*EjwPE>Dh~!cc z)}G#o53T=uJH0#7!-x6ymSB^wD^j4vJ>>YO=m3?4fU>gqCcD?0<*p1L6d~|5>W%x2 z4J}H&b83c?fdvlxJFc;|daDq7K|2ee+-Hu9EDTPr{+3hke4FPtlbehD{T`mWAAQ4x z*yKt+6DOG$q*c_8cYVu{zq8kj!QgS5P2ki;8lRlNU5; ziidrfxxW8H6p}lB!%vs#Qjp^H(p^Nf*foRx`Ey!&oKC&7&X=1&@tXuxAIvak*NRGs zqHH5w1sg&%UU#BVTpyKTVLPOWHp=y}8P||Jde=)2>w%a&uV^=)@wfLaeP7{IHuz6Z z?5DI-_AJK))w>p4qqj`o^9n3J&sCK@InwKDYQGpR*-%RJ+r4e=IBe*sas>o3^2RSW zG%WAZfEk=}zJnifP4w}C2`s0(#XQ{K zYKl5XY*NS&q;@RETc}vl^$3|zl2f=3qb%!~u9J`PeEh#)h|OU8U1loD(n+~KzRUI> zEa8Mem-%cd=b8l;tcm3~3-_rTk06?V>%;g>f79ykvL+5TPWAem!s_}2zu$G5YY+oz ztyPVBHlBJWTOCdGhly7QLU8FD+4^Zob@lD&jz9V8D%k|*a3UudMQ!Ad1;zTJzy)&h z4-YpMzqgHmTdx~)%2I45X@t1p9fX!XU>J<$$3`PjG3=JKxUYi(p~B$N^S@MZHJ?(Y zS)VoZKL}Xq{vIhjK4@wGIfQTH-P8V{!%pF3Yvphg3Lp{9?TT%Cl`Nw9t1Yf2?)NqX zQ4fcpDa-$i_^H)&9g})ZA!%wFR@=EDfj}PLUC)Li$+FGHnzmwbe0F+pMyk{4>7noY zyxZePjDdAhZJhp?@x<*Z#y&+J2<}=PaSQ2r=c1tR?)58oWoC>#TqYc+4tFOkE>^Zk zs4bmoACiSr2^cd1`c>~o^xj0f8J5|Xil}I0YP4G3?R09zDTkNDt!){q-jNec_JRpz6cGv;zGus)cK@>rxuvN3V|k4VtnHR18Fj57BQh)6yY z5(6q;vJ^>vPW2UvnT!Umixk1`4l9LJp-YR^bmF<@UDd!9TMk$SE@-2?>U(sMV zadC*_QpY2y(WANVZk0zr(_U1KH?~Ih^~)!-I@zDPPKQUb{&TwY2;5n6^6d8@eJFF;oo^YzQV2bl93TU zG+H3MReNM?e(mw|xy9Wtf|u-rcZK98GjvcfFsEKA7+TEQNK_2@6yW~wH(xboikM>K zGo=KfH_2B|IeXHQgWOuUC@G87xcA!o3rLE_+Q0BM>2Y$H*3^JvRex}Ei7+sSVQO3H zDFVe;*vLW7MMuL7@kyDf>0(XGD1>dE=6$v#E0o7~RhF(X%|e1^sC! z#N;3_sx+F`eqlci4XrBf&abg5g3s)&+F}Nu3l07k7a*)VJ?3Psa!f%!GE5G&P+#eI z>H|*JOE&Lh;estyak`wnW$z|>0QU$#aQuF1rJ83C2XC)PipD|`>rd@?)$M$siC9=A zSR%!5cb2H?uw==Fj9gSmL`?sXnB?%FU~vC4I&lO1rv(Y!k@6?uw<)w8Ydx!`xU8)v zw@|zE&EF`fHWKeHN@)eJwO2OJ|Nfq_Bp{yFR?cG3IfXu$Q-T(`I(%-4hm@4VqLtBC z$3reJo1dv|o4|T}cNe|zODET{srSb7h6Z{hS+NIff{5h#y{A5Ch)Xs#?1=Q4 zGnzgp+F$g;(`zxr5RRu~tixV*AHv;;xClf0JzYW3zZN3HqHwd(drUqPPA|d+qMPy( z!H1T(^b>eOUo_=97ws;m(vO^MuxB6zPJDjo2b*UFbZ&*}3CUa6JpSx@@lgap0!V$g zzknBm$4^4DU+$PCtA*aq13K+59rb?SzTyRV7YEHf-xhDY6+F)FB}4_hZEkt3h{uTd zCx0V&b9%dPf$ze7npV7PFBEP_QXsfGJ$pO1vqQoGaqFBWY8NF=RazLmJXBXNct7UH z?{{1b8o}BPJ3T{K5y>Sgw0&0qq))duxpHws*4wahMe5G`>!SW=7nOt`$R%*GUEV0) z+H$!Jq*@edh$xdryk_dUye*}Hj3(-Uw-da(>T!UMB1_7lQH;=o|Dc5dJ4`bVU3Hs{ zLvvr1OPJ~GcB{Bg`M}ZgJD4h)NCxkh<^HPd+UjV96I+mu9ijJXlz4|z$F1^!v+V#& zHuu}zT|iY#?fi8%gEFzm@6)~9vf=%i0hESoo`Vw>y?~p}qnYq*TT$<09PSlP_r|9X zK1MYE$9O3X8({~?`_P8722qg?z(i2qECRbYGI9B#&AQRLxv1VAlbzuCx{+?onSpw2 z5jv;Drh}#U*i~M!F*q$6xwREC}c4 zYs>b^PGWTuJJ{5RAq-BP3~e9250Te?fI(M0OEI#B?i0+!ZF%zBqv4H5Ef8)XKwNko zS5wh3vsKmc#~p!(T{j(SK5lKGjLz2vZ5&2aof_Mkmi&{14_aWKe?+2go%7674oBd} zx*txkci$6(1RZlGmTofMUIw)qHI;7);9pe;FK|g2yF?BZ6 z_ldY6riF6MDF{MV>=~I@j$z*YKX?6YgA*x&Moc(Yh?`}gBpMi)nQ>n4Rh@Dj!G<~Z zVwV+W0l}(&WEq%l6ftGMf2<#v&FB9;Rj8Al4+qL2B7x+?sfFj296G-5P85goh`!TP zAq0h)>`ySt%E_rS?9Qwar)DwX+UZFTPMIYU50dxvGKKtOBB@EDgTl_wi*xR6OkRoO zWIz&dY7*$M$rdph>cUsY;G0L)=b|3_eu;h>1ppBYj4>`I>{o^)k^A1WO8w466MS>} zQ~_*Bb`&f;B1%&UoFt6{KfY~t zgnlPTL>cBgBf>vwR27>#eYe8*4e?aJ|Gk9%7n$nI^$m0aAv{pgR#0SOli={LIRx5` zA02CA0G-((iI48>0A&M21bk6W4hmoLA${q$8q`k;#RyjpGS#`rS-Mb zD!^6m`!z*t8q?#tV+Mub$Gw{cs_;CPV_tOQeX)OnWIX$3mcX{^dY)!wM2)^fugrxLo_HTbt?N`V`88;>au=TFLvh~yyQ=l$ySx+<@Snwvz$ zCx~5uzmFZaB=KLrg^_jiGqmnk@p|k8`9n-@_F{#Osh~LdseuwzucEjECM*bb>F9Ny! zgVo#pONO8VTDBIfA2^Vm;`;xl*V?qQG9U}v%UV!4Y+w>Oo z+0(<2>Q6vA? zE#t%Jg>3($!B16PcQuL`pBqrsMbEp>I{8|kA=DSAJ{vwZ3x7G^d}*0wib_`=|B@QY zDFxJU$tfX}E^0jG55B&-%Z24T42~G_yj~YJMda_H<;$L@D9;hW!YuG8%)&wEB)HeX zB&jwc>=YE%=Q_-#vM@iP8W~_*A|{3})u+NG$!QuFmRoWpEO@`D(ZoD~{S!Y?*l>2uUkkBCmbB1<@qj!!9|zpTa}`F^^Bj>5Yy2d7XsxX^`f4#Wp69 z^z?Tawt%?&Q>@j>_vZ(Bjz82CA@MT!p@lVtYXcZvn`BA&S*9>-)XuK&pi-si7S$Hu zGj_&$04dXkD;V-*bKMO{JCQ!DRA+lbbzkyT4;K8K2O*@?z;Jrv0pfhe;x7e|I%Mm@9fo!;umgl0Jdc21!W5b*>`+p z5x0y6B?{0c=lDZ6^TO3M{CJAoThkYJ0D&IS+fE3Ryed+}6`h;bEG6 z4=|x*(=-aYhU;+)n>SwwFTC#KDl}1!;ni5(wz0LJ^cCaX57ek$=r)W;iJz5Un-x~^ z*dJGkeNva5N?yr`3c?>z=oC1zaCQBP2;>FMufA$)`!A@yP}$t?hrfJqw6Kxd4Q`Oh zZ2Gm^4K~VV6M!PFO(|}1wAaxjeb2U;v54J3>T;(HQgLstb7#Nzs&ro)3Dm`7? zQPC4=17d*h1vsYs<@q_$wRr9bE&b}5wF@sjw#&2TF-6p$jh0(VLair`{0H=vy0=c= zhjjxbf5|$El+zl1(b0#YbI?{_XNk67l(f7KL;)&C^?dF;6rG+Q1Dg7%;gKkXKW^>& zkdC6XPR4Zg6LtC&90d=OKD&6kM)s5-qcHkz(rzTnD(OkD)SdyVopR??UBS*VzFP?` zs#>=W?_kb<5i2dYH$k1WB@Q$toec(N=g}2zZx?H0GzV4{g(PEH7XMNS-QNXE!VlAn zX_r?$|7EYt8fRkC%n(%mjX}-N9z7M9e)RbD2PK<8A)lz?UYc(ffQN+DiNtevTrUy3 zj7(@{V_ti1npsBOEj)Z%Y>?)MlW6A})HvXgiXpfVz(>zFSWXz=(out)Ns^?Q-W>vE z$wBDzJi1y2K-0x-JVJw5URrf(au65sYo@GjJjRwXg3C%|1Gk27FHLEHjO^j6@t!1V zbuiwkBFR_Em({c)ZMx!q>O-3 zR0tIpn@9UqGbdLRaCM8ptwq}qoh?RCfh0T+KLnS3bZ+B@3l=bc>d9vy6!RAihD{Lo zqfMI&mDJuj%B{vR8cYx(?Ho!^ofKAxd7<%2(zaa4Av8hR@DCz=S9WXFrX4Zd%Q8IO zgqZ3Sc>e44xktsw7_t`kJhXDW^`X37`d{sL#%Mg)=$)$l&&9dw`wV9o|0<0c^!LOt z72py7J^cTTnQffB$v5z}mPG%~hf7C1YOwl@KhHM_pYB1skm-XS* z8aVaiiTdAPZ8!!nE3(fi!os9}JaBuk*hEKEvl z3qYP(NQUutdB7`RjXQUcH;RFO+z?5i0|(p z^BxP#&qr%_f3$q>=C^+pU6SNDiaKIYMQCo+c&ajpV81h_>E(wW2CxjrifZtbJq)Ud zok{+72}Djl@oxLJv;K?c)5%)X+WcHmSo9c5B64!zhRBN-au#sqsQ>nLKcKx;Sy^c1 za!|y3FGlcbp|Z`;;?VE7Ww7-P%zMY8=yBAF26@aY_9LTU;aD|teV$1%T;y-lY2BEbj28vyB;Hl%$zT(1(2&Q9>H4w zx8lKkY%Ywd38Z||7XuP<(A<1SYvoR;vTzrbs$y8|=9%|x@7jiTx*P%lzG>I(xo}fT z-#1YE#dznUWQ_05ei9e?dsY>#C+BxCENK7W@+h`x9H>@6C-ATGrzxgm3R5Vr5lR6w z_mwimm&6d0adWF|bv7#qf>ws3MMqxIdVpf%q94Z_(>GqOrCB*a=-c&#+Eee5$w9H- z56(wH&J!ak742qE8%6=c(}3gF!j{sD>2i-$7?_lg|FE}Z`29Uf*A}a;l)hUp^$xC^ zViZo^sz)y7A56>x*1Lr0mst~Dc`@qsSk}zUKWnG1a3Blcr_j65k%43x^DPE31rQw$ zX0WgQRmI-Mvw=IL>QwLbEKV7BFqm9Yn%ifq}0$cvMQ$xk^9t zW{}UkH^Bh`NAn#yT`N}Z%KC6H#`|Al{u5m!!|haYz~gSd=-cBbLMJ^D>B54Kg2$q( zzQ!+~a&!_%glf@2eWn4q1bP@01klX``nfzn*Vf*8uuzD z?I*8tQHJU^qqMPH^Yn7pFnmrIU~@X&JB4@^lyt8E`<);Pcyw4?z5klYa%&5LBHE&0 zD9@3MjjK}qFRQIM@XKucu_mnRODNjsD!bF|=lD19mh}9@L?Q<^IjAYB(RxvmT9ScY z5h3nAbc|Vs#GY;iP$8Sd_trQUj3%tr>fPBTlc}#lSdG8da{R?lFNLAXdM?N}Nuf`d zYwhE=Z{Nx=vBc;MoMvtfp2`UYKGbQw9;^_Fy|5g-R5 zB^X+~Hy%`XpacAW*QkDHjQKC}h3U5c@n1+A42H`F7q{U!qiz8W(P6{$&gU>JssFQ9 z48#+4j(6@&@2kjJlK0?DTJ_$sY5Y&PcIEE*4ZHuUy~lcs&#_exb^*32gEN(BJwoWf zJ#HC`Wm+U$~3t7I>!i{~MVxQk1f)j5?b~?DCfGf2WVskbfei?UX z|9kHJ|JlPz|D7{}$sE{oZD?pf4B7+|5)l<^J}EmTK%FzqzjvkTa1ow<^1r7{8QB9q zW`MKxI(?Vw8xf$E2o@@!)CMlXF+9B{0b;a?nbd>SxpFO8s(3g1Z(2r1nwkSw?cl@d zLU~S3j`13QMF$5Uu*J$RPR70W@dg6}L#yNgDu!Yx{Q0gEf$_8R(RSr07Ojx-&dv@p z(q(>r{zPLZ8A1k>-&bo90YDt7J+!gm@|)lKlH=D1Jf5%29(1Xx;jQS}8s>sdyYYJz zCAjZ8@~3AxNlANtWiyA~-aZpGo&B~p*7o>a1*N4+whh@1e#J9O^Yi8Xj>=)XE6 zZ=pG-Ol0Upj_RWH?(Xl0_nS_rmCr4&uKGsb__X@K!+#uPJv=^!QfvfP9tkTO0js=$ z?d|;Fs$M9zY9@x}IoL8RETGbW_4c(;^T>pYaAiesywP7? zK4RwZTBy*b_4lt$Vo7f3&{Gg|*rDH+l#=Qn81T+%Y-l*Xd6Zo+*J;el3)*SEK+aOK za&U+OSPoq9MVD8Vede_>v-cHyPO{^Jrc=`XIY1sY1{|Q9Ylm`_l-a^iO_>!wH@>dk zAkw^=nwn%@P0iET7&A|s-}a+tTYg8!+Er>^$;pX*nz|>P9@IcMe;j4_08>ZM%f{c* zVp_APMsC)$l0lfUpOmbmUk44hi)Vm5^mKno=Z+f$NXQGix&oY?*{Jy+B5ypr4U{*u z1KT7h=oy%P(H+^3{a!iMET7wRMGPW~lSz~-)MpVLe8d~sb6v9M3GMB1A(m7%t&u2I z&jjEJO|01SWQ^?t-S9)=hRmT+o*=_!9zu|D(+V>#@<=U8@BPCAebVqxROc3b%eo~s zQ>r+b=a&~&Ut^e&THJ{KEoW$wh%Hh-_gsyEAfyE}{~qR^;-5b5#baVoQcwux%kW3r zS=;XdUn5Q3n^p`A4EEBZ4RTd>!FvmHb3Q?By<65cHnK``0+c^IJv(~ALePm=L5$`HK5s`Qt=S&?Lf`^BPAmG%|!R8QhNI*hD4WdgL{`>cD z{p@Ui1Rk?~^SM1xw|wpuT-hWX10Bjk5$eUo1y6><(=ACG;LOp{fjdLNwM9r+*l(@1 zpCWnywyf@JDBw(zsEo~`zN;A?7oUaZLy1aNb6 z-`;&{)@KP8!yqCOq~!&?JbD}+9%`NIp~G}X216}(oxZWLvA1qI;4vjS8ZBaOyZVx} zE4tsbw6yX@2n`8IPVwL6;OK}8+jHs(6<=k`>*IxR8}UR_V;8Vc*QX3$r-;}_p)2Tss<-hChWGy2j!|mII{Xrhu+~`wN!(C3|LO=E}-S zpIgY1*VBL?S}9m z4#fqLadC6UC=Y~18Lb%S65dOxW8G|XIUU}dIj@Nh;A%SI!mpz!)9CQXp$8h>Z5~p24h5Tu4nWb zeI0o+CK`>}*8HJbOPk|+bbo<#rf5DfV9eHeza8;(dn#-u_E{`!=J46{cpkvp0d{R! z2ZFntI&N<7XCZ|%hlT+!8#p*g3B*BUnS3tW;I8|<`AQ>iHNjrCZ>6&{{VWJUn&nS- zL{868MIGlcg6dAizwANko^|?oRstjD&s9g>3-u8$E(=TZ=rgdRjSUYz3KaF`xw^R( zezVckOx9=N%@_m4LLiX1xHu39_UuuhqqDkt;!2w)VQ<$wN3~4VbN8>&>m#o+B9f#k z^q-(MUQtO7%2IEr^f;bp<));3Pu}6@SKWE5tFLeG<#iuSiZN1~<9j(oH}F7TUt}Z-DZQvI8@|v6 z(yHU#JZqDbq-1BCO~T9}3No@@y>)KRbT!m%wH6KdxG`oa-EB#e;^N@37aRHF6HK+= zKW!{5Eck33B{6D2bMu;XyM$4mE4QbpsHnt){KV0KjkUyt1i=79dRt3qz8|`s@O_Du zMnHg^yoVDpk_=&PZjRTXc}mac)V0O7%ue_#CmS1^AY%qPCdTLN%uIa)14RTEK4QhO zF{lAqS6N({IVKpALqJ4BQ&JFOUOu{cOfmEZGBsd*(^tRVO;Gl-v(c>3?lgV4G!nTA z$jZtB#SRP%R5v=bJyo@_JUf?_mm57T9Iwx^;6`-aHbeo|fmYTsVE~f0wN9%E!?s=s zvvZT+32WDLIB&xYSBK-;^4YqNlZ1JJ)lb@ruKOp^L=u)AuW0n?m6fOcjJJoSiO-@t z-a&YSR}CH>h=>=;A`j+{O3_v(%E}W^(Hlrg27^nX=g?k*@es(Nw$b~3E0mIwQs_y* z^JK9)`=voD|3av;q+~YInu0>fFVIBCbEZgfFhFHxndPc~gs~JYRZmah9VEJkvY?rg)#j!Jvc~o9pj#mX zI5@HhaWYi=OT~{OZZo?wCHosr-5S6iA$(GT&*|x zVZ|CmM!XpC8)Ck|O};y?=kzip{t2iiNDj&?2@4A=&h~a)e+I4x?@5mk5oL@|eQwcz zJ@5S#Qymf$5%C1IXvHdY1J%iyiP!mW4{@{&KDQd`>h8zPygpjLm+Z5hI1HgSThJ47 zEtD)nwb60b*&l%$b*2J^aT_h*?8Q|4iJ5_-qU7XxH!d8Q?gjGZ58Wrys_I|A1~x_b zSzB8h8&5vXR8_IO94tPw5fBjg`}=1Pwm^}_VO?eAm@mh%VAgo@yxKcozJnI(;$w&!6{B>1W5#>#VEW%*MvS!P@@3bG+=ET|@&63_Rz* z-v!Vp=gG9trj=A(kM~ZtxH}Qn2>JZ^^XrY^nF>P^Ruhs+xl`ATW`no=dDWD)fT5~O zG{bXH(DQ0$CMS}5d^~1?a?Y2l5Tbb>tVZ}=wyXUK(hb)rDNcXs(2?Qx6mAX-VzO*0!Se6&8l=>DR!&v6+~dl+u^#M$KQELd=yu6Q}gu1B`<(BM3iM_YHDg` zHh5OjRlT7%xV_&@A_zz#6&9!wCLTPz@jf$)l43;o1BBPCb-W{(QK6xtGW@%BeB-Um z%}*}Dgp0R}muZG3mn4^zoUN&)1qKSRu^HFt7A7bjE6upOD_r-bn3dYe|mf2;X?(KXu1-2cVlCX&uG4tQn89UO{{lhUoTBg{@xlO zqQ;apGs|!47N(_L*)ZbvmtOZ(K&a8JBn^1J0Itv=1TERO#%@B~`3AcD6%G z81skvYN5Hn?>fkZ95Bw6e}~33O9#Ym!=#|*n+_p}H+Y6CD<>yl;8cv0Q)%qm^!&0V z7a=g)$=Z6CZ@ljJ@86Sp(*Dzhv)V?+7CaMItIgkHzr)5YqMGOn zJ*qHqg$1_Gu}#q~VL?b~r-$ht4TU=BX3f6-e&}wmHxlQlrJJ4IaVCF@hK5FVl{FNk zL$Q<;T6B1LWEjGo!bR2Gp|_6@R5F7@(3A3s!xa^yZtez**x|v*c$p3?lC0r*P!!B! z^4>LL%|GyGz_a|7&{>Bm8~s;w;+@t-Ns71=-%#iNtP4YI92`aB9YIxXZG7ln=l}RJ zJ4s{XFPfT~dOlDa2YwhRl1c!2_`NI&QN4TjZit@#t*fK$P?i#5=l=*Y1I_#Z4hXE- zQpG|Si%N^>s!d@5C8?LTi8ZN-_E0~9U!`jAw6>n>%~Y|q9xIv{Oe|I@O5h+VnD8PR z8#e_N$L(QZ+^{RvRER0h?=%F4?B1T8eda$!Q|jvKIyxSNLSdOq#;Ri z&D3qGXbLHaY9UE-XlTeRIJxN`DV0jKU?*rQnL0i`7A^TpxS`SDj&p?2ZXvBj5<+Nq z_v{Dt_4T!)?Wg5d)Lrwer)O~RWreQ+006EVXq5o~R11|#Wp~(dIk>eI+1%W~f$J8_ zL#^oS9<^HC)!E695ki3D@)fglKz=`5`! z5{aZzI~SQ~peUU#-@c#A<<{2L`MZ$BvTQgU!XH~(&62^9Wu?_>4b<5~(a&f!cTTbm z002}EDBJ-6RiurkZxyy({@UMPS^37N2dY#m8)K8~7jJKG!&740+v|QmU-A+J;c(c+ z{Vh#RMuQ=L{AVVUSy)^wQ6gVfO-+r(V!=!7$z*bV{wsgVX=x1&4fhN06F83Zdc8Q^ zQfxCAjK%WLGfJhBv05c_;>(I8N#P3+pU;;}r7C<4003~^K;aGms3H_a-MyPnDF2H@8r9^5kfPcJ}-NhCI5lrI2_DEsEMaf9t$h}4-*py2M6L=dwYA6lau(X zmX;Q$(|PgByDAEWqPzPM-X0K*MrYhJC0g@OPEKG+9suy)gTfsEP(?_RwAu1ibvB#D z2cR}KHWtOPV+27k48yOiXR_H;VcnOeX}x4Nd2Q{Bfqq;fvn)F@`r6}J5XTfEgqD_; z#>U=B7SQK0nM{3s&+$rsI-PzsJTmQe7ZtTE%TBx9v$L~&O)po-dwY9@rxP(aCSLqn&!s{p^sBj@5je+Mn1-ITr3uI kxm>|uu;SMU000&B2ZM~WeM>dokN^Mx07*qoM6N<$f)HeMAOHXW literal 0 HcmV?d00001 diff --git a/docs/en/images/user-menu.png b/docs/en/images/user-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..af0671dbdc4119f5ce1eeb6f7429ef0b4e09f01c GIT binary patch literal 9475 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 WZ~08i{h_M~P?mouS1oH9{yzXuIeS Date: Sun, 4 Oct 2020 21:56:04 +0300 Subject: [PATCH 097/114] Added Menu Item Properties and IMenuManager sections --- docs/en/UI/AspNetCore/Navigation-Menu.md | 51 ++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/docs/en/UI/AspNetCore/Navigation-Menu.md b/docs/en/UI/AspNetCore/Navigation-Menu.md index 4a8db0a6c5..f10d907512 100644 --- a/docs/en/UI/AspNetCore/Navigation-Menu.md +++ b/docs/en/UI/AspNetCore/Navigation-Menu.md @@ -1,4 +1,4 @@ -# Navigation Menu +# ASP.NET Core MVC / Razor Pages UI: Navigation Menu Every application has a main menu to allow users to navigate to pages/screens of the application. Some applications may contain more than one menu in different sections of the UI. @@ -54,7 +54,7 @@ namespace MyProject.Web.Menus ``` * This example adds items only to the main menu (`StandardMenus.Main`: see the *Standard Menus* section below). -* It gets a `IStringLocalizer` from `context` to localize the display names of the menu items. +* It gets a `IStringLocalizer` from `context` to [localize](../../Localization.md) the display names of the menu items. * Adds the Customers and Orders as children of the CRM menu. Once you create a menu contributor, you need to add it to the `AbpNavigationOptions` in the `ConfigureServices` method of your module: @@ -79,6 +79,20 @@ Here, a few notes on the menu contributors; * Only leaf menu items have `url`s normally. When you click to a parent menu, its sub menu is opened or closed, you don't navigate the `url` of a parent menu item. * If a menu item has no children and has no `url` defined, then it is not rendered on the UI. This simplifies to authorize the menu items: You only authorize the child items (see the next section). If none of the children are authorized, then the parent automatically disappears. +### Menu Item Properties + +There are more options of a menu item (the constructor of the `ApplicationMenuItem` class). Here, the list of all available options; + +* `name` (`string`, required): The unique name of the menu item. +* `displayName` (`string`, required): Display name/text of the menu item. You can [localize](../../Localization.md) this as shown before. +* `url` (`string`): The URL of the menu item. +* `icon` (`string`): An icon name. Free [Font Awesome](https://fontawesome.com/) icon classes are supported out of the box. Example: `fa fa-book`. You can use any CSS font icon class as long as you include the necessary CSS files to your application. +* `order` (`int`): The order of the menu item. Default value is `1000`. Items are sorted by the adding order unless you specify an order value. +* `customData` (`object`): A custom object that you can associate to the menu item and use it while rendering the menu item. +* `target` (`string`): Target of the menu item. Can be `null` (default), "_blank", "_*self*", "_parent", "_*top*" or a frame name for web applications. +* `elementId` (`string`): Can be used to render the element with a specific HTML `id` attribute. +* `cssClass` (`string`): Additional string classes for the menu item. + ### Authorization As seen above, a menu contributor contributes to the menu dynamically. So, you can perform any custom logic or get menu items from any source. @@ -143,4 +157,35 @@ if (context.Menu.Name == StandardMenus.User) ## IMenuManager -TODO \ No newline at end of file +`IMenuManager` is generally used by the UI [theme](Theming.md) to render the menu items on the UI. So, **you generally don't need to directly use** the `IMenuManager`. + +**Example: Getting the `Main` menu items** + +```csharp +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Volo.Abp.UI.Navigation; + +namespace MyProject.Web.Pages +{ + public class IndexModel : PageModel + { + private readonly IMenuManager _menuManager; + + public IndexModel(IMenuManager menuManager) + { + _menuManager = menuManager; + } + + public async Task OnGetAsync() + { + var mainMenu = await _menuManager.GetAsync(StandardMenus.Main); + + foreach (var menuItem in mainMenu.Items) + { + //... + } + } + } +} +``` \ No newline at end of file From d93b3c1749657f0b8b90db7cd0b8ccf3e77a9619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Oct 2020 22:02:59 +0300 Subject: [PATCH 098/114] Update Navigation-Menu.md --- docs/en/UI/AspNetCore/Navigation-Menu.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/en/UI/AspNetCore/Navigation-Menu.md b/docs/en/UI/AspNetCore/Navigation-Menu.md index f10d907512..ddbfbbd857 100644 --- a/docs/en/UI/AspNetCore/Navigation-Menu.md +++ b/docs/en/UI/AspNetCore/Navigation-Menu.md @@ -135,6 +135,19 @@ If you want to add menu items under the *Administration* menu item, you can use context.Menu.GetAdministration().AddItem(...) ```` +### Manipulating the Existing Menu Items + +ABP Framework executes the menu contributors by the [module dependency order](../../Module-Development-Basics.md). So, you can manipulate the menu items that your application or module (directly or indirectly) depends on. + +**Example: Set an icon for the `Users` menu item added by the [Identity Module](../../Modules/Identity.md)** + +````csharp +var userMenu = context.Menu.FindMenuItem(IdentityMenuNames.Users); +userMenu.Icon = "fa fa-users"; +```` + +> `context.Menu` gives you ability to access to all the menu items those have been added by the previous menu contributors. + ## Standard Menus A menu is a **named** component. An application may contain more than one menus with different, unique names. There are two pre-defined standard menus: @@ -188,4 +201,5 @@ namespace MyProject.Web.Pages } } } -``` \ No newline at end of file +``` + From 75c67b842346bb4d2bdfcf8c7f6defc2432e44a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Oct 2020 22:06:56 +0300 Subject: [PATCH 099/114] Added Navigation / Menus to the docs navigation menu. --- docs/en/docs-nav.json | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 423ee8db9d..b75d98389a 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -394,6 +394,14 @@ { "text": "ASP.NET Core MVC / Razor Pages", "items": [ + { + "text": "Forms & Validation", + "path": "UI/AspNetCore/Forms-Validation.md" + }, + { + "text": "Navigation / Menus", + "path": "UI/AspNetCore/Navigation-Menu.md" + }, { "text": "Client Side Package Management", "path": "UI/AspNetCore/Client-Side-Package-Management.md" @@ -402,10 +410,6 @@ "text": "Bundling & Minification", "path": "UI/AspNetCore/Bundling-Minification.md" }, - { - "text": "Forms & Validation", - "path": "UI/AspNetCore/Forms-Validation.md" - }, { "text": "Tag Helpers", "path": "UI/AspNetCore/Tag-Helpers/Index.md", From fbe4975543b7820942da1fc5d73c875bbba6b288 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Mon, 5 Oct 2020 09:32:34 +0800 Subject: [PATCH 100/114] Rename ResolverAndGet to GetAsync. --- .../Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs | 2 +- .../Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs | 2 +- .../Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs index e0a5cfb498..24e2b40067 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs @@ -20,7 +20,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy public async Task InvokeAsync(HttpContext context, RequestDelegate next) { - var tenant = await _tenantConfigurationProvider.ResolverAndGet(); + var tenant = await _tenantConfigurationProvider.GetAsync(); using (_currentTenant.Change(tenant?.Id, tenant?.Name)) { await next(context); diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs index 6d573bac36..d46b6b2497 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs @@ -4,6 +4,6 @@ namespace Volo.Abp.MultiTenancy { public interface ITenantConfigurationProvider { - Task ResolverAndGet(); + Task GetAsync(); } } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs index c07ec3931d..7e32611dfb 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs @@ -20,7 +20,7 @@ namespace Volo.Abp.MultiTenancy TenantResolveResultAccessor = tenantResolveResultAccessor; } - public virtual async Task ResolverAndGet() + public virtual async Task GetAsync() { var resolveResult = TenantResolver.ResolveTenantIdOrName(); TenantResolveResultAccessor.Result = resolveResult; From 9d12427545c5754cb9f1960495434e44e05af35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Oct 2020 12:09:57 +0300 Subject: [PATCH 101/114] Show message to the user instead of bottom error line. --- .gitignore | 1 + ...pWebAssemblyServiceCollectionExtensions.cs | 17 +++++ ...bpAspNetCoreComponentsWebAssemblyModule.cs | 9 +++ .../AbpExceptionHandlingLogger.cs | 70 +++++++++++++++++++ .../AbpExceptionHandlingLoggerProvider.cs | 38 ++++++++++ .../ServiceCollectionCommonExtensions.cs | 9 ++- .../wwwroot/index.html | 5 -- 7 files changed, 142 insertions(+), 7 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs diff --git a/.gitignore b/.gitignore index 5b47e32794..6e767c8f76 100644 --- a/.gitignore +++ b/.gitignore @@ -304,3 +304,4 @@ modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Logs/ /templates/app/angular/package-lock.json /modules/client-simulation/demo/Volo.ClientSimulation.Demo/package-lock.json abp-build-config.json +/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Test/ diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs new file mode 100644 index 0000000000..2f541265d1 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs @@ -0,0 +1,17 @@ +using System.Diagnostics.CodeAnalysis; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using Volo.Abp; + +namespace Microsoft.Extensions.DependencyInjection +{ + public static class AbpWebAssemblyServiceCollectionExtensions + { + public static WebAssemblyHostBuilder GetHostBuilder( + [NotNull] this IServiceCollection services) + { + Check.NotNull(services, nameof(services)); + + return services.GetSingletonInstance(); + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs index db6109e55a..707952f7c4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs @@ -1,4 +1,6 @@ using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling; using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.Http.Client; using Volo.Abp.Modularity; @@ -22,5 +24,12 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly }); }); } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services + .GetHostBuilder().Logging + .AddProvider(new AbpExceptionHandlingLoggerProvider(context.Services)); + } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs new file mode 100644 index 0000000000..896031aaaf --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs @@ -0,0 +1,70 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling +{ + public class AbpExceptionHandlingLogger : ILogger, IDisposable + { + private readonly IServiceCollection _serviceCollection; + private IServiceScope _serviceScope; + private IUiMessageService _messageService; + + public AbpExceptionHandlingLogger(IServiceCollection serviceCollection) + { + _serviceCollection = serviceCollection; + } + + public void Log( + LogLevel logLevel, + EventId eventId, + TState state, + Exception exception, + Func formatter) + { + if (logLevel != LogLevel.Critical && logLevel != LogLevel.Error) + { + return; + } + + TryInitialize(); + + if (_messageService == null) + { + return; + } + + //TODO: handle exception types + _messageService.ErrorAsync( + exception?.Message ?? state?.ToString() ?? "Unknown error!" + ); + } + + private void TryInitialize() + { + var serviceProvider = _serviceCollection.GetServiceProviderOrNull(); + if (serviceProvider == null) + { + return; + } + + _serviceScope = serviceProvider.CreateScope(); + _messageService = _serviceScope.ServiceProvider.GetRequiredService(); + } + + public bool IsEnabled(LogLevel logLevel) + { + return logLevel == LogLevel.Critical || logLevel == LogLevel.Error; + } + + public IDisposable BeginScope(TState state) + { + return NullDisposable.Instance; + } + + public void Dispose() + { + _serviceScope?.Dispose(); + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs new file mode 100644 index 0000000000..d295559284 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs @@ -0,0 +1,38 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling +{ + public class AbpExceptionHandlingLoggerProvider : ILoggerProvider + { + private AbpExceptionHandlingLogger _logger; + private static readonly object SyncObj = new object(); + private readonly IServiceCollection _serviceCollection; + + public AbpExceptionHandlingLoggerProvider(IServiceCollection serviceCollection) + { + _serviceCollection = serviceCollection; + } + + public ILogger CreateLogger(string categoryName) + { + if (_logger == null) + { + lock (SyncObj) + { + if (_logger == null) + { + _logger = new AbpExceptionHandlingLogger(_serviceCollection); + } + } + } + + return _logger; + } + + public void Dispose() + { + _logger.Dispose(); + } + } +} diff --git a/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs b/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs index 1b2d2c4652..88e73c67e8 100644 --- a/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs +++ b/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs @@ -24,7 +24,7 @@ namespace Microsoft.Extensions.DependencyInjection .FirstOrDefault(d => d.ServiceType == typeof(T)) ?.ImplementationInstance; } - + public static T GetSingletonInstance(this IServiceCollection services) { var service = services.GetSingletonInstanceOrNull(); @@ -165,5 +165,10 @@ namespace Microsoft.Extensions.DependencyInjection { return new Lazy(() => services.GetRequiredService(type), true); } + + public static IServiceProvider GetServiceProviderOrNull(this IServiceCollection services) + { + return services.GetObjectOrNull(); + } } -} \ No newline at end of file +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html index 9edbaa4185..4566bec3c1 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html @@ -19,11 +19,6 @@ Loading... -
    - An unhandled error has occurred. - Reload - 🗙 -
    From 7f94a4ed9fad8c15ac2b2eb4919326214fa5543a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Oct 2020 12:31:08 +0300 Subject: [PATCH 102/114] Make Volo.Abp.BlazoriseUI Razor SDK --- framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj b/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj index f7875a0f4a..e3df9ee763 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj +++ b/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj @@ -1,10 +1,11 @@ - + netstandard2.1 + 3.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false false From d294ba8cb8ccb2e877971808d94bb7b51017cff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Oct 2020 13:35:06 +0300 Subject: [PATCH 103/114] Fix the solution structure problem for the Volo.Abp.BlazoriseUI package. --- .../{Volo/Abp/BlazoriseUI => }/AbpBlazoriseModule.cs | 0 .../{Volo/Abp/BlazoriseUI => }/AbpCrudPageBase.cs | 0 .../Abp/BlazoriseUI => }/BlazoriseUiNotificationService.cs | 0 .../src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj | 5 ----- 4 files changed, 5 deletions(-) rename framework/src/Volo.Abp.BlazoriseUI/{Volo/Abp/BlazoriseUI => }/AbpBlazoriseModule.cs (100%) rename framework/src/Volo.Abp.BlazoriseUI/{Volo/Abp/BlazoriseUI => }/AbpCrudPageBase.cs (100%) rename framework/src/Volo.Abp.BlazoriseUI/{Volo/Abp/BlazoriseUI => }/BlazoriseUiNotificationService.cs (100%) diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/AbpBlazoriseModule.cs b/framework/src/Volo.Abp.BlazoriseUI/AbpBlazoriseModule.cs similarity index 100% rename from framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/AbpBlazoriseModule.cs rename to framework/src/Volo.Abp.BlazoriseUI/AbpBlazoriseModule.cs diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/AbpCrudPageBase.cs b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs similarity index 100% rename from framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/AbpCrudPageBase.cs rename to framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs b/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiNotificationService.cs similarity index 100% rename from framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/BlazoriseUiNotificationService.cs rename to framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiNotificationService.cs diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj b/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj index e3df9ee763..12628b1440 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj +++ b/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj @@ -6,11 +6,6 @@ netstandard2.1 3.0 - $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; - false - false - false - From 97f07310dd8127eb8c8e97098c4b0738b51247b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Oct 2020 14:17:01 +0300 Subject: [PATCH 104/114] Introduce UserExceptionInformer --- .../AbpExceptionHandlingLogger.cs | 26 +++++----- .../IUserExceptionInformer.cs | 10 ++++ .../UserExceptionInformer.cs | 47 +++++++++++++++++++ .../UserExceptionInformerContext.cs | 16 +++++++ .../Volo/Abp/Http/RemoteServiceErrorInfo.cs | 1 - 5 files changed, 87 insertions(+), 13 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/IUserExceptionInformer.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformerContext.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs index 896031aaaf..445ccbaba0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/AbpExceptionHandlingLogger.cs @@ -8,20 +8,25 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling { private readonly IServiceCollection _serviceCollection; private IServiceScope _serviceScope; - private IUiMessageService _messageService; + private IUserExceptionInformer _userExceptionInformer; public AbpExceptionHandlingLogger(IServiceCollection serviceCollection) { _serviceCollection = serviceCollection; } - public void Log( + public virtual void Log( LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) { + if (exception == null) + { + return; + } + if (logLevel != LogLevel.Critical && logLevel != LogLevel.Error) { return; @@ -29,18 +34,15 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling TryInitialize(); - if (_messageService == null) + if (_userExceptionInformer == null) { return; } - //TODO: handle exception types - _messageService.ErrorAsync( - exception?.Message ?? state?.ToString() ?? "Unknown error!" - ); + _userExceptionInformer.InformAsync(new UserExceptionInformerContext(exception)); } - private void TryInitialize() + protected virtual void TryInitialize() { var serviceProvider = _serviceCollection.GetServiceProviderOrNull(); if (serviceProvider == null) @@ -49,20 +51,20 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling } _serviceScope = serviceProvider.CreateScope(); - _messageService = _serviceScope.ServiceProvider.GetRequiredService(); + _userExceptionInformer = _serviceScope.ServiceProvider.GetRequiredService(); } - public bool IsEnabled(LogLevel logLevel) + public virtual bool IsEnabled(LogLevel logLevel) { return logLevel == LogLevel.Critical || logLevel == LogLevel.Error; } - public IDisposable BeginScope(TState state) + public virtual IDisposable BeginScope(TState state) { return NullDisposable.Instance; } - public void Dispose() + public virtual void Dispose() { _serviceScope?.Dispose(); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/IUserExceptionInformer.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/IUserExceptionInformer.cs new file mode 100644 index 0000000000..4399e706ec --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/IUserExceptionInformer.cs @@ -0,0 +1,10 @@ +using System; +using System.Threading.Tasks; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling +{ + public interface IUserExceptionInformer + { + Task InformAsync(UserExceptionInformerContext context); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs new file mode 100644 index 0000000000..067248d7e9 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Validation; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling +{ + public class UserExceptionInformer : IUserExceptionInformer, ITransientDependency + { + private readonly IUiMessageService _messageService; + + public UserExceptionInformer(IUiMessageService messageService) + { + _messageService = messageService; + } + + public virtual async Task InformAsync(UserExceptionInformerContext context) + { + if (context.Exception is AbpRemoteCallException remoteCallException) + { + await InformAbpRemoteCallExceptionAsync(remoteCallException, context); + } + else if (context.Exception is AbpValidationException validationException) + { + await InformAbpValidationExceptionAsync(validationException, context); + } + } + + protected virtual async Task InformAbpRemoteCallExceptionAsync(AbpRemoteCallException exception, UserExceptionInformerContext context) + { + if (exception.Error.Details.IsNullOrEmpty()) + { + await _messageService.ErrorAsync(exception.Error.Message); + } + else + { + await _messageService.ErrorAsync(exception.Error.Details, exception.Error.Message); + } + } + + protected virtual async Task InformAbpValidationExceptionAsync(AbpValidationException exception, UserExceptionInformerContext context) + { + await _messageService.ErrorAsync(exception.Message); + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformerContext.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformerContext.cs new file mode 100644 index 0000000000..d860467b12 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformerContext.cs @@ -0,0 +1,16 @@ +using System; +using JetBrains.Annotations; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling +{ + public class UserExceptionInformerContext + { + [NotNull] + public Exception Exception { get; } + + public UserExceptionInformerContext(Exception exception) + { + Exception = exception; + } + } +} diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs index 287b423c20..c54ba24405 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs @@ -1,6 +1,5 @@ using System; using System.Collections; -using System.Collections.Generic; namespace Volo.Abp.Http { From edff85f6ac97cac63ec708827f9d1988255f0362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Oct 2020 16:11:56 +0300 Subject: [PATCH 105/114] Resolved #5525: Exception Handling for the Blazor UI. Resolved #5701: Introduce Volo.Abp.ExceptionHandling package. --- framework/Volo.Abp.sln | 7 ++ .../UserExceptionInformer.cs | 38 +++--- .../Controllers/ErrorController.cs | 9 +- .../ExceptionHandling/AbpExceptionFilter.cs | 8 +- .../AbpExceptionPageFilter.cs | 8 +- .../Volo.Abp.AspNetCore.csproj | 4 +- .../Abp/AspNetCore/AbpAspNetCoreModule.cs | 12 +- .../AbpExceptionHandlingMiddleware.cs | 5 +- .../Volo.Abp.Ddd.Domain.csproj | 1 + .../Volo/Abp/Domain/AbpDddDomainModule.cs | 4 +- .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 +++++ .../Volo.Abp.ExceptionHandling.csproj | 25 ++++ .../DefaultExceptionToErrorInfoConverter.cs | 24 ++-- .../IExceptionToErrorInfoConverter.cs | 7 +- .../Entities/EntityNotFoundException.cs | 0 .../AbpExceptionHandlingModule.cs | 33 +++++ .../AbpExceptionHandlingResource.cs | 10 ++ .../ExceptionHandling/Localization/ar.json | 23 ++++ .../ExceptionHandling/Localization/cs.json | 23 ++++ .../ExceptionHandling/Localization/de.json | 23 ++++ .../ExceptionHandling/Localization/en.json | 23 ++++ .../ExceptionHandling/Localization/es.json | 23 ++++ .../ExceptionHandling/Localization/fr.json | 23 ++++ .../ExceptionHandling/Localization/nl.json | 23 ++++ .../ExceptionHandling/Localization/pl-PL.json | 18 +++ .../ExceptionHandling/Localization/pt-BR.json | 23 ++++ .../ExceptionHandling/Localization/ru.json | 23 ++++ .../ExceptionHandling/Localization/sl.json | 23 ++++ .../ExceptionHandling/Localization/tr.json | 23 ++++ .../ExceptionHandling/Localization/vi.json | 18 +++ .../Localization/zh-Hans.json | 23 ++++ .../Localization/zh-Hant.json | 23 ++++ .../Volo/Abp/Http/RemoteServiceErrorInfo.cs | 0 .../Abp/Http/RemoteServiceErrorResponse.cs | 0 .../Http/RemoteServiceValidationErrorInfo.cs | 0 .../Volo.Abp.Http.Client.csproj | 1 + .../Abp/Http/Client/AbpHttpClientModule.cs | 4 +- .../Localization/Resources/AbpUi/ar.json | 20 +-- .../Localization/Resources/AbpUi/cs.json | 18 --- .../Localization/Resources/AbpUi/de.json | 18 --- .../Localization/Resources/AbpUi/en.json | 18 --- .../Localization/Resources/AbpUi/es.json | 20 +-- .../Localization/Resources/AbpUi/fr.json | 118 ++++++++---------- .../Localization/Resources/AbpUi/nl.json | 18 --- .../Localization/Resources/AbpUi/pl-PL.json | 15 +-- .../Localization/Resources/AbpUi/pt-BR.json | 20 +-- .../Localization/Resources/AbpUi/ru.json | 18 --- .../Localization/Resources/AbpUi/sl.json | 18 --- .../Localization/Resources/AbpUi/tr.json | 18 --- .../Localization/Resources/AbpUi/vi.json | 13 -- .../Localization/Resources/AbpUi/zh-Hans.json | 18 --- .../Localization/Resources/AbpUi/zh-Hant.json | 18 --- framework/src/Volo.Abp.UI/Volo.Abp.UI.csproj | 2 +- .../Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs | 6 +- nupkg/common.ps1 | 1 + 56 files changed, 571 insertions(+), 374 deletions(-) create mode 100644 framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xml create mode 100644 framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xsd create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj rename framework/src/{Volo.Abp.AspNetCore => Volo.Abp.ExceptionHandling}/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs (93%) rename framework/src/{Volo.Abp.AspNetCore => Volo.Abp.ExceptionHandling}/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs (72%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.ExceptionHandling}/Volo/Abp/Domain/Entities/EntityNotFoundException.cs (100%) create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/AbpExceptionHandlingResource.cs create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ar.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/cs.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/de.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/es.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fr.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/nl.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pl-PL.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pt-BR.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ru.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/sl.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/tr.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/vi.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hant.json rename framework/src/{Volo.Abp.Http => Volo.Abp.ExceptionHandling}/Volo/Abp/Http/RemoteServiceErrorInfo.cs (100%) rename framework/src/{Volo.Abp.Http => Volo.Abp.ExceptionHandling}/Volo/Abp/Http/RemoteServiceErrorResponse.cs (100%) rename framework/src/{Volo.Abp.Http => Volo.Abp.ExceptionHandling}/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs (100%) diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index 503b42c7e1..c64adcbb0f 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -347,6 +347,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Autofac.WebAssembl EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Authentication.OpenIdConnect", "src\Volo.Abp.AspNetCore.Authentication.OpenIdConnect\Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj", "{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.ExceptionHandling", "src\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj", "{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1033,6 +1035,10 @@ Global {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Debug|Any CPU.Build.0 = Debug|Any CPU {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Release|Any CPU.ActiveCfg = Release|Any CPU {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Release|Any CPU.Build.0 = Release|Any CPU + {B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1208,6 +1214,7 @@ Global {29CA7471-4E3E-4E75-8B33-001DDF682F01} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {37F89B0B-1C6B-426F-A5EE-676D1956D9E9} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {B9D1ADCB-D552-4626-A1F1-78FF72C1E822} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs index 067248d7e9..80f80c675a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs @@ -1,47 +1,49 @@ using System; using System.Threading.Tasks; +using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.DependencyInjection; +using Volo.Abp.Http; using Volo.Abp.Http.Client; -using Volo.Abp.Validation; namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling { public class UserExceptionInformer : IUserExceptionInformer, ITransientDependency { - private readonly IUiMessageService _messageService; + protected IUiMessageService MessageService { get; } + protected IExceptionToErrorInfoConverter ExceptionToErrorInfoConverter { get; } - public UserExceptionInformer(IUiMessageService messageService) + public UserExceptionInformer(IUiMessageService messageService, IExceptionToErrorInfoConverter exceptionToErrorInfoConverter) { - _messageService = messageService; + MessageService = messageService; + ExceptionToErrorInfoConverter = exceptionToErrorInfoConverter; } public virtual async Task InformAsync(UserExceptionInformerContext context) + { + var errorInfo = GetErrorInfo(context); + await ShowErrorInfoAsync(errorInfo); + } + + protected virtual RemoteServiceErrorInfo GetErrorInfo(UserExceptionInformerContext context) { if (context.Exception is AbpRemoteCallException remoteCallException) { - await InformAbpRemoteCallExceptionAsync(remoteCallException, context); - } - else if (context.Exception is AbpValidationException validationException) - { - await InformAbpValidationExceptionAsync(validationException, context); + return remoteCallException.Error; } + + return ExceptionToErrorInfoConverter.Convert(context.Exception, false); } - protected virtual async Task InformAbpRemoteCallExceptionAsync(AbpRemoteCallException exception, UserExceptionInformerContext context) + protected virtual async Task ShowErrorInfoAsync(RemoteServiceErrorInfo errorInfo) { - if (exception.Error.Details.IsNullOrEmpty()) + if (errorInfo.Details.IsNullOrEmpty()) { - await _messageService.ErrorAsync(exception.Error.Message); + await MessageService.ErrorAsync(errorInfo.Message); } else { - await _messageService.ErrorAsync(exception.Error.Details, exception.Error.Message); + await MessageService.ErrorAsync(errorInfo.Details, errorInfo.Message); } } - - protected virtual async Task InformAbpValidationExceptionAsync(AbpValidationException exception, UserExceptionInformerContext context) - { - await _messageService.ErrorAsync(exception.Message); - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs index 9682ec838e..0b05941f61 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs @@ -19,18 +19,21 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers private readonly IStringLocalizer _localizer; private readonly AbpErrorPageOptions _abpErrorPageOptions; private readonly IExceptionNotifier _exceptionNotifier; + private readonly AbpExceptionHandlingOptions _exceptionHandlingOptions; public ErrorController( IExceptionToErrorInfoConverter exceptionToErrorInfoConverter, IHttpExceptionStatusCodeFinder httpExceptionStatusCodeFinder, IOptions abpErrorPageOptions, - IStringLocalizer localizer, - IExceptionNotifier exceptionNotifier) + IStringLocalizer localizer, + IExceptionNotifier exceptionNotifier, + IOptions exceptionHandlingOptions) { _errorInfoConverter = exceptionToErrorInfoConverter; _statusCodeFinder = httpExceptionStatusCodeFinder; _localizer = localizer; _exceptionNotifier = exceptionNotifier; + _exceptionHandlingOptions = exceptionHandlingOptions.Value; _abpErrorPageOptions = abpErrorPageOptions.Value; } @@ -44,7 +47,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers await _exceptionNotifier.NotifyAsync(new ExceptionNotificationContext(exception)); - var errorInfo = _errorInfoConverter.Convert(exception); + var errorInfo = _errorInfoConverter.Convert(exception, _exceptionHandlingOptions.SendExceptionsDetailsToClients); if (httpStatusCode == 0) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs index 009d52b42f..c6f353b876 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.DependencyInjection; using Volo.Abp.ExceptionHandling; @@ -23,15 +24,18 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling private readonly IExceptionToErrorInfoConverter _errorInfoConverter; private readonly IHttpExceptionStatusCodeFinder _statusCodeFinder; private readonly IJsonSerializer _jsonSerializer; + private readonly AbpExceptionHandlingOptions _exceptionHandlingOptions; public AbpExceptionFilter( IExceptionToErrorInfoConverter errorInfoConverter, IHttpExceptionStatusCodeFinder statusCodeFinder, - IJsonSerializer jsonSerializer) + IJsonSerializer jsonSerializer, + IOptions exceptionHandlingOptions) { _errorInfoConverter = errorInfoConverter; _statusCodeFinder = statusCodeFinder; _jsonSerializer = jsonSerializer; + _exceptionHandlingOptions = exceptionHandlingOptions.Value; Logger = NullLogger.Instance; } @@ -76,7 +80,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true"); context.HttpContext.Response.StatusCode = (int)_statusCodeFinder.GetStatusCode(context.HttpContext, context.Exception); - var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception); + var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception, _exceptionHandlingOptions.SendExceptionsDetailsToClients); context.Result = new ObjectResult(new RemoteServiceErrorResponse(remoteServiceErrorInfo)); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs index 8e2356ff20..9ef0378909 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.DependencyInjection; using Volo.Abp.ExceptionHandling; @@ -23,15 +24,18 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling private readonly IExceptionToErrorInfoConverter _errorInfoConverter; private readonly IHttpExceptionStatusCodeFinder _statusCodeFinder; private readonly IJsonSerializer _jsonSerializer; + private readonly AbpExceptionHandlingOptions _exceptionHandlingOptions; public AbpExceptionPageFilter( IExceptionToErrorInfoConverter errorInfoConverter, IHttpExceptionStatusCodeFinder statusCodeFinder, - IJsonSerializer jsonSerializer) + IJsonSerializer jsonSerializer, + IOptions exceptionHandlingOptions) { _errorInfoConverter = errorInfoConverter; _statusCodeFinder = statusCodeFinder; _jsonSerializer = jsonSerializer; + _exceptionHandlingOptions = exceptionHandlingOptions.Value; Logger = NullLogger.Instance; } @@ -88,7 +92,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true"); context.HttpContext.Response.StatusCode = (int)_statusCodeFinder.GetStatusCode(context.HttpContext, context.Exception); - var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception); + var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception, _exceptionHandlingOptions.SendExceptionsDetailsToClients); context.Result = new ObjectResult(new RemoteServiceErrorResponse(remoteServiceErrorInfo)); diff --git a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj index a3089646d2..44458218b0 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj +++ b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj @@ -19,11 +19,9 @@ - + - - diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs index 279601387d..fad534949d 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs @@ -6,12 +6,10 @@ using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.Auditing; using Volo.Abp.Auditing; using Volo.Abp.Authorization; -using Volo.Abp.Domain; +using Volo.Abp.ExceptionHandling; using Volo.Abp.Http; -using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.Security; -using Volo.Abp.UI; using Volo.Abp.Uow; using Volo.Abp.Validation; using Volo.Abp.VirtualFileSystem; @@ -19,16 +17,14 @@ using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.AspNetCore { [DependsOn( - typeof(AbpAuditingModule), + typeof(AbpAuditingModule), typeof(AbpSecurityModule), typeof(AbpVirtualFileSystemModule), typeof(AbpUnitOfWorkModule), typeof(AbpHttpModule), typeof(AbpAuthorizationModule), - typeof(AbpDddDomainModule), //TODO: Can we remove this? - typeof(AbpLocalizationModule), - typeof(AbpUiModule), //TODO: Can we remove this? - typeof(AbpValidationModule) + typeof(AbpValidationModule), + typeof(AbpExceptionHandlingModule) )] public class AbpAspNetCoreModule : AbpModule { diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs index edd00e1fb7..9535aab149 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs @@ -3,9 +3,9 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using Microsoft.Net.Http.Headers; using Volo.Abp.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Uow; using Volo.Abp.DependencyInjection; using Volo.Abp.ExceptionHandling; using Volo.Abp.Http; @@ -61,6 +61,7 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling var errorInfoConverter = httpContext.RequestServices.GetRequiredService(); var statusCodeFinder = httpContext.RequestServices.GetRequiredService(); var jsonSerializer = httpContext.RequestServices.GetRequiredService(); + var options = httpContext.RequestServices.GetRequiredService>().Value; httpContext.Response.Clear(); httpContext.Response.StatusCode = (int)statusCodeFinder.GetStatusCode(httpContext, exception); @@ -70,7 +71,7 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling await httpContext.Response.WriteAsync( jsonSerializer.Serialize( new RemoteServiceErrorResponse( - errorInfoConverter.Convert(exception) + errorInfoConverter.Convert(exception, options.SendExceptionsDetailsToClients) ) ) ); diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj index ab162e60c7..9fd8702f22 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj @@ -18,6 +18,7 @@ + diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs index 19b857553f..87965924e4 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs @@ -1,6 +1,7 @@ using Volo.Abp.Auditing; using Volo.Abp.Data; using Volo.Abp.EventBus; +using Volo.Abp.ExceptionHandling; using Volo.Abp.Guids; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; @@ -20,7 +21,8 @@ namespace Volo.Abp.Domain typeof(AbpThreadingModule), typeof(AbpTimingModule), typeof(AbpUnitOfWorkModule), - typeof(AbpObjectMappingModule) + typeof(AbpObjectMappingModule), + typeof(AbpExceptionHandlingModule) )] public class AbpDddDomainModule : AbpModule { diff --git a/framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xml b/framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xml new file mode 100644 index 0000000000..bc5a74a236 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xsd b/framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj new file mode 100644 index 0000000000..65283bbc26 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj @@ -0,0 +1,25 @@ + + + + + + + netstandard2.0 + true + + + + + + + + + + + + + + + + + diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs similarity index 93% rename from framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs rename to framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs index 339b249e49..6367bd24ff 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; -using Localization.Resources.AbpUi; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; @@ -10,6 +9,7 @@ using Volo.Abp.Authorization; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Entities; using Volo.Abp.ExceptionHandling; +using Volo.Abp.ExceptionHandling.Localization; using Volo.Abp.Http; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; @@ -20,28 +20,25 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling public class DefaultExceptionToErrorInfoConverter : IExceptionToErrorInfoConverter, ITransientDependency { protected AbpExceptionLocalizationOptions LocalizationOptions { get; } - protected AbpExceptionHandlingOptions ExceptionHandlingOptions { get; } protected IStringLocalizerFactory StringLocalizerFactory { get; } - protected IStringLocalizer L { get; } + protected IStringLocalizer L { get; } protected IServiceProvider ServiceProvider { get; } public DefaultExceptionToErrorInfoConverter( IOptions localizationOptions, - IOptions exceptionHandlingOptions, IStringLocalizerFactory stringLocalizerFactory, - IStringLocalizer abpUiStringLocalizer, + IStringLocalizer stringLocalizer, IServiceProvider serviceProvider) { ServiceProvider = serviceProvider; - ExceptionHandlingOptions = exceptionHandlingOptions.Value; StringLocalizerFactory = stringLocalizerFactory; - L = abpUiStringLocalizer; + L = stringLocalizer; LocalizationOptions = localizationOptions.Value; } - public RemoteServiceErrorInfo Convert(Exception exception) + public RemoteServiceErrorInfo Convert(Exception exception, bool includeSensitiveDetails) { - var errorInfo = CreateErrorInfoWithoutCode(exception); + var errorInfo = CreateErrorInfoWithoutCode(exception, includeSensitiveDetails); if (exception is IHasErrorCode hasErrorCodeException) { @@ -51,9 +48,9 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling return errorInfo; } - protected virtual RemoteServiceErrorInfo CreateErrorInfoWithoutCode(Exception exception) + protected virtual RemoteServiceErrorInfo CreateErrorInfoWithoutCode(Exception exception, bool includeSensitiveDetails) { - if (ExceptionHandlingOptions.SendExceptionsDetailsToClients) + if (includeSensitiveDetails) { return CreateDetailedErrorInfoFromException(exception); } @@ -179,10 +176,9 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling { var aggException = exception as AggregateException; - if (aggException.InnerException is IUserFriendlyException || - aggException.InnerException is AbpValidationException || - aggException.InnerException is EntityNotFoundException || + if (aggException.InnerException is AbpValidationException || aggException.InnerException is AbpAuthorizationException || + aggException.InnerException is EntityNotFoundException || aggException.InnerException is IBusinessException) { return aggException.InnerException; diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs similarity index 72% rename from framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs rename to framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs index a25206a918..3293be71ee 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs @@ -4,7 +4,7 @@ using Volo.Abp.Http; namespace Volo.Abp.AspNetCore.ExceptionHandling { /// - /// This interface can be implemented to convert an object to an object. + /// This interface can be implemented to convert an object to an object. /// Implements Chain Of Responsibility pattern. /// public interface IExceptionToErrorInfoConverter @@ -13,7 +13,8 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling /// Converter method. /// /// The exception + /// Should include sensitive details to the error info? /// Error info or null - RemoteServiceErrorInfo Convert(Exception exception); + RemoteServiceErrorInfo Convert(Exception exception, bool includeSensitiveDetails); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/EntityNotFoundException.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Domain/Entities/EntityNotFoundException.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/EntityNotFoundException.cs rename to framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Domain/Entities/EntityNotFoundException.cs diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs new file mode 100644 index 0000000000..12ed60299d --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs @@ -0,0 +1,33 @@ +using Volo.Abp.ExceptionHandling.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.ExceptionHandling +{ + /* TODO: This package is introduced in a later time by gathering + * classes from multiple packages. + * So, didn't change the original namespaces of the types to not introduce breaking changes. + * We will re-design this package in a later time, probably with v5.0. + */ + [DependsOn( + typeof(AbpLocalizationModule) + )] + public class AbpExceptionHandlingModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/Volo/Abp/ExceptionHandling/Localization"); + }); + } + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/AbpExceptionHandlingResource.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/AbpExceptionHandlingResource.cs new file mode 100644 index 0000000000..fe73b72aa1 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/AbpExceptionHandlingResource.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Localization; + +namespace Volo.Abp.ExceptionHandling.Localization +{ + [LocalizationResourceName("AbpExceptionHandling")] + public class AbpExceptionHandlingResource + { + + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ar.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ar.json new file mode 100644 index 0000000000..bd2a274d94 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ar.json @@ -0,0 +1,23 @@ +{ + "culture": "ar", + "texts": { + "InternalServerErrorMessage": "حدث خطأ داخلي أثناء طلبك!", + "ValidationErrorMessage": "طلبك غير صحيح!", + "ValidationNarrativeErrorMessageTitle": "تم الكشف عن الأخطاء التالية أثناء التحقق .", + "DefaultErrorMessage": "حدث خطأ!", + "DefaultErrorMessageDetail": "لم يتم إرسال تفاصيل الخطأ بواسطة الخادم.", + "DefaultErrorMessage401": "أنت غير مصدق!", + "DefaultErrorMessage401Detail": "يجب عليك تسجيل الدخول لأداء هذه العملية.", + "DefaultErrorMessage403": "أنك غير مخول!", + "DefaultErrorMessage403Detail": "لا يسمح لك بإجراء هذه العملية!", + "DefaultErrorMessage404": "المورد غير موجود!", + "DefaultErrorMessage404Detail": "لم يتم العثور على المورد المطلوب على الخادم!", + "EntityNotFoundErrorMessage": "لا يوجد كيان {0} بالمعرف = {1}!", + "Error": "خطأ", + "UnhandledException": "استثناء غير معالج!", + "401Message": "غير مصرح", + "403Message": "ممنوع", + "404Message": "الصفحة غير موجودة", + "500Message": "خطأ في الخادم الداخلي" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/cs.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/cs.json new file mode 100644 index 0000000000..87c4fe6545 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/cs.json @@ -0,0 +1,23 @@ +{ + "culture": "cs", + "texts": { + "InternalServerErrorMessage": "Během požadavku se vyskytla vnitřní chyba!", + "ValidationErrorMessage": "Neplatný požadavek!", + "ValidationNarrativeErrorMessageTitle": "Během ověřování byly zjištěny následující chyby.", + "DefaultErrorMessage": "Vyskytla se chyba!", + "DefaultErrorMessageDetail": "Server neposkytl detaily k chybě.", + "DefaultErrorMessage401": "Nejste přihlášeni!", + "DefaultErrorMessage401Detail": "K vykonání této operace se musíte nejprve přihlásit.", + "DefaultErrorMessage403": "Nemáte oprávnění!", + "DefaultErrorMessage403Detail": "Není vám dovoleno vykonat tuto operaci!", + "DefaultErrorMessage404": "Prostředek nenalezen!", + "DefaultErrorMessage404Detail": "Vyžádaný prostředek nebyl na serveru nalezen!", + "EntityNotFoundErrorMessage": "Neexistující entita {0} s id = {1}!", + "Error": "Chyba", + "UnhandledException": "Neošetřená výjimka!", + "401Message": "Neoprávněno", + "403Message": "Zakázáno", + "404Message": "Stránka nenalezena", + "500Message": "Interní chyba serveru" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/de.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/de.json new file mode 100644 index 0000000000..585e858cb3 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/de.json @@ -0,0 +1,23 @@ +{ + "culture": "de", + "texts": { + "InternalServerErrorMessage": "Während Ihrer Anfrage ist ein interner Fehler aufgetreten!", + "ValidationErrorMessage": "Ihre Anfrage ist nicht gültig!", + "ValidationNarrativeErrorMessageTitle": "Die folgenden Fehler wurden bei der Validierung entdeckt.", + "DefaultErrorMessage": "Ein Fehler ist aufgetreten!", + "DefaultErrorMessageDetail": "Es wurden keine Fehlerdetails vom Server gesendet.", + "DefaultErrorMessage401": "Sie sind nicht authentifiziert.", + "DefaultErrorMessage401Detail": "Sie sollten sich anmelden, um diese Operation durchzuführen.", + "DefaultErrorMessage403": "Sie sind nicht autorisiert!", + "DefaultErrorMessage403Detail": "Es ist Ihnen nicht erlaubt, diese Operation durchzuführen!", + "DefaultErrorMessage404": "Ressource nicht gefunden!", + "DefaultErrorMessage404Detail": "Die angeforderte Ressource konnte auf dem Server nicht gefunden werden!", + "EntityNotFoundErrorMessage": "Es gibt keine Entität {0} mit id = {1}!", + "Error": "Fehler", + "UnhandledException": "Unerwartete Ausnahme!", + "401Message": "Unauthorisiert", + "403Message": "Verboten", + "404Message": "Seite nicht gefunden", + "500Message": "Interner Server Fehler" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json new file mode 100644 index 0000000000..2f535cf201 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json @@ -0,0 +1,23 @@ +{ + "culture": "en", + "texts": { + "InternalServerErrorMessage": "An internal error occurred during your request!", + "ValidationErrorMessage": "Your request is not valid!", + "ValidationNarrativeErrorMessageTitle": "The following errors were detected during validation.", + "DefaultErrorMessage": "An error has occurred!", + "DefaultErrorMessageDetail": "Error detail not sent by server.", + "DefaultErrorMessage401": "You are not authenticated!", + "DefaultErrorMessage401Detail": "You should sign in to perform this operation.", + "DefaultErrorMessage403": "You are not authorized!", + "DefaultErrorMessage403Detail": "You are not allowed to perform this operation!", + "DefaultErrorMessage404": "Resource not found!", + "DefaultErrorMessage404Detail": "The resource requested could not found on the server!", + "EntityNotFoundErrorMessage": "There is no entity {0} with id = {1}!", + "Error": "Error", + "UnhandledException": "Unhandled exception!", + "401Message": "Unauthorized", + "403Message": "Forbidden", + "404Message": "Page not found", + "500Message": "Internal Server Error" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/es.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/es.json new file mode 100644 index 0000000000..b4ac4139b1 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/es.json @@ -0,0 +1,23 @@ +{ + "culture": "es", + "texts": { + "InternalServerErrorMessage": "Ocurrió un error interno en su pedido!", + "ValidationErrorMessage": "Su pedido no es válido!", + "ValidationNarrativeErrorMessageTitle": "Los siguientes errores se encontraton durante la validación.", + "DefaultErrorMessage": "Ocurrió un error!", + "DefaultErrorMessageDetail": "El servidor no envió el detalle del error.", + "DefaultErrorMessage401": "Usted no ha iniciado sessión!", + "DefaultErrorMessage401Detail": "Debe iniciar sessión para ejecutar esta operación.", + "DefaultErrorMessage403": "Usted no está autorizado!", + "DefaultErrorMessage403Detail": "Usted no puede hacer esta operación!", + "DefaultErrorMessage404": "No se encontró el recurso!", + "DefaultErrorMessage404Detail": "El recurso solicitado no se encontró en el servidor!", + "EntityNotFoundErrorMessage": "No hay una entidad {0} con el id = {1}!", + "Error": "Error", + "UnhandledException": "Excepción no controlada!", + "401Message": "No autorizado", + "403Message": "Prohibido", + "404Message": "La página no existe", + "500Message": "Error interno del servidor" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fr.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fr.json new file mode 100644 index 0000000000..f1c9713e65 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fr.json @@ -0,0 +1,23 @@ +{ + "culture": "fr", + "texts": { + "InternalServerErrorMessage": "Une erreur interne s'est produite lors de votre demande!", + "ValidationErrorMessage": "Votre demande n'est pas valide!", + "ValidationNarrativeErrorMessageTitle": "Les erreurs suivantes ont été détectées lors de la validation.", + "DefaultErrorMessage": "Une erreur est survenue!", + "DefaultErrorMessageDetail": "Détails de l'erreur non envoyés par le serveur.", + "DefaultErrorMessage401": "Vous n'êtes pas authentifié!", + "DefaultErrorMessage401Detail": "Vous devez vous connecter pour effectuer cette opération.", + "DefaultErrorMessage403": "Vous n'êtes pas autorisé!", + "DefaultErrorMessage403Detail": "Vous n'êtes pas autorisé à effectuer cette opération!", + "DefaultErrorMessage404": "Ressource introuvable!", + "DefaultErrorMessage404Detail": "La ressource demandée est introuvable sur le serveur!", + "EntityNotFoundErrorMessage": "Il n'y a pas d'entité {0} avec id = {1}!", + "Error": "Erreur", + "UnhandledException": "Exception non-gérée!", + "401Message": "Non autorisé", + "403Message": "Interdit", + "404Message": "Page introuvable", + "500Message": "Erreur Interne du Serveur" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/nl.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/nl.json new file mode 100644 index 0000000000..f96c1f9a9c --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/nl.json @@ -0,0 +1,23 @@ +{ + "culture": "nl", + "texts": { + "InternalServerErrorMessage": "Er is een interne fout opgetreden tijdens uw verzoek!", + "ValidationErrorMessage": "Uw verzoek is niet geldig!", + "ValidationNarrativeErrorMessageTitle": "Tijdens de validatie zijn de volgende fouten gedetecteerd.", + "DefaultErrorMessage": "er is een fout opgetreden!", + "DefaultErrorMessageDetail": "Foutdetails niet verzonden door server.", + "DefaultErrorMessage401": "U bent niet geverifieerd!", + "DefaultErrorMessage401Detail": "U moet inloggen om deze bewerking uit te voeren.", + "DefaultErrorMessage403": "U bent niet geautoriseerd!", + "DefaultErrorMessage403Detail": "U mag deze bewerking niet uitvoeren!", + "DefaultErrorMessage404": "Bron niet gevonden!", + "DefaultErrorMessage404Detail": "De gevraagde bron kan niet worden gevonden op de server!", + "EntityNotFoundErrorMessage": "Er is geen entiteit {0} met id = {1}!", + "Error": "Fout", + "UnhandledException": "Onverwerkte uitzondering!", + "401Message": "Ongeautoriseerd", + "403Message": "Verboden", + "404Message": "Pagina niet gevonden", + "500Message": "Interne Server Fout" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pl-PL.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pl-PL.json new file mode 100644 index 0000000000..74105cb1d4 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pl-PL.json @@ -0,0 +1,18 @@ +{ + "culture": "pl-PL", + "texts": { + "InternalServerErrorMessage": "Błąd wewnętrzny serwera podczas przetwarzania żądania!", + "ValidationErrorMessage": "Twoje żądanie jest niepoprawnie!", + "ValidationNarrativeErrorMessageTitle": "Wykryto następujące błędy podczas walidacji.", + "DefaultErrorMessage": "Wystąpił błąd!", + "DefaultErrorMessageDetail": "Treść błędu nie została wysłana z serwera.", + "DefaultErrorMessage401": "Nie jesteś zalogowany!", + "DefaultErrorMessage401Detail": "Musisz się zalogować, aby wykonać tą operację.", + "DefaultErrorMessage403": "Nie jesteś zautentykowany!", + "DefaultErrorMessage403Detail": "Nie masz uprawnień do wykonania tej operacji!", + "DefaultErrorMessage404": "Nie znaleziono zasobu!", + "DefaultErrorMessage404Detail": "Nie znaleziono zasobu z żądania na serwerze!", + "EntityNotFoundErrorMessage": "Nie istnieje encja {0} z id = {1}!", + "Error": "Błąd" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pt-BR.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pt-BR.json new file mode 100644 index 0000000000..cfee21e1b0 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pt-BR.json @@ -0,0 +1,23 @@ +{ + "culture": "pt-BR", + "texts": { + "InternalServerErrorMessage": "Um erro interno ocorreu durante a requisição!", + "ValidationErrorMessage": "Sua requisição não é válida!", + "ValidationNarrativeErrorMessageTitle": "Os seguintes erros foram detectados durante a validação:", + "DefaultErrorMessage": "Ocorreu um erro!", + "DefaultErrorMessageDetail": "Os detalhes do erro não foram enviados pelo servidor.", + "DefaultErrorMessage401": "Você não etá autenticado!", + "DefaultErrorMessage401Detail": "Você deve autenticar-se para proceder com esta operação.", + "DefaultErrorMessage403": "Você não possui autorização!", + "DefaultErrorMessage403Detail": "Você não tem permissão para executar esta operação!", + "DefaultErrorMessage404": "Recurso não encontrado!", + "DefaultErrorMessage404Detail": "O recurso requisitado não pode ser encontrado pelo servidor!", + "EntityNotFoundErrorMessage": "Não existe uma entidade {0} com código = {1}!", + "Error": "Erro", + "UnhandledException": "Exceção não tratada!", + "401Message": "Autenticação inválida", + "403Message": "Não autorizado", + "404Message": "Página não encontrada", + "500Message": "Erro interno do servidor" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ru.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ru.json new file mode 100644 index 0000000000..28707de134 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ru.json @@ -0,0 +1,23 @@ +{ + "culture": "ru", + "texts": { + "InternalServerErrorMessage": "Во время запроса произошла внутренняя ошибка!", + "ValidationErrorMessage": "Ваш запрос недействителен!", + "ValidationNarrativeErrorMessageTitle": "При проверке были обнаружены следующие ошибки.", + "DefaultErrorMessage": "Произошла ошибка!", + "DefaultErrorMessageDetail": "Сведения об ошибке не были предоставлены сервером.", + "DefaultErrorMessage401": "Вы не авторизированы!", + "DefaultErrorMessage401Detail": "Вы должны Войти, чтобы выполнить эту операцию.", + "DefaultErrorMessage403": "Вы не авторизованы!", + "DefaultErrorMessage403Detail": "У вас нет доступа к выполнению этой операции!", + "DefaultErrorMessage404": "Ресурс не найден!", + "DefaultErrorMessage404Detail": "Запрошенный ресурс не удалось найти на сервере!", + "EntityNotFoundErrorMessage": "Нет объекта {0} с id = {1}!", + "Error": "Ошибка", + "UnhandledException": "Непредвиденная ошибка!", + "401Message": "Неавторизованный", + "403Message": "В доступе отказано", + "404Message": "Страница не найдена", + "500Message": "Внутренняя ошибка сервера" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/sl.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/sl.json new file mode 100644 index 0000000000..68394087a0 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/sl.json @@ -0,0 +1,23 @@ +{ + "culture": "sl", + "texts": { + "InternalServerErrorMessage": "Zgodila se je napaka na strežniku!", + "ValidationErrorMessage": "Vaš zahtevek ni veljaven!", + "ValidationNarrativeErrorMessageTitle": "Pri preverjanju so bile zaznane sledeče napake.", + "DefaultErrorMessage": "Zgodila se je napaka!", + "DefaultErrorMessageDetail": "Strežnik ni poslal podrobnosti o napaki.", + "DefaultErrorMessage401": "Niste prijavljeni!", + "DefaultErrorMessage401Detail": "Za izvedbo te operacije se morate prijaviti.", + "DefaultErrorMessage403": "Nimate pravic!", + "DefaultErrorMessage403Detail": "Nimate dovoljenja za izvedbo te operacije!", + "DefaultErrorMessage404": "Vir ni bil najden!", + "DefaultErrorMessage404Detail": "Zahtevanega vira ni bilo mogoče najti na strežniku!", + "EntityNotFoundErrorMessage": "Ni entitete {0} z id-jem = {1}!", + "Error": "Napaka", + "UnhandledException": "Neobravnavana napaka!", + "401Message": "Nepooblaščeno", + "403Message": "Prepovedano", + "404Message": "Strani ni mogoče najti", + "500Message": "Napaka na strani strežnika" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/tr.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/tr.json new file mode 100644 index 0000000000..de91a0bd7e --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/tr.json @@ -0,0 +1,23 @@ +{ + "culture": "tr", + "texts": { + "InternalServerErrorMessage": "Sayfa işlenirken sunucu tarafında beklenmedik bir hata oluştu!", + "ValidationErrorMessage": "İşleminiz geçerli değil!", + "ValidationNarrativeErrorMessageTitle": "Aşağıdaki hatalar doğrulama sırasında tespit edilmiştir.", + "DefaultErrorMessage": "Bir hata oluştu!", + "DefaultErrorMessageDetail": "Hatanın ne olduğu sunucu tarafından gönderilmedi.", + "DefaultErrorMessage401": "Giriş yapılmamış!", + "DefaultErrorMessage401Detail": "Bu işlemi gerçekleştirmek için uygulamaya giriş yapmalısınız.", + "DefaultErrorMessage403": "İzinsiz işlem!", + "DefaultErrorMessage403Detail": "Bu işlemi gerçekleştirmek için gereken izne sahip değilsiniz.", + "DefaultErrorMessage404": "Kaynak bulunamadı!", + "DefaultErrorMessage404Detail": "İstenilen kaynak sunucuda bulunamadı.", + "EntityNotFoundErrorMessage": "Id değeri {1} olan {0} türünden bir nesne bulunamadı!", + "Error": "Hata", + "UnhandledException": "Yakalanmamış hata!", + "401Message": "Yetkisiz", + "403Message": "Yasak", + "404Message": "Sayfa bulunamadı", + "500Message": "Sunucu tarafında hata" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/vi.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/vi.json new file mode 100644 index 0000000000..245d9f52be --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/vi.json @@ -0,0 +1,18 @@ +{ + "culture": "vi", + "texts": { + "InternalServerErrorMessage": "Có một lỗi nội bộ xảy ra trong quá trình thực hiện yêu cầu của bạn!", + "ValidationErrorMessage": "Yêu cầu của bạn không hợp lệ!", + "ValidationNarrativeErrorMessageTitle": "Các lỗi sau đây đã được phát hiện trong quá trình xác nhận", + "DefaultErrorMessage": "Một lỗi đã xảy ra", + "DefaultErrorMessageDetail": "Chi tiết lỗi không được gửi bởi máy chủ", + "DefaultErrorMessage401": "Bạn chưa được xác thực", + "DefaultErrorMessage401Detail": "Bạn cần đăng nhập để thực hiện thao tác này.", + "DefaultErrorMessage403": "Bạn không được phép!", + "DefaultErrorMessage403Detail": "Bạn không được phép thực hiện thao tác này!", + "DefaultErrorMessage404": "Tài nguyên không tìm thấy!", + "DefaultErrorMessage404Detail": "Tài nguyên được yêu cầu không được tìm thấy trên máy chủ!", + "EntityNotFoundErrorMessage": "Không có thực thể nào {0} với id = {1}!", + "Error": "Lỗi" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json new file mode 100644 index 0000000000..e9843def1b --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json @@ -0,0 +1,23 @@ +{ + "culture": "zh-Hans", + "texts": { + "InternalServerErrorMessage": "对不起,在处理你的请求期间,产生了一个服务器内部错误!", + "ValidationErrorMessage": "你的请求无效!", + "ValidationNarrativeErrorMessageTitle": "验证时发现以下错误.", + "DefaultErrorMessage": "发生错误!", + "DefaultErrorMessageDetail": "服务器未发送错误的详细信息.", + "DefaultErrorMessage401": "未通过身份验证!", + "DefaultErrorMessage401Detail": "你需要进行身份认证(登录)后再执行此操作.", + "DefaultErrorMessage403": "你没有权限!", + "DefaultErrorMessage403Detail": "你不能执行此操作!", + "DefaultErrorMessage404": "未找到资源!", + "DefaultErrorMessage404Detail": "未在服务中找到请求的资源!", + "EntityNotFoundErrorMessage": "实体 {0} 不存在,id = {1}!", + "Error": "错误", + "UnhandledException": "未处理的异常!", + "401Message": "未授权", + "403Message": "禁止访问", + "404Message": "网页未找到", + "500Message": "内部服务器错误" + } +} diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hant.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hant.json new file mode 100644 index 0000000000..bf02b7f053 --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hant.json @@ -0,0 +1,23 @@ +{ + "culture": "zh-Hant", + "texts": { + "InternalServerErrorMessage": "對不起,在處理你的請求期間,產生了一個伺服器內部錯誤!", + "ValidationErrorMessage": "你的請求無效!", + "ValidationNarrativeErrorMessageTitle": "驗證時發現以下錯誤.", + "DefaultErrorMessage": "發生錯誤!", + "DefaultErrorMessageDetail": "伺服器未發送錯誤的詳細信息.", + "DefaultErrorMessage401": "未通過身份驗證!", + "DefaultErrorMessage401Detail": "你需要進行身份認證(登入)後再執行此操作.", + "DefaultErrorMessage403": "你沒有權限!", + "DefaultErrorMessage403Detail": "你不能執行此操作!", + "DefaultErrorMessage404": "未找到資源!", + "DefaultErrorMessage404Detail": "未在服務中找到請求的資源!", + "EntityNotFoundErrorMessage": "實體 {0} 不存在,id = {1}!", + "Error": "錯誤", + "UnhandledException": "未處理的異常!", + "401Message": "未授權", + "403Message": "禁止訪問", + "404Message": "網頁未找到", + "500Message": "內部伺服器錯誤" + } +} diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorInfo.cs similarity index 100% rename from framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs rename to framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorInfo.cs diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorResponse.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorResponse.cs similarity index 100% rename from framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorResponse.cs rename to framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorResponse.cs diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs similarity index 100% rename from framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs rename to framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs diff --git a/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj b/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj index 75dbce3b03..c224811e16 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj +++ b/framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj @@ -20,6 +20,7 @@ + diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs index e4e4f3e802..37eefa8f5a 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs @@ -6,6 +6,7 @@ using Volo.Abp.MultiTenancy; using Volo.Abp.Threading; using Volo.Abp.Validation; using Polly; +using Volo.Abp.ExceptionHandling; namespace Volo.Abp.Http.Client { @@ -14,7 +15,8 @@ namespace Volo.Abp.Http.Client typeof(AbpCastleCoreModule), typeof(AbpThreadingModule), typeof(AbpMultiTenancyModule), - typeof(AbpValidationModule) + typeof(AbpValidationModule), + typeof(AbpExceptionHandlingModule) )] public class AbpHttpClientModule : AbpModule { diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json index 91e81be57f..37b538ce89 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json @@ -1,20 +1,7 @@ { "culture": "ar", "texts": { - "InternalServerErrorMessage": "حدث خطأ داخلي أثناء طلبك!", - "ValidationErrorMessage": "طلبك غير صحيح!", - "ValidationNarrativeErrorMessageTitle": "تم الكشف عن الأخطاء التالية أثناء التحقق .", - "DefaultErrorMessage": "حدث خطأ!", - "DefaultErrorMessageDetail": "لم يتم إرسال تفاصيل الخطأ بواسطة الخادم.", - "DefaultErrorMessage401": "أنت غير مصدق!", - "DefaultErrorMessage401Detail": "يجب عليك تسجيل الدخول لأداء هذه العملية.", - "DefaultErrorMessage403": "أنك غير مخول!", - "DefaultErrorMessage403Detail": "لا يسمح لك بإجراء هذه العملية!", - "DefaultErrorMessage404": "المورد غير موجود!", - "DefaultErrorMessage404Detail": "لم يتم العثور على المورد المطلوب على الخادم!", - "EntityNotFoundErrorMessage": "لا يوجد كيان {0} بالمعرف = {1}!", "Languages": "اللغات", - "Error": "خطأ", "AreYouSure": "هل أنت متأكد؟", "Cancel": "إلغاء", "Clear": "تنظيف", @@ -55,13 +42,8 @@ "ChangePassword": "تغيير كلمة السر", "PersonalInfo": "ملفي الشخصي", "AreYouSureYouWantToCancelEditingWarningMessage": "لم تحفظ التغييرات.", - "UnhandledException": "استثناء غير معالج!", - "401Message": "غير مصرح", - "403Message": "ممنوع", - "404Message": "الصفحة غير موجودة", - "500Message": "خطأ في الخادم الداخلي", "GoHomePage": "اذهب الى الصفحة الرئيسية", "GoBack": "عد", "Search": "بحث" } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json index b42cc1ebe3..85cf515095 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json @@ -1,20 +1,7 @@ { "culture": "cs", "texts": { - "InternalServerErrorMessage": "Během požadavku se vyskytla vnitřní chyba!", - "ValidationErrorMessage": "Neplatný požadavek!", - "ValidationNarrativeErrorMessageTitle": "Během ověřování byly zjištěny následující chyby.", - "DefaultErrorMessage": "Vyskytla se chyba!", - "DefaultErrorMessageDetail": "Server neposkytl detaily k chybě.", - "DefaultErrorMessage401": "Nejste přihlášeni!", - "DefaultErrorMessage401Detail": "K vykonání této operace se musíte nejprve přihlásit.", - "DefaultErrorMessage403": "Nemáte oprávnění!", - "DefaultErrorMessage403Detail": "Není vám dovoleno vykonat tuto operaci!", - "DefaultErrorMessage404": "Prostředek nenalezen!", - "DefaultErrorMessage404Detail": "Vyžádaný prostředek nebyl na serveru nalezen!", - "EntityNotFoundErrorMessage": "Neexistující entita {0} s id = {1}!", "Languages": "Jazyky", - "Error": "Chyba", "AreYouSure": "Jste si jisti?", "Cancel": "Zrušit", "Yes": "Ano", @@ -54,11 +41,6 @@ "ChangePassword": "Změnit heslo", "PersonalInfo": "Můj profil", "AreYouSureYouWantToCancelEditingWarningMessage": "Máte neuložené změny.", - "UnhandledException": "Neošetřená výjimka!", - "401Message": "Neoprávněno", - "403Message": "Zakázáno", - "404Message": "Stránka nenalezena", - "500Message": "Interní chyba serveru", "GoHomePage": "Přejít na domovskou stránku", "GoBack": "Jít zpět", "Search": "Vyhledávání" diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json index 9727a11823..64bb0f99b5 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json @@ -1,20 +1,7 @@ { "culture": "de", "texts": { - "InternalServerErrorMessage": "Während Ihrer Anfrage ist ein interner Fehler aufgetreten!", - "ValidationErrorMessage": "Ihre Anfrage ist nicht gültig!", - "ValidationNarrativeErrorMessageTitle": "Die folgenden Fehler wurden bei der Validierung entdeckt.", - "DefaultErrorMessage": "Ein Fehler ist aufgetreten!", - "DefaultErrorMessageDetail": "Es wurden keine Fehlerdetails vom Server gesendet.", - "DefaultErrorMessage401": "Sie sind nicht authentifiziert.", - "DefaultErrorMessage401Detail": "Sie sollten sich anmelden, um diese Operation durchzuführen.", - "DefaultErrorMessage403": "Sie sind nicht autorisiert!", - "DefaultErrorMessage403Detail": "Es ist Ihnen nicht erlaubt, diese Operation durchzuführen!", - "DefaultErrorMessage404": "Ressource nicht gefunden!", - "DefaultErrorMessage404Detail": "Die angeforderte Ressource konnte auf dem Server nicht gefunden werden!", - "EntityNotFoundErrorMessage": "Es gibt keine Entität {0} mit id = {1}!", "Languages": "Sprachen", - "Error": "Fehler", "AreYouSure": "Sind Sie sicher?", "Cancel": "Abbrechen", "Yes": "Ja", @@ -52,11 +39,6 @@ "ChangePassword": "Passwort ändern", "PersonalInfo": "Mein Profil", "AreYouSureYouWantToCancelEditingWarningMessage": "Sie haben ungespeicherte Änderungen.", - "UnhandledException": "Unerwartete Ausnahme!", - "401Message": "Unauthorisiert", - "403Message": "Verboten", - "404Message": "Seite nicht gefunden", - "500Message": "Interner Server Fehler", "GoHomePage": "Zur Startseite", "GoBack": "Zurück" } diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json index be63781aaa..72c53e8adf 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json @@ -1,20 +1,7 @@ { "culture": "en", "texts": { - "InternalServerErrorMessage": "An internal error occurred during your request!", - "ValidationErrorMessage": "Your request is not valid!", - "ValidationNarrativeErrorMessageTitle": "The following errors were detected during validation.", - "DefaultErrorMessage": "An error has occurred!", - "DefaultErrorMessageDetail": "Error detail not sent by server.", - "DefaultErrorMessage401": "You are not authenticated!", - "DefaultErrorMessage401Detail": "You should sign in to perform this operation.", - "DefaultErrorMessage403": "You are not authorized!", - "DefaultErrorMessage403Detail": "You are not allowed to perform this operation!", - "DefaultErrorMessage404": "Resource not found!", - "DefaultErrorMessage404Detail": "The resource requested could not found on the server!", - "EntityNotFoundErrorMessage": "There is no entity {0} with id = {1}!", "Languages": "Languages", - "Error": "Error", "AreYouSure": "Are you sure?", "Cancel": "Cancel", "Clear": "Clear", @@ -55,11 +42,6 @@ "ChangePassword": "Change password", "PersonalInfo": "My profile", "AreYouSureYouWantToCancelEditingWarningMessage": "You have unsaved changes.", - "UnhandledException": "Unhandled exception!", - "401Message": "Unauthorized", - "403Message": "Forbidden", - "404Message": "Page not found", - "500Message": "Internal Server Error", "GoHomePage": "Go to the homepage", "GoBack": "Go back", "Search": "Search", diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json index 69ac5dfc56..fb0bc45903 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json @@ -1,20 +1,7 @@ { "culture": "es", "texts": { - "InternalServerErrorMessage": "Ocurrió un error interno en su pedido!", - "ValidationErrorMessage": "Su pedido no es válido!", - "ValidationNarrativeErrorMessageTitle": "Los siguientes errores se encontraton durante la validación.", - "DefaultErrorMessage": "Ocurrió un error!", - "DefaultErrorMessageDetail": "El servidor no envió el detalle del error.", - "DefaultErrorMessage401": "Usted no ha iniciado sessión!", - "DefaultErrorMessage401Detail": "Debe iniciar sessión para ejecutar esta operación.", - "DefaultErrorMessage403": "Usted no está autorizado!", - "DefaultErrorMessage403Detail": "Usted no puede hacer esta operación!", - "DefaultErrorMessage404": "No se encontró el recurso!", - "DefaultErrorMessage404Detail": "El recurso solicitado no se encontró en el servidor!", - "EntityNotFoundErrorMessage": "No hay una entidad {0} con el id = {1}!", "Languages": "Lenguajes", - "Error": "Error", "AreYouSure": "¿Está seguro?", "Cancel": "Cancelar", "Yes": "Si", @@ -52,13 +39,8 @@ "ChangePassword": "Cambiar contraseña", "PersonalInfo": "My perfil", "AreYouSureYouWantToCancelEditingWarningMessage": "Tiene cambios sin guardar.", - "UnhandledException": "Excepción no controlada!", - "401Message": "No autorizado", - "403Message": "Prohibido", - "404Message": "La página no existe", - "500Message": "Error interno del servidor", "GoHomePage": "Ir a la página principal", "GoBack": "Atras", "Search": "Buscar" } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json index ce03c28549..8084270436 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json @@ -1,69 +1,51 @@ { - "culture": "fr", - "texts": { - "InternalServerErrorMessage": "Une erreur interne s'est produite lors de votre demande!", - "ValidationErrorMessage": "Votre demande n'est pas valide!", - "ValidationNarrativeErrorMessageTitle": "Les erreurs suivantes ont été détectées lors de la validation.", - "DefaultErrorMessage": "Une erreur est survenue!", - "DefaultErrorMessageDetail": "Détails de l'erreur non envoyés par le serveur.", - "DefaultErrorMessage401": "Vous n'êtes pas authentifié!", - "DefaultErrorMessage401Detail": "Vous devez vous connecter pour effectuer cette opération.", - "DefaultErrorMessage403": "Vous n'êtes pas autorisé!", - "DefaultErrorMessage403Detail": "Vous n'êtes pas autorisé à effectuer cette opération!", - "DefaultErrorMessage404": "Ressource introuvable!", - "DefaultErrorMessage404Detail": "La ressource demandée est introuvable sur le serveur!", - "EntityNotFoundErrorMessage": "Il n'y a pas d'entité {0} avec id = {1}!", - "Languages": "Langues", - "Error": "Erreur", - "AreYouSure": "Êtes-vous sûr?", - "Cancel": "Annuler", - "Clear": "Clair", - "Yes": "Oui", - "No": "Non", - "Ok": "D'accord", - "Close": "Fermer", - "Save": "Enregistrer", - "SavingWithThreeDot": "Enregistrement...", - "Actions": "Actions", - "Delete": "Supprimer", - "Edit": "Modifier", - "Refresh": "Actualiser", - "Language": "Langue", - "LoadMore": "Charger plus", - "ProcessingWithThreeDot": "Traitement...", - "LoadingWithThreeDot": "Chargement...", - "Welcome": "Bienvenue", - "Login": "Se connecter", - "Register": "S'inscrire", - "Logout": "Se déconnecter", - "Submit": "Envoyer", - "Back": "Précédent", - "PagerSearch": "Recherche", - "PagerNext": "prochain", - "PagerPrevious": "Précédent", - "PagerFirst": "Première", - "PagerLast": "Dernier", - "PagerInfo": "Affichage de _START_ à _END_ entrées sur _TOTAL_", - "PagerInfo{0}{1}{2}": "Affichage de {0} à {1} sur {2} entrées", - "PagerInfoEmpty": "Affichage de 0 à 0 sur 0 entrées", - "PagerInfoFiltered": "(filtré à partir des entrées _MAX_ totale)", - "NoDataAvailableInDatatable": "Aucune donnée disponible", - "Total": "Total", - "Selected": "Sélectionné", - "PagerShowMenuEntries": "Afficher les entrées _MENU_", - "DatatableActionDropdownDefaultText": "Actions", - "ChangePassword": "Changer le mot de passe", - "PersonalInfo": "Mon profil", - "AreYouSureYouWantToCancelEditingWarningMessage": "Vous avez des changements non enregistrés.", - "UnhandledException": "Exception non-gérée!", - "401Message": "Non autorisé", - "403Message": "Interdit", - "404Message": "Page introuvable", - "500Message": "Erreur Interne du Serveur", - "GoHomePage": "Aller à la page d'accueil", - "GoBack": "Retour", - "Search": "Recherche", - "ItemWillBeDeletedMessageWithFormat": "{0} sera supprimé!", - "ItemWillBeDeletedMessage": "Cet objet va être supprimé!" - } -} \ No newline at end of file + "culture": "fr", + "texts": { + "Languages": "Langues", + "AreYouSure": "Êtes-vous sûr?", + "Cancel": "Annuler", + "Clear": "Clair", + "Yes": "Oui", + "No": "Non", + "Ok": "D'accord", + "Close": "Fermer", + "Save": "Enregistrer", + "SavingWithThreeDot": "Enregistrement...", + "Actions": "Actions", + "Delete": "Supprimer", + "Edit": "Modifier", + "Refresh": "Actualiser", + "Language": "Langue", + "LoadMore": "Charger plus", + "ProcessingWithThreeDot": "Traitement...", + "LoadingWithThreeDot": "Chargement...", + "Welcome": "Bienvenue", + "Login": "Se connecter", + "Register": "S'inscrire", + "Logout": "Se déconnecter", + "Submit": "Envoyer", + "Back": "Précédent", + "PagerSearch": "Recherche", + "PagerNext": "prochain", + "PagerPrevious": "Précédent", + "PagerFirst": "Première", + "PagerLast": "Dernier", + "PagerInfo": "Affichage de _START_ à _END_ entrées sur _TOTAL_", + "PagerInfo{0}{1}{2}": "Affichage de {0} à {1} sur {2} entrées", + "PagerInfoEmpty": "Affichage de 0 à 0 sur 0 entrées", + "PagerInfoFiltered": "(filtré à partir des entrées _MAX_ totale)", + "NoDataAvailableInDatatable": "Aucune donnée disponible", + "Total": "Total", + "Selected": "Sélectionné", + "PagerShowMenuEntries": "Afficher les entrées _MENU_", + "DatatableActionDropdownDefaultText": "Actions", + "ChangePassword": "Changer le mot de passe", + "PersonalInfo": "Mon profil", + "AreYouSureYouWantToCancelEditingWarningMessage": "Vous avez des changements non enregistrés.", + "GoHomePage": "Aller à la page d'accueil", + "GoBack": "Retour", + "Search": "Recherche", + "ItemWillBeDeletedMessageWithFormat": "{0} sera supprimé!", + "ItemWillBeDeletedMessage": "Cet objet va être supprimé!" + } +} diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json index 6198aa360f..c65715f8a5 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json @@ -1,20 +1,7 @@ { "culture": "nl", "texts": { - "InternalServerErrorMessage": "Er is een interne fout opgetreden tijdens uw verzoek!", - "ValidationErrorMessage": "Uw verzoek is niet geldig!", - "ValidationNarrativeErrorMessageTitle": "Tijdens de validatie zijn de volgende fouten gedetecteerd.", - "DefaultErrorMessage": "er is een fout opgetreden!", - "DefaultErrorMessageDetail": "Foutdetails niet verzonden door server.", - "DefaultErrorMessage401": "U bent niet geverifieerd!", - "DefaultErrorMessage401Detail": "U moet inloggen om deze bewerking uit te voeren.", - "DefaultErrorMessage403": "U bent niet geautoriseerd!", - "DefaultErrorMessage403Detail": "U mag deze bewerking niet uitvoeren!", - "DefaultErrorMessage404": "Bron niet gevonden!", - "DefaultErrorMessage404Detail": "De gevraagde bron kan niet worden gevonden op de server!", - "EntityNotFoundErrorMessage": "Er is geen entiteit {0} met id = {1}!", "Languages": "Talen", - "Error": "Fout", "AreYouSure": "Bent u zeker?", "Cancel": "Annuleren", "Yes": "Ja", @@ -52,11 +39,6 @@ "ChangePassword": "Verander wachtwoord", "PersonalInfo": "Mijn profiel", "AreYouSureYouWantToCancelEditingWarningMessage": "U heeft nog niet-opgeslagen wijzigingen.", - "UnhandledException": "Onverwerkte uitzondering!", - "401Message": "Ongeautoriseerd", - "403Message": "Verboden", - "404Message": "Pagina niet gevonden", - "500Message": "Interne Server Fout", "GoHomePage": "Ga naar de homepage", "GoBack": "Ga terug", "Search": "Zoeken" diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json index 1be12a51cf..7c6738e0bd 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json @@ -1,19 +1,6 @@ { "culture": "pl-PL", "texts": { - "InternalServerErrorMessage": "Błąd wewnętrzny serwera podczas przetwarzania żądania!", - "ValidationErrorMessage": "Twoje żądanie jest niepoprawnie!", - "ValidationNarrativeErrorMessageTitle": "Wykryto następujące błędy podczas walidacji.", - "DefaultErrorMessage": "Wystąpił błąd!", - "DefaultErrorMessageDetail": "Treść błędu nie została wysłana z serwera.", - "DefaultErrorMessage401": "Nie jesteś zalogowany!", - "DefaultErrorMessage401Detail": "Musisz się zalogować, aby wykonać tą operację.", - "DefaultErrorMessage403": "Nie jesteś zautentykowany!", - "DefaultErrorMessage403Detail": "Nie masz uprawnień do wykonania tej operacji!", - "DefaultErrorMessage404": "Nie znaleziono zasobu!", - "DefaultErrorMessage404Detail": "Nie znaleziono zasobu z żądania na serwerze!", - "EntityNotFoundErrorMessage": "Nie istnieje encja {0} z id = {1}!", - "Error": "Błąd", "AreYouSure": "Czy jesteś pewien?", "Cancel": "Anuluj", "Yes": "Tak", @@ -49,4 +36,4 @@ "PersonalInfo": "Mój profil", "AreYouSureYouWantToCancelEditingWarningMessage": "Masz niezapisane zmiany." } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json index 9d69ba1ef8..0aa20797c9 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json @@ -1,19 +1,6 @@ { "culture": "pt-BR", "texts": { - "InternalServerErrorMessage": "Um erro interno ocorreu durante a requisição!", - "ValidationErrorMessage": "Sua requisição não é válida!", - "ValidationNarrativeErrorMessageTitle": "Os seguintes erros foram detectados durante a validação:", - "DefaultErrorMessage": "Ocorreu um erro!", - "DefaultErrorMessageDetail": "Os detalhes do erro não foram enviados pelo servidor.", - "DefaultErrorMessage401": "Você não etá autenticado!", - "DefaultErrorMessage401Detail": "Você deve autenticar-se para proceder com esta operação.", - "DefaultErrorMessage403": "Você não possui autorização!", - "DefaultErrorMessage403Detail": "Você não tem permissão para executar esta operação!", - "DefaultErrorMessage404": "Recurso não encontrado!", - "DefaultErrorMessage404Detail": "O recurso requisitado não pode ser encontrado pelo servidor!", - "EntityNotFoundErrorMessage": "Não existe uma entidade {0} com código = {1}!", - "Error": "Erro", "AreYouSure": "Você tem certeza?", "Cancel": "Cancelar", "Yes": "Sim", @@ -48,13 +35,8 @@ "ChangePassword": "Alterar Senha", "PersonalInfo": "Perfil", "AreYouSureYouWantToCancelEditingWarningMessage": "Há alterações não salvas.", - "UnhandledException": "Exceção não tratada!", - "401Message": "Autenticação inválida", - "403Message": "Não autorizado", - "404Message": "Página não encontrada", - "500Message": "Erro interno do servidor", "GoHomePage": "Voltar à página principal", "GoBack": "Voltar", "Search": "Procurar" } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json index 12ccca117b..7b4014ebef 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json @@ -1,20 +1,7 @@ { "culture": "ru", "texts": { - "InternalServerErrorMessage": "Во время запроса произошла внутренняя ошибка!", - "ValidationErrorMessage": "Ваш запрос недействителен!", - "ValidationNarrativeErrorMessageTitle": "При проверке были обнаружены следующие ошибки.", - "DefaultErrorMessage": "Произошла ошибка!", - "DefaultErrorMessageDetail": "Сведения об ошибке не были предоставлены сервером.", - "DefaultErrorMessage401": "Вы не авторизированы!", - "DefaultErrorMessage401Detail": "Вы должны Войти, чтобы выполнить эту операцию.", - "DefaultErrorMessage403": "Вы не авторизованы!", - "DefaultErrorMessage403Detail": "У вас нет доступа к выполнению этой операции!", - "DefaultErrorMessage404": "Ресурс не найден!", - "DefaultErrorMessage404Detail": "Запрошенный ресурс не удалось найти на сервере!", - "EntityNotFoundErrorMessage": "Нет объекта {0} с id = {1}!", "Languages": "Языки", - "Error": "Ошибка", "AreYouSure": "Вы уверены?", "Cancel": "Отмена", "Yes": "Да", @@ -51,11 +38,6 @@ "ChangePassword": "Изменить пароль", "PersonalInfo": "Мой профиль", "AreYouSureYouWantToCancelEditingWarningMessage": "У вас есть несохраненные изменения.", - "UnhandledException": "Непредвиденная ошибка!", - "401Message": "Неавторизованный", - "403Message": "В доступе отказано", - "404Message": "Страница не найдена", - "500Message": "Внутренняя ошибка сервера", "GoHomePage": "Вернуться на главную страницу", "GoBack": "Вернуться назад", "Search": "поиск" diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json index 2bbdb2c09d..2b285d97e4 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json @@ -1,20 +1,7 @@ { "culture": "sl", "texts": { - "InternalServerErrorMessage": "Zgodila se je napaka na strežniku!", - "ValidationErrorMessage": "Vaš zahtevek ni veljaven!", - "ValidationNarrativeErrorMessageTitle": "Pri preverjanju so bile zaznane sledeče napake.", - "DefaultErrorMessage": "Zgodila se je napaka!", - "DefaultErrorMessageDetail": "Strežnik ni poslal podrobnosti o napaki.", - "DefaultErrorMessage401": "Niste prijavljeni!", - "DefaultErrorMessage401Detail": "Za izvedbo te operacije se morate prijaviti.", - "DefaultErrorMessage403": "Nimate pravic!", - "DefaultErrorMessage403Detail": "Nimate dovoljenja za izvedbo te operacije!", - "DefaultErrorMessage404": "Vir ni bil najden!", - "DefaultErrorMessage404Detail": "Zahtevanega vira ni bilo mogoče najti na strežniku!", - "EntityNotFoundErrorMessage": "Ni entitete {0} z id-jem = {1}!", "Languages": "Jeziki", - "Error": "Napaka", "AreYouSure": "Ali ste prepričani?", "Cancel": "Prekliči", "Yes": "Da", @@ -52,11 +39,6 @@ "ChangePassword": "Zamenjaj geslo", "PersonalInfo": "Moj profil", "AreYouSureYouWantToCancelEditingWarningMessage": "Imate neshranjene spremembe.", - "UnhandledException": "Neobravnavana napaka!", - "401Message": "Nepooblaščeno", - "403Message": "Prepovedano", - "404Message": "Strani ni mogoče najti", - "500Message": "Napaka na strani strežnika", "GoHomePage": "Pojdi na osnovno stran", "GoBack": "Nazaj", "Search": "Iskanje" diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json index 087e96a021..630902d99e 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json @@ -1,20 +1,7 @@ { "culture": "tr", "texts": { - "InternalServerErrorMessage": "Sayfa işlenirken sunucu tarafında beklenmedik bir hata oluştu!", - "ValidationErrorMessage": "İşleminiz geçerli değil!", - "ValidationNarrativeErrorMessageTitle": "Aşağıdaki hatalar doğrulama sırasında tespit edilmiştir.", - "DefaultErrorMessage": "Bir hata oluştu!", - "DefaultErrorMessageDetail": "Hatanın ne olduğu sunucu tarafından gönderilmedi.", - "DefaultErrorMessage401": "Giriş yapılmamış!", - "DefaultErrorMessage401Detail": "Bu işlemi gerçekleştirmek için uygulamaya giriş yapmalısınız.", - "DefaultErrorMessage403": "İzinsiz işlem!", - "DefaultErrorMessage403Detail": "Bu işlemi gerçekleştirmek için gereken izne sahip değilsiniz.", - "DefaultErrorMessage404": "Kaynak bulunamadı!", - "DefaultErrorMessage404Detail": "İstenilen kaynak sunucuda bulunamadı.", - "EntityNotFoundErrorMessage": "Id değeri {1} olan {0} türünden bir nesne bulunamadı!", "Languages": "Diller", - "Error": "Hata", "AreYouSure": "Emin misiniz?", "Cancel": "Vazgeç", "Clear": "Temizle", @@ -55,11 +42,6 @@ "ChangePassword": "Şifre değiştir", "PersonalInfo": "Profilim", "AreYouSureYouWantToCancelEditingWarningMessage": "Kaydedilmemiş değişiklikler var.", - "UnhandledException": "Yakalanmamış hata!", - "401Message": "Yetkisiz", - "403Message": "Yasak", - "404Message": "Sayfa bulunamadı", - "500Message": "Sunucu tarafında hata", "GoHomePage": "Ana sayfaya git", "GoBack": "Geri dön", "Search": "Arama", diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json index 00f6c8f195..239622e438 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json @@ -1,19 +1,6 @@ { "culture": "vi", "texts": { - "InternalServerErrorMessage": "Có một lỗi nội bộ xảy ra trong quá trình thực hiện yêu cầu của bạn!", - "ValidationErrorMessage": "Yêu cầu của bạn không hợp lệ!", - "ValidationNarrativeErrorMessageTitle": "Các lỗi sau đây đã được phát hiện trong quá trình xác nhận", - "DefaultErrorMessage": "Một lỗi đã xảy ra", - "DefaultErrorMessageDetail": "Chi tiết lỗi không được gửi bởi máy chủ", - "DefaultErrorMessage401": "Bạn chưa được xác thực", - "DefaultErrorMessage401Detail": "Bạn cần đăng nhập để thực hiện thao tác này.", - "DefaultErrorMessage403": "Bạn không được phép!", - "DefaultErrorMessage403Detail": "Bạn không được phép thực hiện thao tác này!", - "DefaultErrorMessage404": "Tài nguyên không tìm thấy!", - "DefaultErrorMessage404Detail": "Tài nguyên được yêu cầu không được tìm thấy trên máy chủ!", - "EntityNotFoundErrorMessage": "Không có thực thể nào {0} với id = {1}!", - "Error": "Lỗi", "AreYouSure": "Bạn có chắc không ?", "Cancel": "Hủy bỏ", "Yes": "Đồng ý", diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json index 77fae4351a..ec85d90ac9 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json @@ -1,20 +1,7 @@ { "culture": "zh-Hans", "texts": { - "InternalServerErrorMessage": "对不起,在处理你的请求期间,产生了一个服务器内部错误!", - "ValidationErrorMessage": "你的请求无效!", - "ValidationNarrativeErrorMessageTitle": "验证时发现以下错误.", - "DefaultErrorMessage": "发生错误!", - "DefaultErrorMessageDetail": "服务器未发送错误的详细信息.", - "DefaultErrorMessage401": "未通过身份验证!", - "DefaultErrorMessage401Detail": "你需要进行身份认证(登录)后再执行此操作.", - "DefaultErrorMessage403": "你没有权限!", - "DefaultErrorMessage403Detail": "你不能执行此操作!", - "DefaultErrorMessage404": "未找到资源!", - "DefaultErrorMessage404Detail": "未在服务中找到请求的资源!", - "EntityNotFoundErrorMessage": "实体 {0} 不存在,id = {1}!", "Languages": "语言", - "Error": "错误", "AreYouSure": "你确定吗?", "Cancel": "取消", "Yes": "是", @@ -49,11 +36,6 @@ "ChangePassword": "修改密码", "PersonalInfo": "个人信息", "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改.", - "UnhandledException": "未处理的异常!", - "401Message": "未授权", - "403Message": "禁止访问", - "404Message": "网页未找到", - "500Message": "内部服务器错误", "GoHomePage": "返回主页", "GoBack": "返回", "Search" : "搜索" diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json index c595a26476..ab529791be 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json @@ -1,20 +1,7 @@ { "culture": "zh-Hant", "texts": { - "InternalServerErrorMessage": "對不起,在處理你的請求期間,產生了一個伺服器內部錯誤!", - "ValidationErrorMessage": "你的請求無效!", - "ValidationNarrativeErrorMessageTitle": "驗證時發現以下錯誤.", - "DefaultErrorMessage": "發生錯誤!", - "DefaultErrorMessageDetail": "伺服器未發送錯誤的詳細信息.", - "DefaultErrorMessage401": "未通過身份驗證!", - "DefaultErrorMessage401Detail": "你需要進行身份認證(登入)後再執行此操作.", - "DefaultErrorMessage403": "你沒有權限!", - "DefaultErrorMessage403Detail": "你不能執行此操作!", - "DefaultErrorMessage404": "未找到資源!", - "DefaultErrorMessage404Detail": "未在服務中找到請求的資源!", - "EntityNotFoundErrorMessage": "實體 {0} 不存在,id = {1}!", "Languages": "語系", - "Error": "錯誤", "AreYouSure": "你確定嗎?", "Cancel": "取消", "Clear": "清除", @@ -55,11 +42,6 @@ "ChangePassword": "修改密碼", "PersonalInfo": "個人資料", "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改", - "UnhandledException": "未處理的異常!", - "401Message": "未授權", - "403Message": "禁止訪問", - "404Message": "網頁未找到", - "500Message": "內部伺服器錯誤", "GoHomePage": "返回首頁", "GoBack": "返回", "Search": "查詢", diff --git a/framework/src/Volo.Abp.UI/Volo.Abp.UI.csproj b/framework/src/Volo.Abp.UI/Volo.Abp.UI.csproj index acff7d004b..66aa7e93ea 100644 --- a/framework/src/Volo.Abp.UI/Volo.Abp.UI.csproj +++ b/framework/src/Volo.Abp.UI/Volo.Abp.UI.csproj @@ -20,7 +20,7 @@ - + diff --git a/framework/src/Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs b/framework/src/Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs index 90a9aa45f6..5191063f98 100644 --- a/framework/src/Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs +++ b/framework/src/Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs @@ -1,5 +1,6 @@ using Localization.Resources.AbpUi; -using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.ExceptionHandling; +using Volo.Abp.ExceptionHandling.Localization; using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; @@ -7,7 +8,7 @@ using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.UI { [DependsOn( - typeof(AbpLocalizationModule) + typeof(AbpExceptionHandlingModule) )] public class AbpUiModule : AbpModule { @@ -22,6 +23,7 @@ namespace Volo.Abp.UI { options.Resources .Add("en") + .AddBaseTypes(typeof(AbpExceptionHandlingResource)) .AddVirtualJson("/Localization/Resources/AbpUi"); }); } diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index e5847e8a7c..52fb4ef2da 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -92,6 +92,7 @@ $projects = ( "framework/src/Volo.Abp.EventBus", "framework/src/Volo.Abp.EventBus.RabbitMQ", "framework/src/Volo.Abp.EventBus.Kafka", + "framework/src/Volo.Abp.ExceptionHandling", "framework/src/Volo.Abp.Features", "framework/src/Volo.Abp.FluentValidation", "framework/src/Volo.Abp.GlobalFeatures", From 708039a9637b64e5d1935565952f436facc6f8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Oct 2020 16:30:39 +0300 Subject: [PATCH 106/114] Resolved #5702: Blazor: Set default culture on application initiailization --- .../AbpWebAssemblyHostBuilderExtensions.cs | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs index ef5ee76722..5622d99cfb 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; using System.Reflection; using System.Threading.Tasks; using JetBrains.Annotations; @@ -6,6 +7,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Volo.Abp; using Volo.Abp.AspNetCore.Components.WebAssembly; +using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.Modularity; namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting @@ -30,7 +32,7 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting return application; } - public static async Task InitializeAsync( + public async static Task InitializeAsync( [NotNull] this IAbpApplicationWithExternalServiceProvider application, [NotNull] IServiceProvider serviceProvider) { @@ -41,10 +43,29 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting using (var scope = serviceProvider.CreateScope()) { - foreach (var service in scope.ServiceProvider.GetServices()) - { - await service.InitializeAsync(); - } + await InitializeModulesAsync(scope.ServiceProvider); + SetCurrentLanguage(scope); + } + } + + private async static Task InitializeModulesAsync(IServiceProvider serviceProvider) + { + foreach (var service in serviceProvider.GetServices()) + { + await service.InitializeAsync(); + } + } + + private static void SetCurrentLanguage(IServiceScope scope) + { + var configurationClient = scope.ServiceProvider.GetRequiredService(); + var configuration = configurationClient.Get(); + var cultureName = configuration.Localization?.CurrentCulture?.CultureName; + if (!cultureName.IsNullOrEmpty()) + { + var culture = new CultureInfo(cultureName); + CultureInfo.DefaultThreadCurrentCulture = culture; + CultureInfo.DefaultThreadCurrentUICulture = culture; } } } From 8498a6e638d92f0834be234606e136c2fa5d9f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Oct 2020 17:12:57 +0300 Subject: [PATCH 107/114] Documented the page alerts --- docs/en/UI/AspNetCore/Page-Alerts.md | 84 +++++++++++++++++++ docs/en/docs-nav.json | 4 + docs/en/images/page-alert-account-layout.png | Bin 0 -> 24878 bytes docs/en/images/page-alert-example.png | Bin 0 -> 40946 bytes 4 files changed, 88 insertions(+) create mode 100644 docs/en/UI/AspNetCore/Page-Alerts.md create mode 100644 docs/en/images/page-alert-account-layout.png create mode 100644 docs/en/images/page-alert-example.png diff --git a/docs/en/UI/AspNetCore/Page-Alerts.md b/docs/en/UI/AspNetCore/Page-Alerts.md new file mode 100644 index 0000000000..cbf6eb493d --- /dev/null +++ b/docs/en/UI/AspNetCore/Page-Alerts.md @@ -0,0 +1,84 @@ +# ASP.NET Core MVC / Razor Pages: Page Alerts + +It is common to show error, warning or information alerts to inform the user. An example *Service Interruption* alert is shown below: + +![page-alert-example](../../images/page-alert-example.png) + +## Basic Usage + +If you directly or indirectly inherit from `AbpPageModel`, you can use the `Alerts` property to add alerts to be rendered after the request completes. + +**Example: Show a Warning alert** + +```csharp +namespace MyProject.Web.Pages +{ + public class IndexModel : MyProjectPageModel //or inherit from AbpPageModel + { + public void OnGet() + { + Alerts.Warning( + text: "We will have a service interruption between 02:00 AM and 04:00 AM at October 23, 2023!", + title: "Service Interruption" + ); + } + } +} +``` + +This usage renders an alert that was shown above. If you need to localize the messages, you can always use the standard [localization](../../Localization.md) system. + +### Exceptions / Invalid Model States + +It is typical to show alerts when you manually handle exceptions (with try/catch statements) or want to handle `!ModelState.IsValid` case and warn the user. For example, the Account Module shows a warning if user enters an incorrect username or password: + +![page-alert-account-layout](../../images/page-alert-account-layout.png) + +> Note that you generally don't need to manually handle exceptions since ABP Framework provides an automatic [exception handling](../../Exception-Handling.md) system. + +### Alert Types + +`Warning` is used to show a warning alert. Other common methods are `Info`, `Danger` and `Success`. + +Beside the standard methods, you can use the `Alerts.Add` method by passing an `AlertType` `enum` with one of these values: `Default`, `Primary`, `Secondary`, `Success`, `Danger`, `Warning`, `Info`, `Light`, `Dark`. + +### Dismissible + +All alert methods gets an optional `dismissible` parameter. Default value is `true` which makes the alert box dismissible. Set it to `false` to create a sticky alert box. + +## IAlertManager + +If you need to add alert messages from another part of your code, you can inject the `IAlertManager` service and use its `Alerts` list. + +**Example: Inject the `IAlertManager`** + +```csharp +using Volo.Abp.AspNetCore.Mvc.UI.Alerts; +using Volo.Abp.DependencyInjection; + +namespace MyProject.Web.Pages +{ + public class MyService : ITransientDependency + { + private readonly IAlertManager _alertManager; + + public MyService(IAlertManager alertManager) + { + _alertManager = alertManager; + } + + public void Test() + { + _alertManager.Alerts.Add(AlertType.Danger, "Test message!"); + } + } +} +``` + +## Notes + +### AJAX Requests + +Page Alert system was designed to be used in a regular full page request. It is not for AJAX/partial requests. The alerts are rendered in the page layout, so a full page refresh is needed. + +For AJAX requests, it is more proper to throw exceptions (e.g. `UserFriendlyException`). See the [exception handling](../../Exception-Handling.md) document. \ No newline at end of file diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index b75d98389a..9d43da62b4 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -402,6 +402,10 @@ "text": "Navigation / Menus", "path": "UI/AspNetCore/Navigation-Menu.md" }, + { + "text": "Page Alerts", + "path": "UI/AspNetCore/Page-Alerts.md" + }, { "text": "Client Side Package Management", "path": "UI/AspNetCore/Client-Side-Package-Management.md" diff --git a/docs/en/images/page-alert-account-layout.png b/docs/en/images/page-alert-account-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..2442cb5d143dc8691c3db3caff94ff1eb10cb100 GIT binary patch literal 24878 zcmd43Wl$wi6D3%MpcXxMpcXw#q-C_A=VfV=?FZ1Tfb6%*Nj3^@fS9kyb5XHrW6aWA$`t!Jl1^>JFX;a{z<`uA8~`8&#DxTuey5$TyXejR`+&KWja_|ddC;lL&;J8%l+eyzgNh*l zCM+P2fr%pD%}7cUHiGf%8{V&rcKH1G#PgZ;lcs6BX0lE`jRL6Y%qi%fm7Od9#IMEO zJU8PG?BVpQR{)ZLN1w72a1_v?xV|1qz;6hMFC=|*ehsgEKmqLWK>Ew z?jNmuLQA%-3?p9HZ0rOd(s+1KIe3_x5_-0FbtM^CQP2g!2UrT{9=4h3Z%!Sl-Bu%OcKt#FklS zzpfz=>^v&>O%dlKHOc4f->XnSZN9#NC_9Jh(XqxQxrcW;R4#5B^;YAsIPFZFg-NRx?m6`5z%8ZHK zJh;V>C9E@pe$Y=xglX?Sr8L{uOHMp!EVnV<^%Kg$uKhEJlNQ(j9ZP&kRdw}brPnE| z8_NZnEHct=#Zy_H^)4nXlM|YNbFh_}GK9Do`6tL0jv=^#Sa)W{{iBnj7-e?mqyy|k zjdt+Y05TIgMyeL=9{czOz9D&X&%+S4k(;m)Tt;uAFaVe^r<byoxd&POOt8ghVN zHR0d@gY)SL_nK)eeqeL*>3$wh;X{sEQ$1Q6FbH(#_mNV%5v|cg6mI5Jc1xX_?jIdg zQqaT@PFP%FqebXJdv%q5c%5cpbLRDc$qO-ws#ZXm>PzM;cFCSXgasPb1) zM+pg(EU8CqL_NDX@WWa(=&to4l2mufz!FgIipUA_$}XlOvmwDbMu zn?q!QA~q-LRjTK+$8@=*k{+zX)`ty3p0P+j-}U zOdasNEC3B96r``V+lOy-$=O%)pXAozb{#QdPPOoUXyWtOX}qZEemX>r_x2#6P5CL> znS$fZQpV;(vK9Y#6@lNasv-}la&nG0|2pcq?~EfMgGg8iC^`ww^V$AsuRiy-L_3$; zGwNUl^}lqYHJVHul<4OMHZMwsOGxEI8%Zt7S0cyD=`9|dKe`&p7lUyuSk^o`<1Saq zehDk$YB0^tc5Tb0F8p5Fm&XosPp~Ixq{EqHNzeY*v}E`Yjvyr%@F8KeI|y^ybHmf8 zG?kchoI5Gc@gQ6ylF_wwn4D40PhcTOVNyx$t{+7rsZiHGG{mGxE6k5;n5J5h4nzqZ(f zuXBY-D$>$G5>U#(Z|3GIj}aDiVkG~Iy@{{6Hl9oJhq zvk7rUesCNbU^y`JkNLnc(9KuapepE+wF=0}Arn63cD?QT9$T??wFfiUKyZ^eMO$N4 zd&WHxe;@9EijJ?CXv@TFumVXfEN9=?U?YWiWk;fRGtsO#Nz{bJ(xO~mTAvD!RH5+= z_JrM83?@06N}9KJzgDn@O;#uAX{Kdd>(J-w8y75WLmNmoCO|v0{a`U7l0X#kXhjOL zK{6HVT(`B?dqfP-8*w7XO4@eVrxwQG#|1FR4iG(d>1`;B&li&Si0Gvb=gR}5(hR9S zBHvns0%(PVjLqFap;AvZk}X}MR_~)E!j~vYHIy^k z!e8eC@zznL)_DE+VNkniq15KY=MQsgO;cB>ZbunP>~okzaWqpBSq4wy)OCbxDy!|D zY3W8!Ns-8Ln4oJQX2#dWlASq_ZyfJa(8h)=?LYfCv@`=<1@wh4tBJZ3sFClN%urKP$ZwJ6K}EF%vKnxs+pJNXU$gE?g% z+7AH(z4)FY?fUw;^}@4?f2A_UGDDcG`tc$fSrZHtqs^z!k zWX6tt>W|7Td2XGII0YqAi}}`eDKT&q84|mQ9i9(yZSefU7AD>&XZ^r+B#nq5;;gOb ze*2Yt`C8km6e|^qHrLUb6ZX+@HULN#%v~5y$Z_9B#n~Jl6qf;t@5~PI$Y|QjcYy$n zhoMVAQD8qG{bfQ|BG*yaNST!YD$1C?tsadS_Tg`$c^rL{Hf6aIznsBGk%*R?Zw!>= z`+S~Cb#1f`QVhNsXGH|x zSzSm`0k*JKe~>OE0K|dUDxS~N?ADma^nhPi5rugU&C~I+;mZR~X+Y4c0yKYxZS6s! z$uG>AI_+ZlFXA971qn{JmuJNGVQ}ym5o&UyjO^)u<(iG0dJdJ^SC&7AL}L z4IU$h8xK_i(zzhakh5BmUnu1GcsXF7LNWjl$B6biv6tp^_cvU z0+n+12g4^eY!80Q~Cu%NZ1IG*J$VIu@@jp6MRSheE z2>|l%eVGqm#OoiP&GV#4YEs6qf_|Lbf3$rk>HUg@S}{YDKayhgG>CjMY|Z`LdE}k| zW)&1^xj`nDh4__YufF$$-IH72No-XoUG&}|R?h23^{^-!4cBua1vV?r^iTovaNFN~ zqT<@&`V1W;XUT$jJqJgpwu`LdUrd4XS~tPUO@MOnFhZ{4ww_1L zQNz-6T3k9>Omv0iUGq_40|nKhtO;pIOuV?TVb|nUGtuCCSDczIcZXNo{m{_qJqLng zfdtpkBnBg-znpw?f+9egW{O+$W6bCmGKEC??>Oo(%6DH@b&6>r&U9B$$;7LiD=3CJ z77V5r$55%YG^745?c`63yQ@}aUUi0cj-k>fM9N25C_ zMRa?nDnRNpigQ$-&Y&~E0Zhs0M~jv-rw{9M4{Wju$gjR)$^K1blB)g1My$z34AgAN zT1Ezsnsv)P0^=Of!Y-?M^ISB6P>WF;QZZ5L-&eIoz`D-sc=zV<&_;4wBTbj=Y$xhH zEe`?|8A_weNmpfBwy43hTaTve6`O?sRlYVzQefYuyqn zj`z!V9RC;DsF;v_c100_R+>c#>rv?#MY6=boD~K+8j69Z9r+_oN#PPgz6)b<+>6U^ zldsWH9ys4izNpZe)GGcOKZ(nO%o`t3&v?$Kbh>BT-@@C@F6U_WL`Plk7L^gWQ$BTG zF{nlD!iA4x&=vC-+u(j?pBj>!Amq?D;sDqldVKT#jcBZdvSg6_D|f(-U`sT#YK;6y zR#oQpXP8ZxMSv9w+rknwukCO|jOGnw+cAPC~$yf#+Zg2@Vb>2MRcQ-69N=vqEg7&)-Mygp5 z25kE`4X$FT0h$5pA1XKq{L%I>lT(L4oX#W|rStVeY!$W(L4068m6+TU3+mo_Tgu;^ zO)4>fIF_5$63xMR@4Bsq2Fa)Txbn4mJ;xm5^yacK6Vz-d=d;;QpDOuB1^Ax0#^w2X zyB?=sn!V))g4f~Ds8mDj7Z;5@hQAE}l{&^UC-k!;6H!m$X5JGOPgL~g{ED2e?l@7& zJY%x3ybFG&iK>Fu*MT|kbX1^DYJqAFVxy|zvA3%pXdE2^YhAE@zv?p1j_dhRCGKxJ z`Ks|%;_CxZ{L4*HCM6L%xA}Tbs%xu~Y$5srqhwpMU}!)9KR%~(Kp}{j%)b@+?CGFD zS+Zd&9z=>VB)A(~f0E<6kszB#Fvkgym^vgUZHQ z{V#R(nDpq-0Fcwcq8qFjI6vXa*u%`RWP5NR7!ac6=UFOqVA}e^1qMX#9D-HG<9cnd zSa6Y}00I))ukL^Fa|0I|Dt;Efl zjmINHmp$}bvguh9Rt(Ba&O%x?IrD>PYi;ek0tZX*qu)JG+Lv zdU#2yzqwfjulVXJ|4+Y2YTx`Q?rA~J>XZ2-adJqN3RZ#&ll2B623S}1K$wBHFA|wO zwhd7WODjA}#raC7$KO8OQFzC|y*#D8<6WH$FU5bTCCac;nB+#n`3TY>X6dLXs7!lIj;&ZnLu$>3#xW>8pRdT6ipuh;47x2%b2ziuqtf* z9f^GnLu;2i+1a5R?MyycBUYo)ldv}Oi7TvC(P{s^aVI4$mZc>G=CiIPAFaNRh9$>q zZ203?;yN5B1-+gYMrvox`)gQ%+8x(8$_wn$Zt4I=~}*R!{6nd)O(wp1f4A zSyhBvmd_`Yk=O^y3SSSlWYXL5`|w3)5_2rP3CpQ|z!PYF+gatL3HZpAu3}3;_)_7t z;7z1f^j?fqM&0WswCF@0^1$IY-s!~2T;Efv4Pzq;XHxy?s^lsT({~V*-Q*l?@jj*6C%yo%XpEyOiI2AyzUhJ2(yr(+^HL3>v<=lCypYI(hN`MQl zlzYpf6YgPiS4~=Sq9U1z>lUfNgaH%RXhrbQYX)TJWAz+;D1Gs{(E5N ze~96TSosRa;s-wv{s;fLjv*-4Fh*g*MOnJ}&*!J!hrIUEPsFH*11vC|E?}y55F7=` zyM5U;LZjmq0qC-`l!wFl1NjzZeG`rX`alznAx=V%L<+c#iIQ>?(gOnq!A5_2&}s&t zxVed4|A0`tYL3ngTDyhn^X%2OvP;r={gfps0(D_CzZz=R4~ zN`*ud1519lc(}sQzBBb^y+D<+QNcP*1xt8BWVgUO&9H+b0&2--Mw~aBp#DnA-spWs zQ*45+9D&;T#=9NCvy6vRR-^x^HS>yEjoZ}+8v#dBvZ^^ucB<}BSCa0H>?*g@T_(!H zUf=OkhB+$Wpnrmlj!gu;DU)>XRf>rM-22mZ{B8arFmHO<(ckNxa`)8ng*}XR+#p{u zcb}kO@;Cd4pnUL4;-ty0Mi;Ywu>~ zN<`&208XiXf7`=>6~|xyu=QC&>`Qzi-1dHeYrY^gN*_MrIYLKtj+sctJO(j#LI)_i=`zt zST{M5*2ieYC;|ZdBe(o8+vP+Gp=jS+YO`9M;A4AjHaSs6=PoEP;oWW+Ym}i7EVXKF zuv%@?zqnUstiOcTQ;@anP&0Kme+fou34ZVuPNJ;bbWVUWW&U*?@NV@F1P?&k2PYLw zoMKTyWyxNw%bObb{y1CyT@?#q8~Nn%ti~sb3&@cg9q8L2T4P=YtfCFK7kJ-SBq=}w zXyqSU-JbaXR_RY_?T1@u6cR`53y4yVBc&EZpl`ipK>VT;)_1NhEGi$chp)MDq*zhQ z`0IoYPPR&FjRRsm}>);c%VJC0bG5_+T`g&aEm6!~IKX3PJ_socD%S1Vgd7zW`&XXu0*%0FAG-=pbkSj?sa6DS?Go%qRpXMcI%~@i=rqKda~tU1fIC5;P7 z@^B>EvUlpX^(|@d`!=`jx#jTT1h&?d{zj`oBvc&@zorX+9zS>sKF5#hdl;7s>4|yj z^;d4^WBgMZji)OOAX=QNWPet0rqgcF&d^f;kB+3YP;R^2JyLN%j3?*fVyk!!JSfsL z-w%!bewHVKKopiYpi0f6VrHMC!cA|;l%=V;Wx+~)@=v=2yXRUL9|MM{GeN6yw^9OZ zr4oNpoBo=iOUAH?qIE3V^*w;^t=jER?REbq}$VlG@iFjXY%&RKv7y2C@3 zf%~9U5xl1~+z&t`+~68fB}H4JANUs@?4{k%{0BP1CUu+l+m*2=?7Rb`+-DM1jZVBg zNTUrGMynRnYfPbM5k!d(cj=8fm_(QldH2HnPf7!aN>tlsy(^7E&fsuh`%$lDLxwqW z*>(BoOwi(df^k|>P)YC~k!R?^2A%(=~G;2Fg3;4cJ{I>kMb6)DEg{9hoA=ieS(hCqg=WHA*-*os?ViY1ev=RUTu`-K z0@25ti4hrJUSa7b3Ur_5UpCJ>pn>%P#>e~h^WT;2Ejg1vxy_yzL&b63O0`dp*Q*~w z%xsXH5_vB{&(^$Sj4cnPNeDZj?a>L8%gUVsCZY~maCH8pB2gGD7%bW)KBK#Kx`!@=6Sx?5!tv%RV8`IV*J;C1fdr>jeRTZ!$>$OU_vSVg^2Jm2dQ z%zi!i3OHV6*Pl4OH&snX_y7Wk?Z)o!T^FeIYD>=WL1h8Uh41swDBhPj!TtFe%dX8s zgiGy>2Z7~-6&ajPrN6|`CtE6xq4KY++C3fkuyLXE=-cZq3UdQ-UHj`BZXE*Qsz0N` z)1@-S8Vw`_qJe(76;XJ=0wU3>kMAsX)h^o~q{jnV(Y79cLM#*d_2w5Q%4ioWK01b< zDZpFCy2;pl)O0qYLqQwHS5#Kl`vD>o8S^!-%WWkBL*`S>&fjv2_t~iOcI(03jqg?6 z0~?(^y|jE0);RNZFCnx~Sb&}-)b5IKph%sDHz$$WYJIQfriYPO?!b@i>G7AS^p+=~ z*a#@V?V%_1^D)|mUb^jj^O?7B5h2H%7H@*{HOA{fM!LvHv){OAXmZR(RW~)Gm6Yx- z8Ios3>mt8IgnT&P5!F&gL`GWAk$Fv}2riapYK^PWd}zJBby;6!qfVE%L_S_cp)0er zdOy`wg%mYZ(z8GSYQ_+12-8-xEV;Y3Dehc>|_${Z9k!u3* zVf|?LT^IbO;nlp&1H_x?d>Y+jG;th+$7VMBakty(2mlS&hi=k4|HqLJxzI~Pfj+Q!}FqU+GMsP<{{y3&iRc)s;B#Nn1+ zt;E;7*6zU3LWU z2|F2##9rD%Old@NZmD}YfSWZYXo_Dfaw^OqFt}kjPrcetm3+`P0aHuNH)~zjsijD) zo~=taCiHs8F`P+nx1S{;&T(iYqzA{3ywG~T!j^PWx$jmMy#0=NUc}*X= zu^D@MJozI*`&}6idpzxVZw9T}r7~lkH^k3|&-LIyd(odXr8U}F@Hmi;cks{}zqO#y z%w1=vIhLm4av|R`CBkf4=&7qoXPknttmVIQ0b=ycY5w7G3(h(R?Wwh#hEvBao^ll< zTCS989(+d*9R6i=R-pSc`SmF0uFTL8Tx5RaTj`5dWW2(3Ervg>$63w& z9r2}%2YL6wuN#TIqE~WtJDQLS+CK_|tpH*i(Dq#7$imIS)dLH=-oE40lLTXd_wz+1 zF7UzPUzCH5g8&{|yQ-)z;|0u_ZZ{!Q!?Fc&9Ipb)RrMd)rj~tneT=hu07c{;Bjzc( zx#w37C7byVMG)K7ZTBDeg<6N;AQ|uy*BAcfnLN$KNZm=K2;}C~qA}2zS`*K}s=Rq8 zuhorLkld}8nJu%8a0R!W#qxdc>O<#3XY);ZYQrc`DuOBA>t13&Z((KR8P0FVO}MXF zf=ON#;Op$A&R94hKhZZ|uE&3(`7Pg%*C8jJZ?h8k#k3Qxi1_#V-~|a-z6(#Nj9llI?=Z_I6v5_6r4}n$dz># zbosa6-<@Y62%As%)zec$3M=K=jXtwfwJ;BqB*p(Olu?Dl9@^Uo@jtexXD-$uk zmuEMQ%&QMo-yUBaWK1?7{bhQ|oz_n1S=qd=$m>1)3=4epWrSdM6(VBjoJO0xwn5qS&9WwOmuxEX$JT4Pgm7DNZ>wG z8)68?;{w2Q-ULV>fskA1BKoQ|?d(*>*F?lwm#z}#?{z=gaK9jLMsLC=jru?>rNX+S zUq~~s%t0oqAkD6TSbn}G27kT*OfucJG#vm)2wXn+QhOmI+w6F#a+P(M0>kI8kc0Kf zNCM9m6Y`TgyuBZb@}Fb9cr^$dkbdqm_r$BWM&ECz=6vhg;Kf#u5+Dd-bxw%cBSjSl zvts{BH$QG^Ogrc&M1=}xu@Q<}@k|$3KO={CzVvK^Rmr>Hwlr5+fF!S)5qkdKu$OsS zDMp3@%b#PP&avl@GMLgCDRy?6C&wCPL${XjH`*hc<4QqluJz2Iyp%nS!|j+wJN|6# z-`@A&l~zu=L2$stqzplkH;|aTw{RRel-qTyD}xtC)=K@VT>R)+py?9`;`Eq!F-$jN zh1dnvFRqi=S4(_rn+^OXzFg#DEb>oMdoRj;E;<*Uiw!VAuUkWslm)?f9~OXv!SVN0 zVSQh^kl{xAT9WNX7u^5>!w(!v*H>9SY<7JpsPz7De=G^CCVSWQGQ0~g5K4p(|4mUOTrRS+jKi_1Ut{MGq9F4i)eJUk z4q$F&TxSVx{DT;3dALO-%i;W;KFR`f^>G_{lPV@v39O5JgCkB;$@%FpJK%NZn3GP? z`Bg4Q_Sb2i8Bx?J3OHT5Vvz%q**PsmHVb39U-%!hwL0$UJH7T}krM#6?#^2Fycm#m?Uue*xaWN&-ryR67O^09A>e>4jNFZ6uWvVR zZilcbQIxl_vA>jFNc2Y|$qsZ6*R#v}I5|LyC($ufEy`);F4v)(oqx2s zE9GYgAg?Aj(DDd>5Xs;_-Jcq@CQdBZ*R^;(5V=_0E=sUgfa#NXg&r{7bbW57b*udi z(+ZvY1EsQ8%3WuNf>p_s?#~uo$1_!DWy+4Gj3a`*1GMNMatQ#nmg|>B-Bx!Hg$n}V zVr%)>xZ%R!x6O=txB0aPm2oH_n#=X0&bhTxkiHTnvUaU4#;mbxJP+UfL&W=rUliWh z+1JWq+W?xb87z*w=LwA?9%6cPVJveFGsUg@aiNM6-Fjc3HxPhiQCRF?N=FiTM}l(k zx^oHi@&&+6v4Lwx4)-r>9X@B3y`$P&N^q7F{tYezP|%G5^8!(f7+1jE6=mkyTi`B7 zHOsq__<@^IA4G?mTn>UEQdL&krAWL6Rgcu$)vEkJ zToVI;8FJzp#npWz_|V)|RVBw8)Lju5b1aId(XJ{vnvtKLryyf>%g*UsZnm;WqT-cu z<={u?4hD&OK|TMXZbJ$wch9OQ6&Vy_`PKn8BvJvKxvKtFA`g^Zb3-G-7-@}$h}&lG z`U>aFWQvN>Xk^OUX=Np-AfY;&*)aiUU80cMy}d+^C+LBCtFwzTJ#`BK>re|@ zxf7)Hb|uorED-_?Rwt!V{Pnh+Ttm@Fyv1s}EH!>KP|TchjW_{F!x?v>xjH0PPN-S> z9|pmCfp_MDM7JQAglQWn6|&h^ZKX*%^I_9{9Mw{S{bH#}W!vjKa)KsMt^{! zyvwE~`nIrqysT;5yJf)hSUiH1ek-gTk!8iB@w?5nxLiT}hPXxXC_CW2y?O>;Y-9Z9;rm$vngtv6p2ni8@=Jn;_3`8RZNY3g-_4!A zo!a1}jqA2gc%#+x>?!f+h(U4w@fwWC$(hXl<*YoYV~retw&XlvUmz)cD<9m?$B$Hu zRp18rJC|263c4E$$5C@sHgZ-;l;3*1UPT{3yrAq?^mpU0@Z;c2qlZA}FTxtA3nY=> zis=1!D8P97Nl7ir=n_` zJZ-LTVV`jha6D?sY{XEW{;-zbYm{Ml-~HR(pd`_0Yy09$+n|wyknJrZw+Qu05NUWi zCdlX%seeY-q5FYNb$6o6fGa6}+=3L4A=Zveck76X7FbeY!G9=z#Z$%6K*s(Qb$248 zGl^}%qvQFK-o#I-m%K`i?fqf3Uhfg7`>R&I7dqI@47Q5kX)oAtXA4Z{S=a)pgT*RC zcDXy#MSa7q{pvo!g25<$un*b8NDZ4Z8StSW7hkS7Tn!y9E*r`|n3`_a5S4)Zr9ZQQ zj7>iIciL!`kroZU{OlQtXoZC4X>6lj6X{sZb#r?6xgG&M8WO;ftZ}wlsr%SLR5)V& zx0keQ=odhCCAWZcrbhWA023ciCqxGcf~}@16 zdrq->6BL6RE|xOY^>55^*sX7)`As;%{sXZ~*qt#Ii=KW%u4zA>8HUhoBpPO5c7tRm zx*6Gm&M*gn1?SzJZN$`jKOm=6D-zX!wf?%_d$a(> zcW-|9%)cC{%9qB3=eP3`fkXWZVX&cs$eYIKEcOTqJg4pZOW)NN{g*@`)Pn`>rge6KpE3()`o+j~R2&df$~qoGm%))Mlg1LShf z3}QHo&sMsXOtT$l`^*e++k7d++a7pR)msv$1;ZUKTVAgJ&|~nTi%E5@BbofsQtm=c)y|11 zsP#W&Fsn72to__dWVXLDZgdwmAUiv892ED7or^giUrzQ&0Hk^rP_2(~U+kZjwbIZFf zlpw;m4Me&ZRgGvCdU2I%K50tpAGkCwd6yF}d=oobKfGy{?gM=`T?1hqTD)8<=6)%g zW^5^9yKeOaI?RDDh|KEH+*~z!Ntb$1YLx5N{uW+U#g@XKlHv#ILKRbMCeomQs-*n) znxma6mrk5n1`L49(XyNo$M*evh0fSl^u%TG{u{v2TYiy5bo#LIT79JtOi>J2@h?79 zNPqoWGAYB3df{@hQQ^xhKg&+v>P5oreEp)$#gg|vqban#lKnrQLi4iwjF=an3x zQ3qnH@mJc;m*(Tg;x(Jexk~G@+Z!ZN%t^>5D>UtSwpGmC+;sGdlhM^peQN6B8hJa- zP-%)}kQML=caTiX0ICUz3Ween(Z@}79SlMYH}acvn`7gM+!E}PA#oY@RP9L1R2KnQ z0N5lLo0U4;&2Nr0z56F$o_V% z_`+8>tl#*HriMBc;lukbt>kt83=2)&CG2 ze0Eg}tCaFSzypBReqyXps0VnXrj*Cp**buV#HkW;|C|TNg56H<1h;7PU)NAj(km@X zMw@O)ZPb7@*s~z=oPYf1OW*p?c|UkRoH==dbw;@Ok**6dVYAZUurLQ#Ex4KdvrgHw zlMIFz>W;SxV*;!j{QmaoB)w+GzUyo9kCJ|Wk z7RIG&W|@4zDY}X9G*O(OTUQgm^+*fMeNZ4wM|Ulc(9nEL-=Tvl^}N|huTL0tV|boF zsEJwJ9;R!bWwL2d;ea}Emmi$GH4a;b9}rL(-R~Bx=g@bvr zFLlTeTTIrt&6KA)U@rGV6Zg4n4<|T6Kpu7mld`Oedtj})szP|KHYOx6_?J<80{RjX zh^TFCt|29FBojM<2D;SID#({vx4pINM|isg&UmlOqgsTTezHjBIQ}{LS*QMTzS{Y; z^|IOM6q&*w`b&R&$Arb&^=#|7@u%+399>%7Hk{pl#Z8Ft=vG9};>xI<2k*7b~^3NkIBN|His}0^kMpow}a{Oh_`l-`<*<&lLkC`Cen*(}fWK%q9@B)^DpgMu1 zfemEKj)yH(mo{GSZpIN`f*i=QtEEKc=Hm$mO*bBA%b<`ycw3!Uv&-Sy!7gTWU=4J9 z36~KTgpa={MZrUBzqwx@#u)!3Q%$Tjo0SiWzPXpdvLQj)S~Q#1a-ccG<_)+S8&uH zhbPx=QtLGoZ_(m;OELPg620;Stfvq-R1k;8$(O?m;Qfg7pfMt5Js7{#uE9=99nsiL`gq^)fqZX2??-faq}9FOzEo|>7`iXmY9#41g#W*5%ZWbhGj&*vXJ*>f#wdj{ZL zKRBEh%3KmFo;|Mz@(q%k^eqqAQ+Pb0m3^(=*^#|8oA29;N5wi0DDD=+%vDZK zi^}Rt^RFY*o}PjwRp0LKQ%n04?9_JecXgv+00}Y|2ZturzglNy&DbI|FxcT*2zkbH zFL9lkZH^#ky|V}Dqs@n0${k4X~rV8@o`a1vNRf_1-lc?Pr7>uvfaZKi#7 zN>%i(_Ix4^9e|{^b+k_mzraTUvFOc+_C%B>d9vn?4HRoZKt~cvq6I`(Wv;co3Mu%C zolVtfU*HCHA|PI``SZ^yacf{5uBQYxEl@ds<@Mr%ZJyT|Xg z8Mr>>gLo}9Oxbcm@)+W=WKUhI>_}Rq|1&Y;|EfqU`q1@){tqOvGV$F>8x}N45=$lw zB2ixDT{_PG^c;jwE{iFEA`vKMQ&MsQde>=3qDzgy zGSDEoy@i8{A2+T%q4_TtBOz*ZutTOC{D@(FDBH%pwR?E@|2KGbpS|-Rb=xzcv-yeM zRbt{Y$9Hw4uM4c7q^~a+YHSYEVS$^4D)0Wn6Yozi*Jr`fJWT*jHa57|)t=qTttb5q zgX)$5sK~49qknL^$<5-p1v+3#ds19)dHgxtBvMzBk%DZcsp0JFBbQR<$x0~=V;Yw$ zYpL4y@oGcy>iYeWYLw1cqSK!n4%aO;U*Wj|i$z;@^?~}EL52dKnR3HIXRk;mpvmb< zEUdfS;sqL%s(+Cg%py(RW3O)7r@3dQ8-fQ%262xSV6pcMz`v;s# zRS0ENIEp0WkS0?)wM-y@A=y^vZ4Cwp!1*TMq0sqkt<7;2Ga)yQkhAoh zb&#jwgSTtt0sIOEF1pC24cQ_zpXwV>>2yd$5RFeTxFi}nItd8?h&4M@)n>_={HAyb zLMgf8Nkh|+jNSKolPrl0IhngyAKuk~Y*CSAPyGX*|0>@rMJ5pAvX4qe9Xo37^|>pZ zFwXs``P^Y#>~jmmcG>eZd4G}|;|{Wd`}edv4Q%0Ynd_27q?iUkE7qkQ$sM`jgY~J! z`)nNwVZas*lQrhNT`_F-N7CmF!b3_DhB^!NbEkf*oWUP!>9LiS8Phq+FR!ES4FsL` ztyz}~cakSaT07l}0w|!Ud;Hs~F8Y$UkcGfftnq`s6dB%@`VcAuA#mW*YGKbR*J(Ub znOk+0S1<+PWV7%)wd$wl3swj%S;^zUQl2bELRjf;5>i0I$iCVK637-Kje~^)h{cMf zD9|>>T|i_Bl2=|gu)LZ9{pO|bp}QQ3M(T;IUlFY`>PJiD~vygE3FLQTvzes$^Gtm zl$=c5R4EL;U7jin5*(~Mn1L4b+Vj0Eq99+PT4>C_GJfu)3mowEv7aiT!zx9bL_~Fi zr;1gg-2)f!jPf(*Df*OWCo7Te3bp#2@c+}H@|zb& z6VuAL$(+V`5TB{Q(bmqvL1}(>@Bn9V>^U}+h>h!KO$DvMA*a$N#HdOv*WI|dtFl3I z$c~Q!XVWbnw~^zb2x*O1P$Dnw6%D~gd&MaK;nU~XF981$>&=O9d#+Zwa>C$;8q?X$ zWKVBmH)`gj`wGC=+ zs{3kRcl*GFBPsJG)iWJPJs3-~QGNvgpC`|WB9}xWaKJ+Nobl%8ADd;00yE1+l3kVa zcGKNY)wTF)Pm2tXhu&^hg%z}S%?5PVWarggU1&rqi_LVyOB*Xp1dFO@Fm(0-5s?hs zMHYQRu-D5wyijD6t;wJK^Of*c!&O+XtQYkt!4z-g@lfG@S1H_TFR8 z#2ns-Pn41fN$RM*H{5OVIi1y8j7n9;jI@4!cj-R(b6fgZm3CD-?v?XmlNx`t4bRGt zD;s;>ZQsWFBsE;5f7>lVves%~Wv{f*CZY<+Q1yVNGki}{)O`~mB^FaCvCVv+9}{DT z8kQK0A~I}LN{Gku@lWEp5L0RHU-V^D!^I8-6)#BO6KL~-0d&d~(Gq)1`Ee@8|4zXH zM1#~+Z`~B_G8a3;sPsv~n~}@SsI&$qtI`=X+Psn>pwTZ6adkGm(Sv(K_A}xQ%J>f! zYOB>FkXe9f1P|Q(HU6kh41nhMF^pL zyirjs0_sQp`&<7VS#iUSxkbBCpq&e*)gmtgl|CT>Tk)ociYs63$?U>9IH@yLKWnst zya;0T(KH|wchP7%rX!3SCKv@$m?fuSqXaw}@Tt|UDlK!9=`N?;35wCVPDzZ{+M`RH zag%*Je=gnz1H0ljX z>%BCK-;`H1q83!j?>eF+l+CS1<@-nE&n3^fADUB7t?xIUUf+iVe2A-|ocS)je*Ryr zePvV}ZMS9P4vjU0#yz-OAOvUv327uiaA+X76D&A1(zxYC(`b+vx8P0)3EmLgAvgpl zNYfeKS$F=-%)R&f)=aJXb?VfrU9wKqv-f^Zovo!Dj%hxnuCEyh^zr$P))_1Msw1-t zw(8&c^Z1+ypj{gL^+58#oi^{@7zrKE1({_?nzZP_~O{&Hfo(=-DunOoCobgynT!ySsk zt<(CdQM9Diu6fV`=AF0Cf{%KnLZnt$l}E%T0iBW%1fJ|{|K#*FWP-38ug*F9mYO8& zuNxp>`K{k)3#AvumuGH`llb|EE7jtkIY0Zcqkb^Dw;%q!TKVBA zCut;y9CFM`wC)XrC&^s@NGeVd`0DCeqHr;sHW88#rMF7JDMv<6cAIFB{nF+!lK_;u zJbRLZQ%+&mOYU(=Ocu_6itJy4|NoTq00*gwl1Mq!0U|LGz}Q000Gh#!$zHKXWOat} z^F^$3_o~(&MX2OM9Y%|n1jCM^YSyRfoau*QK;)PN^c>IlqmM~FfoI_DTZ%OqvB{4s zwjm9QtOFRn6t4)NcJj6-{e@%wpl9IU%mS)9lgnd%>};+As_aA&)~Gv^N;qVa<=%>V|b|UhWP^MwhwIl zXoJ{qYl^*UJD^YF=F!uivGWb4KUT(P-+m46I258QTc~sVzR+2fmt$sRJf!qRIi-hMX>7qzTZUqXB= zHRy4~Jj_|>Z89e`_h5M8N~QfPNG=!9J5}%Hy6WYI+s#4qIr;TNEBz^S?$9b`eT(J( zRyrdcl-rVmk)}E|%yetL{>*u@A|{|K!r6IG1uprBhDBn}O~p6(uSsM+o|cH%1U};o z%^Oimc$6LPYmom5w>t-4?d5NP`YDWyD!csP&6U3XG?m%-Q1g(y)6k|?@Tx$gcF!G} zAI($k?=*uE^qR<#gR7npcg%?84dHEc;r5Xx0^!%Cx6ns7Oqw2 zD-c!66<|1+HrXq8N`o9o@fcex$P+3j9>l@{P&zuw80rh_=_d8%3RPe|s~l*!doZqs zqNC2>xiI!8-6F#dG5A3?Hu{viB(brk+gEux6MS=_xo1Gk^>#>-KIwz zVPEfUK8wr|2hh&NJKiN*OWF{CadZNV-zb@vU>aNK9EpDT>Ci=%tLQK=asz-2SCW0U zaM{=(OVXhzqi8=G8)gZIZ|{2k&KC=Rx;McONJbRYQ(iJ0`qPy3mlNP#Nn2@fl*0`z z5?(#IZ6RMQc%n_xK<&^I#vKuw>-wo#3r0vrX0E52zpwoPE8xyzP@Ue!{2FgkfcGUF zn~=<#Sx?PUPbZU{QrVmFekxxVKxV_dTeWM67pe{1Qo0xmRSHwjUw|*rlgeGZf;V`l z;gL)A!NNGgI+bYb`byN;6JwuCa3));3|e@@iEz#q6%A4>BcM_A-$cGrt0UYsHtC!& zx-y5i65_0l_0YVhw?FvxEErhx0c=zWfW8luQ^U=T# z=6Xg0bB{V0o;h|niS`fLoGjg5PPIgl2sUjs+-P;x=9h2*waRe5nqH^1&hE&@FJdl- zj*ba_A=6J$JQjNX#s_w_?RV)zNj8H zQmNV z$fVS+vV|lY4}mV`c}lb+B}iXcH+iq8(M!O-FM5`>A6E+}xD%JZf)ZN-rtKy#kEe={ z##s2-(Pc{p9+XlsY}x^Ga#e1lEO@X$<9iZp zMv?$vTXOP7iOtpFY@u{d`=befuUL5}6dz_@s5x*q5(Z+Q`H`lV#AQJLhXD;~t~D7r$l>HR>ZdP%}x|GLuxKH#maRl9KF_hr$&X1jcQx zC+SB4iQdyYHTQ3KzYMcv{yxupDs#N;RNb*xI{wRzl!y&m(!@1O;nLu^3PDUsA*~Q} z?A?sn@2}1V_3f9i6U9cytl}Ede>3$hRK=A`0aYbZ>?@j*s`~vGUA?p zB~R-7R^Min-SFM4cf(lw*U(y1^4owRSv2H| zC^J3J5T&j*?dUYONB!l7vFdx^=WECb+4yFHJik{u{rOz9e(-0U^95w-s*?V)uq8-o zaqt$OP2%*7z-r{&%A^RW3{lyTK1Rg2A=(g#+W{`ExRi0kXjM*GjNJ+?wFTu}kTM}k zThLaX`*|lPLmxXcm7>3@>9w5>m`0f}Pi^T;&Es+vVo0rw2th+%1*<`*&Ej|4)CS5* z2PQpJfb5JwicY@g-H#>MB7h+lY)w+cP(n9k=C#u)TIiws+f<H>!O-*}cO9g&Ls!SGgBGtF;*S8fH^rUj0XOp~t9;>k-F(cZf)Hi&9**d(P2KRr z=Jn9)twpN^aG@yQ2Ak-Ptmv+<6*OTY0+{XR6h?plac-J30+?&;ainW?!lJ5L>wTu@gxzeCZ83ome2%Qseh>jztdXhWMmE(x?xHdgcoZYCJe73W|b zn%^ZQY`;71u!_ghhE``~ymDEpubnK#5}^+;_dbQdv5Sh_CvW-_stX#pDNtBVhm_VD zRf|{B#E5B)?YIlPX~!3(1}BV52txRqK)j z?+-Og#^eC)sDvD;wv6^+7YS0v_j}h=o#bPEsU-N@Mp2p{Wd$gnC9PYl?eoB=}I9^gAH5jG)F~bL<7LC*aw0p@Wpuh11M0SWpMteqO{w(pjsO8EU-;=}QmLJsoaP^K zqvYIYy14V$6hWbp%<;St!|uDTJ~t4Fd+=;`M5E~lGL$3^Had`Jw~-=zvh>>2oBY=; z{v>IOJs@|5AcQFW=4AO@vQAw0u}T46ohhk%VKI4ZR4@|bT-=_&zwX9V6>e&`2rI*`-sAMNPnEnztfmM!M3WHEYMbeQj3S z8{M~efuAv~ZQ^qwm}H){l4Z+ub99&6df%5Arw9M;qBMOP#kQdMf-}6%?=B>K`)^)@ zxbrEp?M%`3)jtZ?yQ*;UC$3f=Ev)itHRX%AfKHV2(Bb>prNL_E_htUvIp=fDsiEH^ z{IIu_;vKpM1M2=45la+B9$enx$MWh z9JvEygcB8WlXQY~x~LC+7wQb;Gs?uehdheP5^V&ya$w^VhP_mL{yA@Do#dIlJF}!Q zoS8Cg=v#q?qX}^TTDjL|$|Hq+N<3EAzYM?gDM*VkM3xnl1a9-qZg)I*f0xjZ(Q!Xn zLTr&onRdoMTfIc5K0GoqG~_k^qs40Xs>pVKqD~j?WN>)$MZ8|DpjWZT%~BqHp6NqqSE-GyP3S8=V(L$0{^B#k}K&loj)wX2^>IO)PS z@~)n5ZES39Oa6{6$v{7bHjxJM(+LZ!WU&CKbUHeTgFHnK%QkJ*q_~Yw7ySK-0278u zzRitz{K8-yq@R_nande4xTAw1$iFCq2|&t+)?swAJ7|E;t-G{OpYwZQfNy#2W0VOq z$tJMcudMW47W<&12%;9IOfk|<8a)C^vVzCBX+&JAnP!N4C}2&fXF?=*H8i!$eQ%;d zSpM#`*ZdU=A+39fwIg$`c}zJ7fQUT(#qiV4(r-J(x}n6fp2V$MMTH*Fk>KYh-iHJs zqH89ldZNE~wSv^HcC%Zm3gqII;(6J9k%&nJh z@jXYw#D1Aa%nNfY5~eZlfQrU&9_-RjwxRtLf5J2@!WKgf8LuSd#hAJA08um?^>`Uw zu_XA`zw8-L|7ctF3jc`(k%bY$`gGIs0V;Q_*3{MS$>wc;8tVM$;&1emHLr{q4TUhi z#}N?)V~CepaiPS{#L5iYnl6iFr$HWnq&gI60hK=S5}QTzxg)rMfzTZ8A~bd2op%cq z@wGsD-A+8&^4Z2o_i-#%Gcu`Nv6ricbr4rI>9n)1q2t~$O!&=a6VfmQEXFCzqeG;& z;FA&w%r0@r1`%Grd*_+@q>}tE$xGWJ)K>k$boFr!5tJmd?~>VV9NqCS4P!yO$t8MF z!q#s!QUAxotf~g7r=CBwbNC!7eywyh%U3hhliZT-BHi@73rfyt55Qlc43>_a?*|eU zpy?=hz~}0q@oicqyYI<`qzxfrHfT4Yu2<;W~k7f}weHyo|u~EsPmXv|2)oQER zTe%=hhdcp*a-5r4!;gu(rBr8)pqr~@$y-XeShMTWMgs3WJ{kXzx6cRJg^hd9;S4ei zVgPCM`gQ72BP->6heH}yMN5b!UD~g%A!N?}mrP48em8CT~r8c5|;&n0X zP|#qu*e9F(mZ^rk?3~&zd`mo)0NC=&j=2b5p=c-pU>#Ih12JQ~AtxP!7jM?IJ~QHy zx}M-6fj5xnFlU~FNk1kYoYz)kfvBVCdR*i$5@x2KO%+M7*nHMT(x;MJP)kksRj|#* z7T}3gOl-^sOYJP-{tld3?BzzCKd3 z^a)xMx!+5r{9`5{I|yUV1m5?GUA7$^AO5v1d+Nm#5V=IP#E+DSp15TwXkQYuZV+n(twXRtIiR;hAGm(8~#zj5q0e@W>dP`9Vel2GR zwe(Z|pFvhCwMgN4_-@n(@;9b%;6Je}wsiF?!hiPtH(0t-J*B72+3}O{ZRCO8=kAV{hd0_T(dinFwJaij(1{*z&BiHoi`K$EKNW}5@;FJkqZB&+?s;}ta zWcdaCVL0)j93lr3z6E`;^zxBA+Qv1yJeV)QmCjX$Ajyo_8aL?}E0hv` z((8;1K55XZQ5CF8Wm#L+ zt_KeGVm4(P@go}sFC;EtT3J{uqK}bD2EX&M{9s}uSf;0-bbmI0bAP%B2zp;WolS$b zBw}7B#tN)u>LhV@5dJBLT9c&(t9q_Gko_?0T$bS>G4W+8rwtu477$d?#2@p)nU@j9 z8Gaao>E2;u=eb7g@Y{XL2G{+3ws@uta}XqbzB`@P!p13#AJ;Zq-dCU&bh9qLfo-Ei zAMaj_^~n7(FA4jE1JP*ooI$k|1LRZj)LCE}r<~M7x(1;=Huqvm#*@nlDnbG*EUewX z`d3xv2!9EpV)|e@zS9tQ)`--wZ@Uub4vm)fQh~vT7!Nd85p`4&)$3WI?1UiX%J023&A@Zv>nTOii7?qs(FPh?LHGF->#u#&*WHpX zarfO69#`HiA)xJ7q0&*xbfB8&LAI}(LN!%LK}>%S#VHCz-<)j9xCvs1Dn{h2_8s7e zD6sf5ZHQLRB}CdFnuOmhhMwp3PxtE_hN{EPu{zA+qUy?GiY^5`z{984p3Y@%CYXCN zLy+oD^Y4`oYAru)I{A5%7q6{qchw2NCu@Dy<`rBgH*X#;#12kVLlr3~ep&_y4#8_pL_Ps-8hq( zwIk%9tnY`i9C`t{6rZF1%ezzsLb)Ih^8Z6sQQw2LzN$UZ!75DCDrFtaJyh~ic}c+E zAFFIoPoU(5?@o{65&VyW;y^+AJu*eO6ylY7>25U>`X9wdNSyg2B6v?**FO{D`Hub+ zUPu2|-l2z=N_hs%kQrnem-DOcWNxn?4o8uem;6!>4tK>vR#`@gI@{p*KAdDlh&OZ^xj z5SN9!BHkg&Sw>LhOocv@A#Ol(vdra_!p@vDut`+lfDMo-R(;U83IVZ&yL!_wk+SlKrI1%{IVJ7T?9lSF zQ0Xk#OHQA#m&lJ@Zr<4UZ?7X`6|W1cTOqfp6u}26PBUR<+Y23lh80Zx2sjv{cT$Cv z#!tS;An_6{U1{@jDt~xg%Gnq{@vby37>0SDr$Zp6^m*AT|GR334uR^bm5hn;J+zwu O0A8qSLaLQv;r|0Cn`f5* literal 0 HcmV?d00001 diff --git a/docs/en/images/page-alert-example.png b/docs/en/images/page-alert-example.png new file mode 100644 index 0000000000000000000000000000000000000000..266671757a839499695eeb1ff468acedaa633030 GIT binary patch literal 40946 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 literal 0 HcmV?d00001 From 7641bbea387bd3057ee7ea90b96ed64178591291 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 5 Oct 2020 17:46:09 +0300 Subject: [PATCH 108/114] fix: change camel case according to backend library --- .../packages/schematics/src/utils/text.ts | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/text.ts b/npm/ng-packs/packages/schematics/src/utils/text.ts index a3c177c1a4..379ea78601 100644 --- a/npm/ng-packs/packages/schematics/src/utils/text.ts +++ b/npm/ng-packs/packages/schematics/src/utils/text.ts @@ -2,7 +2,7 @@ import { strings } from '@angular-devkit/core'; export const lower = (text: string) => text.toLowerCase(); export const upper = (text: string) => text.toUpperCase(); -export const camel = (text: string) => strings.camelize(_(text)); +export const camel = (text: string) => toCamelCase(_(text)); export const pascal = (text: string) => strings.classify(_(text)); export const kebab = (text: string) => strings.dasherize(_(text)); export const snake = (text: string) => strings.underscore(_(text)); @@ -13,3 +13,41 @@ export const dir = (text: string) => function _(text: string): string { return text.replace(/\./g, '_'); } + +// https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Utilities/StringUtils.cs#L155 +function toCamelCase(str: string) { + if (!str || !isUpperCase(str[0])) return str; + + const chars = str.split(''); + const { length } = chars; + + for (let i = 0; i < length; i++) { + if (i === 1 && !isUpperCase(chars[i])) break; + + const hasNext = i + 1 < length; + + if (i > 0 && hasNext && !isUpperCase(chars[i + 1])) { + if (isSeparator(chars[i + 1])) { + chars[i] = toLowerCase(chars[i]); + } + + break; + } + + chars[i] = toLowerCase(chars[i]); + } + + return chars.join(''); +} + +function isSeparator(str = '') { + return /[\s\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]+/.test(str); +} + +function isUpperCase(str = '') { + return /[A-Z]+/.test(str); +} + +function toLowerCase(str = '') { + return str.toLowerCase(); +} From 8b7d062432c78f2af368de756308016652a6f348 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 5 Oct 2020 17:46:58 +0300 Subject: [PATCH 109/114] fix: use camel where property names are collected --- npm/ng-packs/packages/schematics/src/models/method.ts | 4 ++-- npm/ng-packs/packages/schematics/src/utils/model.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/models/method.ts b/npm/ng-packs/packages/schematics/src/models/method.ts index 036392e0a1..c2833a7bfd 100644 --- a/npm/ng-packs/packages/schematics/src/models/method.ts +++ b/npm/ng-packs/packages/schematics/src/models/method.ts @@ -1,5 +1,5 @@ -import { strings } from '@angular-devkit/core'; import { eBindingSourceId, eMethodModifier } from '../enums'; +import { camel } from '../utils'; import { ParameterInBody } from './api-definition'; import { Property } from './model'; import { Omissible } from './util'; @@ -42,7 +42,7 @@ export class Body { registerActionParameter = (param: ParameterInBody) => { const { bindingSourceId, descriptorName, name, nameOnMethod } = param; - const camelName = strings.camelize(name); + const camelName = camel(name); const value = descriptorName ? `${descriptorName}.${camelName}` : nameOnMethod; switch (bindingSourceId) { diff --git a/npm/ng-packs/packages/schematics/src/utils/model.ts b/npm/ng-packs/packages/schematics/src/utils/model.ts index 0e472e64d3..f68aa9b181 100644 --- a/npm/ng-packs/packages/schematics/src/utils/model.ts +++ b/npm/ng-packs/packages/schematics/src/utils/model.ts @@ -1,8 +1,8 @@ -import { strings } from '@angular-devkit/core'; import { VOLO_NAME_VALUE, VOLO_REGEX } from '../constants'; import { Interface, Model, Property, Type, TypeWithEnum } from '../models'; import { parseNamespace } from './namespace'; import { relativePathToModel } from './path'; +import { camel } from './text'; import { parseGenerics } from './tree'; import { createTypeParser, @@ -118,7 +118,7 @@ export function createImportRefToInterfaceReducerCreator(params: ModelGeneratorP const _interface = new Interface({ identifier, base, namespace, ref }); typeDef.properties?.forEach(prop => { - const name = strings.camelize(prop.name); + const name = camel(prop.name); const optional = prop.typeSimple.endsWith('?') ? '?' : ''; const type = simplifyType(prop.typeSimple); const refs = parseType(prop.type).reduce( From b1c1e26141c5270ce6fa0baed6f53e21abe2c3e6 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 6 Oct 2020 09:25:24 +0800 Subject: [PATCH 110/114] Update EfCoreRepositoryExtensions.cs --- .../Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs index 1153f5e873..2463062cde 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EfCoreRepositoryExtensions.cs @@ -5,8 +5,6 @@ using Volo.Abp.Domain.Repositories.EntityFrameworkCore; namespace Volo.Abp.Domain.Repositories { - //TODO: Should work for any IRepository implementation - public static class EfCoreRepositoryExtensions { public static DbContext GetDbContext(this IReadOnlyBasicRepository repository) From 3f4a20d52ff9682bd96d23cdf89fc517d0a50a05 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 6 Oct 2020 15:13:37 +0800 Subject: [PATCH 111/114] Update npm pakcages for Volo.Abp.VirtualFileExplorer.DemoApp. --- .../package.json | 4 +- .../@fortawesome/fontawesome-free/css/all.css | 145 +- .../fontawesome-free/css/v4-shims.css | 2 +- .../webfonts/fa-brands-400.eot | Bin 133034 -> 136822 bytes .../webfonts/fa-brands-400.svg | 1401 +- .../webfonts/fa-brands-400.ttf | Bin 132728 -> 136516 bytes .../webfonts/fa-brands-400.woff | Bin 89824 -> 92136 bytes .../webfonts/fa-brands-400.woff2 | Bin 76612 -> 78460 bytes .../webfonts/fa-regular-400.eot | Bin 34390 -> 34350 bytes .../webfonts/fa-regular-400.svg | 188 +- .../webfonts/fa-regular-400.ttf | Bin 34092 -> 34052 bytes .../webfonts/fa-regular-400.woff | Bin 16800 -> 16772 bytes .../webfonts/fa-regular-400.woff2 | Bin 13584 -> 13548 bytes .../webfonts/fa-solid-900.eot | Bin 202902 -> 204814 bytes .../webfonts/fa-solid-900.svg | 2238 +-- .../webfonts/fa-solid-900.ttf | Bin 202616 -> 204528 bytes .../webfonts/fa-solid-900.woff | Bin 103300 -> 104280 bytes .../webfonts/fa-solid-900.woff2 | Bin 79444 -> 80300 bytes .../wwwroot/libs/abp/core/abp.css | 112 +- .../wwwroot/libs/abp/core/abp.js | 1420 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 786 +- .../wwwroot/libs/abp/luxon/abp.luxon.js | 46 + .../wwwroot/libs/abp/utils/abp-utils.umd.js | 284 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../libs/bootstrap/css/bootstrap-rtl.css | 11392 ++++++++++++++++ .../libs/bootstrap/css/bootstrap-rtl.css.map | 1 + .../libs/bootstrap/css/bootstrap-rtl.min.css | 7 + .../bootstrap/css/bootstrap-rtl.min.css.map | 1 + .../wwwroot/libs/bootstrap/css/bootstrap.css | 81 +- .../libs/bootstrap/css/bootstrap.css.map | 1 + .../libs/bootstrap/css/bootstrap.min.css | 7 + .../libs/bootstrap/css/bootstrap.min.css.map | 1 + .../libs/bootstrap/js/bootstrap.bundle.js | 210 +- .../libs/bootstrap/js/bootstrap.bundle.js.map | 1 + .../libs/bootstrap/js/bootstrap.bundle.min.js | 7 + .../bootstrap/js/bootstrap.bundle.min.js.map | 1 + .../css/dataTables.bootstrap4.css | 73 +- .../js/dataTables.bootstrap4.js | 2 +- .../datatables.net/js/jquery.dataTables.js | 113 +- .../libs/jquery-form/jquery.form.min.js | 4 +- .../libs/jquery-form/jquery.form.min.js.map | 1 + .../wwwroot/libs/luxon/luxon.js | 106 +- .../wwwroot/libs/luxon/luxon.js.map | 2 +- .../wwwroot/libs/luxon/luxon.min.js | 2 +- .../wwwroot/libs/luxon/luxon.min.js.map | 2 +- .../wwwroot/libs/prismjs/CHANGELOG.md | 202 +- .../wwwroot/libs/prismjs/README.md | 7 +- .../wwwroot/libs/prismjs/components.js | 2 +- .../wwwroot/libs/prismjs/components.json | 251 +- .../libs/prismjs/components/prism-agda.js | 24 + .../libs/prismjs/components/prism-agda.min.js | 1 + .../libs/prismjs/components/prism-al.js | 25 + .../libs/prismjs/components/prism-al.min.js | 1 + .../libs/prismjs/components/prism-antlr4.js | 2 +- .../prismjs/components/prism-antlr4.min.js | 2 +- .../libs/prismjs/components/prism-apl.js | 6 +- .../libs/prismjs/components/prism-apl.min.js | 2 +- .../prismjs/components/prism-applescript.js | 4 +- .../components/prism-applescript.min.js | 2 +- .../libs/prismjs/components/prism-asciidoc.js | 2 +- .../prismjs/components/prism-asciidoc.min.js | 2 +- .../libs/prismjs/components/prism-asm6502.js | 8 +- .../prismjs/components/prism-asm6502.min.js | 2 +- .../prismjs/components/prism-autohotkey.js | 33 +- .../components/prism-autohotkey.min.js | 2 +- .../libs/prismjs/components/prism-bash.js | 2 +- .../libs/prismjs/components/prism-bash.min.js | 2 +- .../libs/prismjs/components/prism-batch.js | 6 +- .../prismjs/components/prism-batch.min.js | 2 +- .../libs/prismjs/components/prism-c.js | 25 +- .../libs/prismjs/components/prism-c.min.js | 2 +- .../libs/prismjs/components/prism-core.js | 562 +- .../libs/prismjs/components/prism-core.min.js | 2 +- .../libs/prismjs/components/prism-cpp.js | 75 +- .../libs/prismjs/components/prism-cpp.min.js | 2 +- .../libs/prismjs/components/prism-csharp.js | 13 +- .../prismjs/components/prism-csharp.min.js | 2 +- .../libs/prismjs/components/prism-csp.js | 2 +- .../libs/prismjs/components/prism-csp.min.js | 2 +- .../prismjs/components/prism-css-extras.js | 19 +- .../components/prism-css-extras.min.js | 2 +- .../libs/prismjs/components/prism-css.js | 13 +- .../libs/prismjs/components/prism-css.min.js | 2 +- .../libs/prismjs/components/prism-cypher.js | 37 + .../prismjs/components/prism-cypher.min.js | 1 + .../libs/prismjs/components/prism-d.js | 2 +- .../libs/prismjs/components/prism-d.min.js | 2 +- .../libs/prismjs/components/prism-dart.js | 4 +- .../libs/prismjs/components/prism-dart.min.js | 2 +- .../libs/prismjs/components/prism-dhall.js | 69 + .../prismjs/components/prism-dhall.min.js | 1 + .../libs/prismjs/components/prism-diff.js | 14 +- .../libs/prismjs/components/prism-diff.min.js | 2 +- .../libs/prismjs/components/prism-docker.js | 5 +- .../prismjs/components/prism-docker.min.js | 2 +- .../libs/prismjs/components/prism-ebnf.js | 2 +- .../libs/prismjs/components/prism-ebnf.min.js | 2 +- .../prismjs/components/prism-editorconfig.js | 25 + .../components/prism-editorconfig.min.js | 1 + .../libs/prismjs/components/prism-eiffel.js | 4 +- .../prismjs/components/prism-eiffel.min.js | 2 +- .../libs/prismjs/components/prism-ejs.js | 2 + .../libs/prismjs/components/prism-ejs.min.js | 2 +- .../libs/prismjs/components/prism-elixir.js | 2 +- .../prismjs/components/prism-elixir.min.js | 2 +- .../prismjs/components/prism-excel-formula.js | 6 +- .../components/prism-excel-formula.min.js | 2 +- .../libs/prismjs/components/prism-ftl.js | 4 +- .../libs/prismjs/components/prism-ftl.min.js | 2 +- .../libs/prismjs/components/prism-glsl.js | 15 +- .../libs/prismjs/components/prism-glsl.min.js | 2 +- .../libs/prismjs/components/prism-graphql.js | 20 +- .../prismjs/components/prism-graphql.min.js | 2 +- .../libs/prismjs/components/prism-groovy.js | 3 +- .../prismjs/components/prism-groovy.min.js | 2 +- .../libs/prismjs/components/prism-hcl.js | 8 +- .../libs/prismjs/components/prism-hcl.min.js | 2 +- .../libs/prismjs/components/prism-hlsl.js | 20 + .../libs/prismjs/components/prism-hlsl.min.js | 1 + .../libs/prismjs/components/prism-hpkp.js | 4 +- .../libs/prismjs/components/prism-hpkp.min.js | 2 +- .../libs/prismjs/components/prism-hsts.js | 4 +- .../libs/prismjs/components/prism-hsts.min.js | 2 +- .../libs/prismjs/components/prism-iecst.js | 30 + .../prismjs/components/prism-iecst.min.js | 1 + .../libs/prismjs/components/prism-ignore.js | 23 + .../prismjs/components/prism-ignore.min.js | 1 + .../libs/prismjs/components/prism-io.js | 2 +- .../libs/prismjs/components/prism-io.min.js | 2 +- .../libs/prismjs/components/prism-j.js | 4 +- .../libs/prismjs/components/prism-j.min.js | 2 +- .../libs/prismjs/components/prism-java.js | 4 +- .../libs/prismjs/components/prism-java.min.js | 2 +- .../libs/prismjs/components/prism-javadoc.js | 90 +- .../prismjs/components/prism-javadoc.min.js | 2 +- .../prismjs/components/prism-javascript.js | 8 +- .../components/prism-javascript.min.js | 2 +- .../libs/prismjs/components/prism-jq.js | 4 +- .../libs/prismjs/components/prism-jq.min.js | 2 +- .../libs/prismjs/components/prism-jsdoc.js | 13 +- .../prismjs/components/prism-jsdoc.min.js | 2 +- .../libs/prismjs/components/prism-json.js | 10 +- .../libs/prismjs/components/prism-json.min.js | 2 +- .../libs/prismjs/components/prism-json5.js | 2 +- .../prismjs/components/prism-json5.min.js | 2 +- .../prismjs/components/prism-jsstacktrace.js | 48 + .../components/prism-jsstacktrace.min.js | 1 + .../libs/prismjs/components/prism-jsx.js | 4 +- .../libs/prismjs/components/prism-jsx.min.js | 2 +- .../libs/prismjs/components/prism-julia.js | 36 +- .../prismjs/components/prism-julia.min.js | 2 +- .../libs/prismjs/components/prism-kotlin.js | 2 + .../prismjs/components/prism-kotlin.min.js | 2 +- .../libs/prismjs/components/prism-lilypond.js | 2 +- .../prismjs/components/prism-lilypond.min.js | 2 +- .../prismjs/components/prism-livescript.js | 4 +- .../components/prism-livescript.min.js | 2 +- .../libs/prismjs/components/prism-lolcode.js | 4 +- .../prismjs/components/prism-lolcode.min.js | 2 +- .../libs/prismjs/components/prism-markdown.js | 16 +- .../prismjs/components/prism-markdown.min.js | 2 +- .../libs/prismjs/components/prism-markup.js | 53 +- .../prismjs/components/prism-markup.min.js | 2 +- .../libs/prismjs/components/prism-neon.js | 2 +- .../libs/prismjs/components/prism-neon.min.js | 2 +- .../prismjs/components/prism-objectivec.js | 2 + .../components/prism-objectivec.min.js | 2 +- .../libs/prismjs/components/prism-ocaml.js | 4 +- .../prismjs/components/prism-ocaml.min.js | 2 +- .../libs/prismjs/components/prism-oz.js | 10 +- .../libs/prismjs/components/prism-oz.min.js | 2 +- .../libs/prismjs/components/prism-parigp.js | 4 +- .../prismjs/components/prism-parigp.min.js | 2 +- .../libs/prismjs/components/prism-pascal.js | 4 +- .../prismjs/components/prism-pascal.min.js | 2 +- .../prismjs/components/prism-peoplecode.js | 42 + .../components/prism-peoplecode.min.js | 1 + .../libs/prismjs/components/prism-php.js | 6 +- .../libs/prismjs/components/prism-php.min.js | 2 +- .../prismjs/components/prism-powershell.js | 6 +- .../components/prism-powershell.min.js | 2 +- .../libs/prismjs/components/prism-protobuf.js | 23 +- .../prismjs/components/prism-protobuf.min.js | 2 +- .../libs/prismjs/components/prism-pug.js | 4 +- .../libs/prismjs/components/prism-pug.min.js | 2 +- .../libs/prismjs/components/prism-pure.js | 4 +- .../libs/prismjs/components/prism-pure.min.js | 2 +- .../prismjs/components/prism-purebasic.js | 70 + .../prismjs/components/prism-purebasic.min.js | 1 + .../libs/prismjs/components/prism-python.js | 4 +- .../prismjs/components/prism-python.min.js | 2 +- .../libs/prismjs/components/prism-q.js | 4 +- .../libs/prismjs/components/prism-q.min.js | 2 +- .../libs/prismjs/components/prism-qml.js | 2 +- .../libs/prismjs/components/prism-qml.min.js | 2 +- .../libs/prismjs/components/prism-racket.js | 65 + .../prismjs/components/prism-racket.min.js | 1 + .../libs/prismjs/components/prism-regex.js | 80 +- .../prismjs/components/prism-regex.min.js | 2 +- .../libs/prismjs/components/prism-renpy.js | 2 + .../prismjs/components/prism-renpy.min.js | 2 +- .../libs/prismjs/components/prism-rip.js | 4 +- .../libs/prismjs/components/prism-rip.min.js | 2 +- .../components/prism-robotframework.js | 4 +- .../components/prism-robotframework.min.js | 2 +- .../libs/prismjs/components/prism-ruby.js | 76 +- .../libs/prismjs/components/prism-ruby.min.js | 2 +- .../libs/prismjs/components/prism-rust.js | 183 +- .../libs/prismjs/components/prism-rust.min.js | 2 +- .../libs/prismjs/components/prism-sas.js | 47 +- .../libs/prismjs/components/prism-sas.min.js | 2 +- .../libs/prismjs/components/prism-scheme.js | 50 +- .../prismjs/components/prism-scheme.min.js | 2 +- .../prismjs/components/prism-shell-session.js | 6 +- .../components/prism-shell-session.min.js | 2 +- .../libs/prismjs/components/prism-smali.js | 86 + .../prismjs/components/prism-smali.min.js | 1 + .../libs/prismjs/components/prism-solidity.js | 2 + .../prismjs/components/prism-solidity.min.js | 2 +- .../libs/prismjs/components/prism-sql.js | 2 +- .../libs/prismjs/components/prism-sql.min.js | 2 +- .../libs/prismjs/components/prism-stylus.js | 47 +- .../prismjs/components/prism-stylus.min.js | 2 +- .../libs/prismjs/components/prism-t4-vb.js | 2 +- .../prismjs/components/prism-t4-vb.min.js | 2 +- .../libs/prismjs/components/prism-textile.js | 60 +- .../prismjs/components/prism-textile.min.js | 2 +- .../libs/prismjs/components/prism-toml.js | 20 +- .../libs/prismjs/components/prism-toml.min.js | 2 +- .../libs/prismjs/components/prism-tt2.js | 2 +- .../libs/prismjs/components/prism-tt2.min.js | 2 +- .../libs/prismjs/components/prism-turtle.js | 2 +- .../prismjs/components/prism-turtle.min.js | 2 +- .../prismjs/components/prism-typescript.js | 47 +- .../components/prism-typescript.min.js | 2 +- .../prismjs/components/prism-unrealscript.js | 42 + .../components/prism-unrealscript.min.js | 1 + .../prismjs/components/prism-visual-basic.js | 5 +- .../components/prism-visual-basic.min.js | 2 +- .../prismjs/components/prism-warpscript.js | 21 + .../components/prism-warpscript.min.js | 1 + .../libs/prismjs/components/prism-xml-doc.js | 40 + .../prismjs/components/prism-xml-doc.min.js | 1 + .../libs/prismjs/components/prism-xquery.js | 6 +- .../prismjs/components/prism-xquery.min.js | 2 +- .../libs/prismjs/components/prism-yang.js | 20 + .../libs/prismjs/components/prism-yang.min.js | 1 + .../wwwroot/libs/prismjs/package.json | 11 +- .../plugins/autoloader/prism-autoloader.js | 172 +- .../autoloader/prism-autoloader.min.js | 2 +- .../command-line/prism-command-line.js | 271 +- .../command-line/prism-command-line.min.js | 2 +- .../prism-copy-to-clipboard.js | 4 +- .../prism-copy-to-clipboard.min.js | 2 +- .../file-highlight/prism-file-highlight.js | 170 +- .../prism-file-highlight.min.js | 2 +- .../jsonp-highlight/prism-jsonp-highlight.js | 164 +- .../prism-jsonp-highlight.min.js | 2 +- .../plugins/keep-markup/prism-keep-markup.js | 4 + .../keep-markup/prism-keep-markup.min.js | 2 +- .../line-highlight/prism-line-highlight.css | 10 + .../line-highlight/prism-line-highlight.js | 85 +- .../prism-line-highlight.min.js | 2 +- .../line-numbers/prism-line-numbers.css | 1 - .../line-numbers/prism-line-numbers.js | 204 +- .../line-numbers/prism-line-numbers.min.js | 2 +- .../prism-normalize-whitespace.js | 10 +- .../prism-normalize-whitespace.min.js | 2 +- .../plugins/previewers/prism-previewers.js | 4 +- .../previewers/prism-previewers.min.js | 2 +- .../show-language/prism-show-language.js | 63 +- .../show-language/prism-show-language.min.js | 2 +- .../prism-unescaped-markup.js | 2 +- .../prism-unescaped-markup.min.js | 2 +- .../wwwroot/libs/prismjs/prism.js | 804 +- .../wwwroot/libs/prismjs/themes/prism-coy.css | 10 +- .../libs/prismjs/themes/prism-okaidia.css | 2 +- .../wwwroot/libs/prismjs/themes/prism.css | 1 + .../js/select2-bootstrap-modal-patch.js | 6 +- .../yarn.lock | 388 +- 282 files changed, 19511 insertions(+), 4731 deletions(-) create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/luxon/abp.luxon.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css.map create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap.css.map create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap.min.css create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap.min.css.map create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.js.map create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/jquery-form/jquery.form.min.js.map create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-agda.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-agda.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-al.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-al.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-cypher.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-cypher.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-dhall.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-dhall.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-editorconfig.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-editorconfig.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-hlsl.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-hlsl.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-iecst.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-iecst.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-ignore.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-ignore.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-jsstacktrace.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-jsstacktrace.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-peoplecode.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-peoplecode.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-purebasic.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-purebasic.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-racket.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-racket.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-smali.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-smali.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-unrealscript.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-unrealscript.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-warpscript.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-warpscript.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-xml-doc.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-xml-doc.min.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-yang.js create mode 100644 modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/prismjs/components/prism-yang.min.js diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json index d92848c918..3eb6786a5c 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^2.7.0", - "@abp/virtual-file-explorer": "^2.7.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", + "@abp/virtual-file-explorer": "^3.2.0" } } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css index 8ebd25ff0c..1a404e7b86 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */ .fa, @@ -216,9 +216,6 @@ readers do not read off random characters that represent icons */ .fa-adn:before { content: "\f170"; } -.fa-adobe:before { - content: "\f778"; } - .fa-adversal:before { content: "\f36a"; } @@ -441,6 +438,12 @@ readers do not read off random characters that represent icons */ .fa-bacon:before { content: "\f7e5"; } +.fa-bacteria:before { + content: "\e059"; } + +.fa-bacterium:before { + content: "\e05a"; } + .fa-bahai:before { content: "\f666"; } @@ -631,7 +634,7 @@ readers do not read off random characters that represent icons */ content: "\f49e"; } .fa-box-tissue:before { - content: "\f95b"; } + content: "\e05b"; } .fa-boxes:before { content: "\f468"; } @@ -1002,6 +1005,9 @@ readers do not read off random characters that represent icons */ .fa-cloud-upload-alt:before { content: "\f382"; } +.fa-cloudflare:before { + content: "\e07d"; } + .fa-cloudscale:before { content: "\f383"; } @@ -1207,7 +1213,7 @@ readers do not read off random characters that represent icons */ content: "\f6ca"; } .fa-dailymotion:before { - content: "\f952"; } + content: "\e052"; } .fa-dashcube:before { content: "\f210"; } @@ -1218,6 +1224,9 @@ readers do not read off random characters that represent icons */ .fa-deaf:before { content: "\f2a4"; } +.fa-deezer:before { + content: "\e077"; } + .fa-delicious:before { content: "\f1a5"; } @@ -1401,6 +1410,9 @@ readers do not read off random characters that represent icons */ .fa-edge:before { content: "\f282"; } +.fa-edge-legacy:before { + content: "\e078"; } + .fa-edit:before { content: "\f044"; } @@ -1531,7 +1543,7 @@ readers do not read off random characters that represent icons */ content: "\f050"; } .fa-faucet:before { - content: "\f905"; } + content: "\e005"; } .fa-fax:before { content: "\f1ac"; } @@ -1654,7 +1666,7 @@ readers do not read off random characters that represent icons */ content: "\f269"; } .fa-firefox-browser:before { - content: "\f907"; } + content: "\e007"; } .fa-first-aid:before { content: "\f479"; } @@ -1893,6 +1905,9 @@ readers do not read off random characters that represent icons */ .fa-google-drive:before { content: "\f3aa"; } +.fa-google-pay:before { + content: "\e079"; } + .fa-google-play:before { content: "\f3ab"; } @@ -1986,6 +2001,9 @@ readers do not read off random characters that represent icons */ .fa-grunt:before { content: "\f3ad"; } +.fa-guilded:before { + content: "\e07e"; } + .fa-guitar:before { content: "\f7a6"; } @@ -2020,7 +2038,7 @@ readers do not read off random characters that represent icons */ content: "\f4be"; } .fa-hand-holding-medical:before { - content: "\f95c"; } + content: "\e05c"; } .fa-hand-holding-usd:before { content: "\f4c0"; } @@ -2062,7 +2080,7 @@ readers do not read off random characters that represent icons */ content: "\f257"; } .fa-hand-sparkles:before { - content: "\f95d"; } + content: "\e05d"; } .fa-hand-spock:before { content: "\f259"; } @@ -2074,16 +2092,16 @@ readers do not read off random characters that represent icons */ content: "\f4c4"; } .fa-hands-wash:before { - content: "\f95e"; } + content: "\e05e"; } .fa-handshake:before { content: "\f2b5"; } .fa-handshake-alt-slash:before { - content: "\f95f"; } + content: "\e05f"; } .fa-handshake-slash:before { - content: "\f960"; } + content: "\e060"; } .fa-hanukiah:before { content: "\f6e6"; } @@ -2107,16 +2125,16 @@ readers do not read off random characters that represent icons */ content: "\f0a0"; } .fa-head-side-cough:before { - content: "\f961"; } + content: "\e061"; } .fa-head-side-cough-slash:before { - content: "\f962"; } + content: "\e062"; } .fa-head-side-mask:before { - content: "\f963"; } + content: "\e063"; } .fa-head-side-virus:before { - content: "\f964"; } + content: "\e064"; } .fa-heading:before { content: "\f1dc"; } @@ -2160,6 +2178,9 @@ readers do not read off random characters that represent icons */ .fa-history:before { content: "\f1da"; } +.fa-hive:before { + content: "\e07f"; } + .fa-hockey-puck:before { content: "\f453"; } @@ -2221,7 +2242,7 @@ readers do not read off random characters that represent icons */ content: "\f6f1"; } .fa-house-user:before { - content: "\f965"; } + content: "\e065"; } .fa-houzz:before { content: "\f27c"; } @@ -2257,7 +2278,7 @@ readers do not read off random characters that represent icons */ content: "\f47f"; } .fa-ideal:before { - content: "\f913"; } + content: "\e013"; } .fa-igloo:before { content: "\f7ae"; } @@ -2289,11 +2310,17 @@ readers do not read off random characters that represent icons */ .fa-info-circle:before { content: "\f05a"; } +.fa-innosoft:before { + content: "\e080"; } + .fa-instagram:before { content: "\f16d"; } .fa-instagram-square:before { - content: "\f955"; } + content: "\e055"; } + +.fa-instalod:before { + content: "\e081"; } .fa-intercom:before { content: "\f7af"; } @@ -2410,7 +2437,7 @@ readers do not read off random characters that represent icons */ content: "\f5fc"; } .fa-laptop-house:before { - content: "\f966"; } + content: "\e066"; } .fa-laptop-medical:before { content: "\f812"; } @@ -2533,7 +2560,7 @@ readers do not read off random characters that represent icons */ content: "\f604"; } .fa-lungs-virus:before { - content: "\f967"; } + content: "\e067"; } .fa-lyft:before { content: "\f3c3"; } @@ -2662,7 +2689,7 @@ readers do not read off random characters that represent icons */ content: "\f753"; } .fa-microblog:before { - content: "\f91a"; } + content: "\e01a"; } .fa-microchip:before { content: "\f2db"; } @@ -2704,7 +2731,7 @@ readers do not read off random characters that represent icons */ content: "\f289"; } .fa-mixer:before { - content: "\f956"; } + content: "\e056"; } .fa-mizuni:before { content: "\f3cc"; } @@ -2814,6 +2841,9 @@ readers do not read off random characters that represent icons */ .fa-object-ungroup:before { content: "\f248"; } +.fa-octopus-deploy:before { + content: "\e082"; } + .fa-odnoklassniki:before { content: "\f263"; } @@ -2944,7 +2974,7 @@ readers do not read off random characters that represent icons */ content: "\f704"; } .fa-people-arrows:before { - content: "\f968"; } + content: "\e068"; } .fa-people-carry:before { content: "\f4ce"; } @@ -2952,6 +2982,9 @@ readers do not read off random characters that represent icons */ .fa-pepper-hot:before { content: "\f816"; } +.fa-perbyte:before { + content: "\e083"; } + .fa-percent:before { content: "\f295"; } @@ -3010,7 +3043,7 @@ readers do not read off random characters that represent icons */ content: "\f1a7"; } .fa-pied-piper-square:before { - content: "\f91e"; } + content: "\e01e"; } .fa-piggy-bank:before { content: "\f4d3"; } @@ -3043,7 +3076,7 @@ readers do not read off random characters that represent icons */ content: "\f5b0"; } .fa-plane-slash:before { - content: "\f969"; } + content: "\e069"; } .fa-play:before { content: "\f04b"; } @@ -3121,10 +3154,10 @@ readers do not read off random characters that represent icons */ content: "\f542"; } .fa-pump-medical:before { - content: "\f96a"; } + content: "\e06a"; } .fa-pump-soap:before { - content: "\f96b"; } + content: "\e06b"; } .fa-pushed:before { content: "\f3e1"; } @@ -3315,6 +3348,9 @@ readers do not read off random characters that represent icons */ .fa-rupee-sign:before { content: "\f156"; } +.fa-rust:before { + content: "\e07a"; } + .fa-sad-cry:before { content: "\f5b3"; } @@ -3412,7 +3448,7 @@ readers do not read off random characters that represent icons */ content: "\f3ed"; } .fa-shield-virus:before { - content: "\f96c"; } + content: "\e06c"; } .fa-ship:before { content: "\f21a"; } @@ -3427,7 +3463,7 @@ readers do not read off random characters that represent icons */ content: "\f54b"; } .fa-shopify:before { - content: "\f957"; } + content: "\e057"; } .fa-shopping-bag:before { content: "\f290"; } @@ -3471,6 +3507,9 @@ readers do not read off random characters that represent icons */ .fa-simplybuilt:before { content: "\f215"; } +.fa-sink:before { + content: "\e06d"; } + .fa-sistrix:before { content: "\f3ee"; } @@ -3565,7 +3604,7 @@ readers do not read off random characters that represent icons */ content: "\f7d2"; } .fa-soap:before { - content: "\f96e"; } + content: "\e06e"; } .fa-socks:before { content: "\f696"; } @@ -3733,7 +3772,7 @@ readers do not read off random characters that represent icons */ content: "\f2f2"; } .fa-stopwatch-20:before { - content: "\f96f"; } + content: "\e06f"; } .fa-store:before { content: "\f54e"; } @@ -3742,10 +3781,10 @@ readers do not read off random characters that represent icons */ content: "\f54f"; } .fa-store-alt-slash:before { - content: "\f970"; } + content: "\e070"; } .fa-store-slash:before { - content: "\f971"; } + content: "\e071"; } .fa-strava:before { content: "\f428"; } @@ -3957,6 +3996,9 @@ readers do not read off random characters that represent icons */ .fa-ticket-alt:before { content: "\f3ff"; } +.fa-tiktok:before { + content: "\e07b"; } + .fa-times:before { content: "\f00d"; } @@ -3985,7 +4027,7 @@ readers do not read off random characters that represent icons */ content: "\f71e"; } .fa-toilet-paper-slash:before { - content: "\f972"; } + content: "\e072"; } .fa-toolbox:before { content: "\f552"; } @@ -4015,7 +4057,7 @@ readers do not read off random characters that represent icons */ content: "\f637"; } .fa-trailer:before { - content: "\f941"; } + content: "\e041"; } .fa-train:before { content: "\f238"; } @@ -4113,6 +4155,9 @@ readers do not read off random characters that represent icons */ .fa-umbrella-beach:before { content: "\f5ca"; } +.fa-uncharted:before { + content: "\e084"; } + .fa-underline:before { content: "\f0cd"; } @@ -4126,7 +4171,7 @@ readers do not read off random characters that represent icons */ content: "\f404"; } .fa-unity:before { - content: "\f949"; } + content: "\e049"; } .fa-universal-access:before { content: "\f29a"; } @@ -4143,6 +4188,9 @@ readers do not read off random characters that represent icons */ .fa-unlock-alt:before { content: "\f13e"; } +.fa-unsplash:before { + content: "\e07c"; } + .fa-untappd:before { content: "\f405"; } @@ -4233,6 +4281,9 @@ readers do not read off random characters that represent icons */ .fa-users-cog:before { content: "\f509"; } +.fa-users-slash:before { + content: "\e073"; } + .fa-usps:before { content: "\f7e1"; } @@ -4260,6 +4311,12 @@ readers do not read off random characters that represent icons */ .fa-venus-mars:before { content: "\f228"; } +.fa-vest:before { + content: "\e085"; } + +.fa-vest-patches:before { + content: "\e086"; } + .fa-viacoin:before { content: "\f237"; } @@ -4300,13 +4357,13 @@ readers do not read off random characters that represent icons */ content: "\f1ca"; } .fa-virus:before { - content: "\f974"; } + content: "\e074"; } .fa-virus-slash:before { - content: "\f975"; } + content: "\e075"; } .fa-viruses:before { - content: "\f976"; } + content: "\e076"; } .fa-vk:before { content: "\f189"; } @@ -4350,6 +4407,9 @@ readers do not read off random characters that represent icons */ .fa-warehouse:before { content: "\f494"; } +.fa-watchman-monitoring:before { + content: "\e087"; } + .fa-water:before { content: "\f773"; } @@ -4425,6 +4485,9 @@ readers do not read off random characters that represent icons */ .fa-wizards-of-the-coast:before { content: "\f730"; } +.fa-wodu:before { + content: "\e088"; } + .fa-wolf-pack-battalion:before { content: "\f514"; } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css index 1070fbe73e..bcbee61ddd 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */ .fa.fa-glass:before { diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot index a1bc094ab14d8c7d84d8c59aa511de9e69440d0a..958684e26ab53aabf8ccce6120963d900dc64fdf 100644 GIT binary patch delta 11789 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 Qpx!+@@LN5-^n>UB2R2V)hX4Qo delta 8141 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 LWIq4(gZ2La(Mbl6 diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg index 46ad237a61..2b7cf17b9a 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg @@ -1,16 +1,12 @@ - -Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 +Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020 By Robert Madole Copyright (c) Font Awesome - + + + + + + + + + + + + + + + + + + + + + + + + + + +d="M400 416c26.4922 0 48 -21.5078 48 -48v-352c0 -26.4922 -21.5078 -48 -48 -48h-137.25v152.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4199 38.7305h31.2705v61s-28.3809 4.83984 -55.5205 4.83984 +c-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63v-152.31h-137.25c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352z" /> +d="M22.2002 416l466.8 -0.200195c0.954102 -0.0136719 1.875 -0.0800781 2.7998 -0.200195c7.58789 -1.25 13.3994 -7.83203 13.3994 -15.7715c0 -0.860352 -0.0683594 -1.7041 -0.199219 -2.52832l-67.9004 -416.8c-1.24902 -7.58887 -7.84277 -13.4014 -15.7832 -13.4014 +c-0.0722656 0 -0.144531 0 -0.216797 0.000976562h-325.699c-10.7129 0.0869141 -19.5967 7.94727 -21.3008 18.2002l-67.8994 412.101c-0.116211 0.924805 -0.182617 1.84668 -0.200195 2.7998c0.108398 8.7373 7.23242 15.8008 15.9951 15.8008 +c0.0683594 0 0.136719 0 0.205078 -0.000976562zM308.1 118.2l25.2002 147h-157.3l28.0996 -147h104z" /> +d="M420.55 146.07c-13.2461 0 -24 10.7539 -24 24s10.7539 24 24 24s24 -10.7539 24 -24s-10.7539 -24 -24 -24zM155.45 146.07c-13.2461 0 -24 10.7539 -24 24s10.7539 24 24 24s24 -10.7539 24 -24s-10.7539 -24 -24 -24zM429.15 290.55l47.9395 83 +c1.06738 1.59082 1.69043 3.50391 1.69043 5.5625c0 5.51855 -4.48047 10 -10 10c-3.93359 0 -7.32812 -2.25684 -8.95996 -5.5625v0l-48.54 -84.0693c-37.5742 16.8516 -79.2197 26.2266 -123.037 26.2266c-43.8164 0 -85.9492 -9.375 -123.523 -26.2266l-48.54 84.0693 +c-1.63184 3.30566 -5.03809 5.58203 -8.97168 5.58203c-5.51953 0 -10 -4.48145 -10 -10c0 -2.05859 0.634766 -3.99121 1.70215 -5.58203v0l47.9395 -83c-82.3193 -44.7695 -138.609 -128.1 -146.85 -226.55h576c-8.24023 98.4502 -64.54 181.78 -146.85 226.55z" /> - + @@ -355,7 +558,7 @@ c-22.3994 0 -34.0996 13.0996 -34.0996 35.2998h100.2c0.0996094 2.2998 0.299805 4. d="M496 192c0 -137 -111.2 -248 -248.4 -248c-113.8 0 -209.6 76.2998 -239 180.4l95.2002 -39.3008c6.40039 -32.0996 34.9004 -56.3994 68.9004 -56.3994c39.2002 0 71.8994 32.3994 70.2002 73.5l84.5 60.2002c52.0996 -1.30078 95.7998 40.8994 95.7998 93.5 c0 51.5996 -42 93.5 -93.7002 93.5s-93.7002 -42 -93.7002 -93.5v-1.2002l-59.2002 -85.7002c-15.5 0.900391 -30.6992 -3.40039 -43.5 -12.0996l-133.1 55c10.2002 127.699 117.1 228.1 247.6 228.1c137.2 0 248.4 -111 248.4 -248zM155.7 63.7002 c19.7998 -8.2002 42.5 1.09961 50.7998 21c8.2998 19.7998 -1.09961 42.5 -20.9004 50.7002l-31.5 13c12.2002 4.59961 26 4.7998 38.9004 -0.600586c13 -5.39941 23.0996 -15.5996 28.5 -28.5996s5.2998 -27.2998 -0.0996094 -40.2998 -c-11.2002 -26.8008 -42.1006 -39.6006 -69 -28.4004c-10.2119 4.26953 -22.3975 15.8281 -27.2002 25.7998zM329.5 193.6c-34.4004 0 -62.4004 28 -62.4004 62.3008c0 34.2998 28 62.2998 62.4004 62.2998s62.4004 -28 62.4004 -62.2998 +c-11.2002 -26.8008 -42.1006 -39.6006 -69 -28.4004c-11.9453 4.99414 -21.6055 14.1826 -27.2002 25.7998zM329.5 193.6c-34.4004 0 -62.4004 28 -62.4004 62.3008c0 34.2998 28 62.2998 62.4004 62.2998s62.4004 -28 62.4004 -62.2998 c0 -34.3008 -27.9004 -62.3008 -62.4004 -62.3008zM329.6 209.2c25.9004 0 46.9004 21 46.9004 46.7998c0 25.9004 -21 46.7998 -46.9004 46.7998c-25.8994 0 -46.8994 -21 -46.8994 -46.7998c0.0996094 -25.7998 21.0996 -46.7998 46.8994 -46.7998z" /> +d="M42.9004 207.68l99.6191 -48.6094c19.2002 -9.40039 16.2002 -37.5107 -4.5 -42.71l-107.52 -26.8105c-1.78223 -0.448242 -3.64746 -0.685547 -5.56738 -0.685547c-11.7246 0 -21.3848 8.89453 -22.6426 20.2861c-0.853516 7.44141 -1.29297 15.0078 -1.29297 22.6768 +c0 21.9561 3.65723 42.9111 10.293 62.6426c3.03906 9.02148 11.5723 15.5264 21.6133 15.5264c3.5791 0 6.98145 -0.84375 9.99707 -2.31641zM86.9004 -31.5703c-6.01172 4.1123 -9.9248 11.0195 -9.9248 18.8457c0 5.85742 2.21191 11.2021 5.84473 15.2441l74.21 82.4004 +c14.3096 15.8105 40.5098 5.2002 39.8096 -16.0996l-3.89941 -110.82c-0.414062 -12.21 -10.4365 -22.0088 -22.7461 -22.0088c-1.32129 0 -2.61523 0.112305 -3.87402 0.329102c-28.9365 4.90039 -56.1416 16.1621 -79.4199 32.1094zM232.24 78.3496 +c-11.2998 18.1104 6.2002 40.4102 26.5098 33.9102l105.42 -34.2598c9.14453 -3.04102 15.7305 -11.6855 15.7305 -21.8447c0 -3.46289 -0.767578 -6.74805 -2.14062 -9.69531c-12.5361 -26.3281 -30.4697 -49.2246 -52.71 -67.6104 +c-3.96191 -3.26465 -9.03809 -5.25781 -14.5674 -5.25781c-8.18555 0 -15.375 4.29785 -19.4326 10.7578zM380.57 210.58c1.21289 -2.79883 1.93359 -5.89941 1.93359 -9.1416c0 -10.4385 -6.96875 -19.2627 -16.5039 -22.0684l-106.64 -30.5098 +c-20.5 -5.90039 -37.1006 17.0098 -25.2002 34.71l62 91.9199c4.10742 6.08398 11.0635 10.0615 18.9502 10.0615c5.76172 0 11.0283 -2.1377 15.0498 -5.66211c21.5781 -19.0479 38.7783 -42.5518 50.4102 -69.3096zM62.1104 417.82 +c34.3301 16.3438 72.6104 26.9434 112.33 30.0996c0.610352 0.0498047 1.20703 0.078125 1.83008 0.078125c12.5127 0 22.6709 -10.1582 22.6709 -22.6699c0 -0.0693359 -0.000976562 -0.138672 -0.000976562 -0.208008v-208.34 +c0 -23.2998 -30.9102 -31.6006 -42.6104 -11.4004l-104.12 180.44c-1.92871 3.35059 -3.06738 7.24805 -3.06738 11.3887c0 9.07422 5.29883 16.9199 12.9678 20.6113z" /> +d="M528.91 269.18c28.8652 -26.2666 46.9404 -64.1113 46.9404 -106.176c0 -0.0615234 -0.000976562 -0.12207 -0.000976562 -0.183594h0.0302734c-0.00195312 -79.4414 -64.5479 -143.928 -143.989 -143.928c-37.7363 0 -72.0996 14.5527 -97.7803 38.3477 +l-46.1104 -50.1699l-46.1396 50.1992c-25.6064 -23.4443 -59.8145 -37.7793 -97.2334 -37.7793c-79.4268 0 -143.911 64.4844 -143.911 143.911c0 41.8076 17.8662 79.4756 46.374 105.778l-47.0898 51.2402h104.66c52.2266 35.5498 115.938 56.3369 183.822 56.3369 +s130.95 -20.7871 183.178 -56.3369h104.34zM144.06 65.4297c53.751 0 97.3906 43.6396 97.3906 97.3906s-43.6396 97.3896 -97.3906 97.3896s-97.3896 -43.6387 -97.3896 -97.3896s43.6387 -97.3906 97.3896 -97.3906zM288 165.63c0 64.0801 46.6104 119.07 108.08 142.59 +c-33.2285 13.8467 -70.0527 21.4941 -108.272 21.4941c-38.2207 0 -74.6689 -7.64746 -107.897 -21.4941c61.4697 -23.5098 108.09 -78.5 108.09 -142.59zM431.88 65.4297c53.7568 0.00292969 97.4004 43.6475 97.4004 97.4053c0 53.7598 -43.6455 97.4053 -97.4053 97.4053 +c-53.7588 0 -97.4053 -43.6455 -97.4053 -97.4053c0 -53.7578 43.6436 -97.4023 97.4004 -97.4053h0.00976562zM144.06 213.88c0.0175781 0 0.0332031 -0.000976562 0.0507812 -0.000976562c28.1299 0 50.9717 -22.8242 51 -50.9492v-0.109375 +c0 -28.1807 -22.8799 -51.0605 -51.0605 -51.0605s-51.0596 22.8799 -51.0596 51.0605s22.8789 51.0596 51.0596 51.0596h0.00976562zM431.88 213.88c28.1807 0 51.0605 -22.8789 51.0605 -51.0596s-22.8799 -51.0605 -51.0605 -51.0605s-51.0596 22.8799 -51.0596 51.0605 +s22.8789 51.0596 51.0596 51.0596z" /> +d="M274.69 173.31l-108.69 -71.3096l71.3096 108.69zM256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM411.85 265.21c-2.88672 -1.20801 -4.9082 -4.0625 -4.9082 -7.38574c0 -1.08496 0.21582 -2.12012 0.608398 -3.06445v0 +c1.20215 -2.90039 4.06348 -4.93457 7.39648 -4.93457c1.08105 0 2.1123 0.214844 3.05371 0.604492l14.75 6.11035c2.90234 1.20117 4.93848 4.06348 4.93848 7.39746c0 1.08496 -0.216797 2.11914 -0.608398 3.0625v0c-1.2002 2.90527 -4.06348 4.94336 -7.39941 4.94336 +c-1.08008 0 -2.11035 -0.214844 -3.05078 -0.603516zM314.43 354c-0.396484 -0.949219 -0.625 -1.99219 -0.625 -3.08496c0 -3.33398 2.04395 -6.19336 4.94531 -7.39551v0c0.941406 -0.388672 1.97461 -0.613281 3.05566 -0.613281 +c3.33301 0 6.19238 2.04297 7.39453 4.94336l6.12988 14.7803c0.389648 0.941406 0.613281 1.97461 0.613281 3.05566c0 3.33301 -2.04297 6.19238 -4.94336 7.39453v0c-0.944336 0.392578 -1.98047 0.618164 -3.06641 0.618164 +c-3.32324 0 -6.17578 -2.03125 -7.38379 -4.91797zM256 388c-4.41504 0 -8 -3.58496 -8 -8v-16c0 -4.41504 3.58496 -8 8 -8v0c4.41504 0 8 3.58496 8 8v16c0 4.41504 -3.58496 8 -8 8v0zM181 373.08c-2.89941 -1.20215 -4.93262 -4.0625 -4.93262 -7.39551 +c0 -1.06934 0.210938 -2.09082 0.592773 -3.02441l6.12988 -14.7803c1.16504 -2.97754 4.05762 -5.07812 7.44531 -5.07812c4.41602 0 8 3.58496 8 8c0 1.13672 -0.237305 2.21875 -0.665039 3.19824l-6.11035 14.75c-1.20117 2.90234 -4.06348 4.93848 -7.39746 4.93848 +c-1.08496 0 -2.11914 -0.216797 -3.0625 -0.608398zM117.42 330.59c-1.44727 -1.44824 -2.35254 -3.44922 -2.35254 -5.65625c0 -2.19141 0.883789 -4.17773 2.3125 -5.62402l11.3105 -11.3096c1.44727 -1.44727 3.44922 -2.34277 5.65527 -2.34277 +c2.20703 0 4.20605 0.895508 5.6543 2.34277v0c1.43848 1.44629 2.32715 3.44238 2.32715 5.6416c0 2.19824 -0.888672 4.19141 -2.32715 5.63867l-11.2695 11.3096c-1.44824 1.44727 -3.4502 2.34277 -5.65625 2.34277c-2.20703 0 -4.20605 -0.895508 -5.6543 -2.34277v0z +M60 192c0 -4.41504 3.58496 -8 8 -8h16c4.41504 0 8 3.58496 8 8v0c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v0zM100.15 118.79c2.88672 1.20801 4.9082 4.0625 4.9082 7.38574c0 1.08496 -0.21582 2.12012 -0.608398 3.06445v0 +c-1.20215 2.90039 -4.06348 4.93457 -7.39648 4.93457c-1.08105 0 -2.1123 -0.214844 -3.05371 -0.604492l-14.75 -6.11035c-2.90234 -1.20117 -4.93848 -4.06348 -4.93848 -7.39746c0 -1.08496 0.216797 -2.11914 0.608398 -3.0625v0 +c1.2002 -2.90527 4.06348 -4.94336 7.39941 -4.94336c1.08008 0 2.11035 0.214844 3.05078 0.603516zM104.48 254.79c0.386719 0.939453 0.609375 1.93945 0.609375 3.0166c0 3.33203 -2.04102 6.19043 -4.93945 7.39355l-14.7803 6.12988 +c-0.941406 0.389648 -1.97461 0.613281 -3.05566 0.613281c-3.33301 0 -6.19238 -2.04297 -7.39453 -4.94336v0c-0.392578 -0.944336 -0.618164 -1.98047 -0.618164 -3.06641c0 -3.32324 2.03125 -6.17578 4.91797 -7.38379l14.7803 -6.12012 +c0.945312 -0.393555 1.9834 -0.619141 3.07129 -0.619141c3.34668 0 6.21582 2.05957 7.40918 4.97949v0zM197.57 30c0.427734 0.979492 0.672852 2.07129 0.672852 3.20801c0 4.41602 -3.58496 8 -8 8c-3.38867 0 -6.28809 -2.11035 -7.45312 -5.08789l-6.12988 -14.7803 +c-0.389648 -0.941406 -0.611328 -1.9834 -0.611328 -3.06543c0 -4.41699 3.58594 -8.00293 8.00293 -8.00293c3.33496 0 6.19727 2.04492 7.39844 4.94824zM264 4v16c0 4.41504 -3.58496 8 -8 8v0c-4.41504 0 -8 -3.58496 -8 -8v-16c0 -4.41504 3.58496 -8 8 -8v0 +c4.41504 0 8 3.58496 8 8zM331 10.9199c2.89941 1.20215 4.93262 4.0625 4.93262 7.39551c0 1.06934 -0.210938 2.09082 -0.592773 3.02441l-6.12988 14.7803c-1.20215 2.90039 -4.06348 4.93457 -7.39648 4.93457c-1.08105 0 -2.1123 -0.214844 -3.05371 -0.604492v0 +c-2.90039 -1.20215 -4.93457 -4.06348 -4.93457 -7.39648c0 -1.08105 0.214844 -2.1123 0.604492 -3.05371l6.11035 -14.75c1.20117 -2.90234 4.06348 -4.93848 7.39746 -4.93848c1.08496 0 2.11914 0.216797 3.0625 0.608398v0zM394.58 53.4102 +c1.44727 1.44824 2.35254 3.44922 2.35254 5.65625c0 2.19141 -0.883789 4.17773 -2.3125 5.62402l-11.3105 11.3096c-1.44727 1.44727 -3.44922 2.34277 -5.65527 2.34277c-2.20703 0 -4.20605 -0.895508 -5.6543 -2.34277v0 +c-1.43848 -1.44629 -2.32715 -3.44238 -2.32715 -5.6416c0 -2.19824 0.888672 -4.19141 2.32715 -5.63867l11.2695 -11.3096c1.44824 -1.44727 3.4502 -2.34277 5.65625 -2.34277c2.20703 0 4.20605 0.895508 5.6543 2.34277v0zM286.25 161.75l115.41 175.91 +l-175.91 -115.41l-115.41 -175.91zM437.08 117c0.392578 0.944336 0.618164 1.98047 0.618164 3.06641c0 3.32324 -2.03125 6.17578 -4.91797 7.38379l-14.7803 6.12012c-0.949219 0.396484 -1.99219 0.625 -3.08496 0.625c-3.33398 0 -6.19336 -2.04395 -7.39551 -4.94531 +v0c-0.388672 -0.941406 -0.613281 -1.97461 -0.613281 -3.05566c0 -3.33301 2.04297 -6.19238 4.94336 -7.39453l14.7803 -6.12988c0.941406 -0.389648 1.97461 -0.613281 3.05566 -0.613281c3.33301 0 6.19238 2.04297 7.39453 4.94336v0zM444 184c4.41504 0 8 3.58496 8 8 +v0c0 4.41504 -3.58496 8 -8 8h-16c-4.41504 0 -8 -3.58496 -8 -8v0c0 -4.41504 3.58496 -8 8 -8h16z" /> +c0.119141 -0.120117 0.119141 -0.120117 0.119141 -0.240234c3.54297 -13.2549 6.04102 -27.1152 7.32031 -41.1494v-0.120117l0.360352 -4.67969v-0.120117c0 -1.56055 0.120117 -3.12012 0.239258 -4.68066z" /> +c1.84961 -3.23242 3.49902 -6.64551 4.88965 -10.1396c-4.21973 4.65039 -40.0596 44.2002 -99.0596 -1c-26.6719 -19.334 -46.8008 -46.8369 -56.9697 -78.9199c-14.1406 -40.4004 -12.8398 -88.5801 20.0996 -136c12.2471 -18.1914 27.9951 -33.3955 46.6396 -45z +M463.49 70.6602c2.1748 -1.37305 3.60742 -3.80176 3.60742 -6.56152c0 -1.53418 -0.447266 -2.96484 -1.21777 -4.16895c-47.5703 -75.4297 -127.86 -108.87 -163 -108.87c-22.7002 0 -48.1299 6.95996 -71.7002 19.6104c-33 17.6699 -49.4893 38.7598 -56 47.6699 +c-46.3301 63.5303 -28.25 122.29 -13.3301 151.66c9.73145 19.1172 22.8193 35.9404 38.7607 50c-4.04688 -8.04102 -6.40625 -17.168 -6.52051 -26.75c0 -80.9404 79.8506 -144 171.521 -144c0.116211 0 0.310547 0.0693359 0.426758 0.0693359 +c24.3125 0 47.6045 4.40137 69.123 12.4502c6.98145 2.61816 13.8652 5.69824 20.4102 9.12012c1.11328 0.618164 2.41113 0.970703 3.77441 0.970703c1.52344 0 2.94531 -0.44043 4.14551 -1.2002z" /> +d="M455.93 424.8c9.41992 2.40039 15.0703 -10.25 6.99023 -15.6797c-98.2295 -65.9199 -120.439 -127.561 -126.229 -160.18c-33.5205 -188.881 -101.37 -119.32 -184.311 -226.65c25.7607 -14.8125 55.8076 -23.3984 87.6299 -23.4004 +c97.6504 0 177.09 79.4502 177.09 177.11c-0.00488281 45.0508 -16.9824 86.25 -44.8496 117.41c4.72754 9.75293 10.4238 18.9131 17 27.3994c36.3574 -37.3457 58.75 -88.3779 58.75 -144.564v-0.245117c0 -114.87 -93.1299 -208 -208 -208s-208 93.1201 -208 208 +s93.1299 208 208 208c36.7422 -0.000976562 71.4697 -9.77246 101.35 -26.6602c46.4404 38.9697 87.8809 60.6602 114.58 67.46zM125 41.5996c64.7695 140.881 125.64 231.641 191.63 293.75c-23.0674 11.3037 -49.1611 17.75 -76.5615 17.75h-0.0683594 +c-97.6504 0 -177.1 -79.4395 -177.1 -177.1c0.0234375 -53.8203 24.0684 -102.002 62.0996 -134.4z" /> - + +c-3.24219 0.279297 -6.17676 1.69629 -8.36914 3.84961c-1.91016 2.76074 -3.81055 5.63086 -3.81055 8.38086c0.0205078 5.62988 3.86035 12.1992 13.2002 20.5498c44.4795 42.3701 67.3203 97 67.4795 165c0.180664 61.4697 -21.5898 112.45 -64.8193 154.06 +c-10.4004 10.6406 -16 17.1201 -16 21.9004c0 2.75977 1.91992 5.50977 3.83008 7.41992c2.35938 1.7207 5.26562 2.76855 8.38965 2.83984c8.51953 0 21 -8.79004 35.8799 -25.6904z" /> - + +d="M498.252 213.777c0.129883 -0.613281 0.322266 -1.21777 0.561523 -1.78223v-37.0557c-0.194336 -0.300781 -0.516602 -0.583008 -0.552734 -0.900391c-0.619141 -5.36426 -0.837891 -10.8076 -1.87012 -16.0869c-2.06934 -10.6074 -4.15723 -21.2393 -7.0166 -31.6523 +c-4.94531 -18.0205 -12.7578 -34.8809 -22.2998 -50.9258c-8.94336 -15.126 -19.4043 -28.9668 -31.4268 -41.6387c-3.74609 -3.92188 -7.54688 -7.80078 -11.5107 -11.5c-5.31152 -4.95703 -10.5146 -10.1094 -16.2998 -14.457 +c-9.3418 -7.02344 -18.9883 -13.6533 -28.7373 -20.1006c-15.083 -9.81543 -31.6211 -17.9053 -48.9512 -23.8174c-15.3828 -5.38281 -31.1533 -9.38574 -47.4893 -10.7178c-2.52734 -0.206055 -5.02051 -0.753906 -7.52734 -1.14258h-32.2891 +c-0.358398 0.245117 -0.762695 0.436523 -1.18945 0.55957c-6.1377 0.620117 -12.3418 0.863281 -18.4121 1.87305c-13.8301 2.22949 -27.5977 5.58398 -40.6416 9.83496c-19.5498 6.43359 -38.4463 15.0176 -55.8994 25.2773 +c-15.0488 8.79004 -28.9365 18.9688 -41.7871 30.5859c-9.6875 8.70605 -18.3936 18.0898 -26.3584 28.416c-9.38184 12.1963 -17.4385 25.4316 -24 39.5283c-7.5918 16.6592 -13.3467 34.7812 -16.7295 53.2998c-2.35547 13.1611 -3.85059 26.5459 -4.4248 40.2402 +c-0.136719 3.0332 -0.209961 5.74121 -0.209961 8.80859c0 9.05566 0.599609 17.9717 1.76172 26.7119c1.52637 11.874 4.15625 23.6367 7.69043 34.7588c5.05762 15.7021 12.0283 30.7871 20.4941 44.6006c9.58203 15.9961 20.7793 30.6025 33.6484 43.9502 +c9.55469 9.83496 19.7539 19.0605 29.9268 28.2676c5.70605 5.1582 11.8066 9.9082 17.9736 14.5186c12.0029 9.04004 24.6963 17.1025 38.0801 24.1572c12.5137 6.63281 25.9795 12.1963 39.7686 16.3555c10.9453 3.41016 22.5254 5.84375 34.2559 7.09961 +c2.42773 0.225586 4.82617 0.761719 7.23633 1.15039c10.7627 -0.00195312 21.5254 0 32.2881 0.00585938c0.299805 -0.195312 0.583984 -0.516602 0.899414 -0.552734c6.87793 -0.81543 13.8467 -1.16797 20.627 -2.48242 +c11.2432 -2.18359 22.4971 -4.51465 33.5156 -7.61523c19.999 -5.78125 39.2266 -14.2031 56.7227 -24.668c17.2832 -10.0947 32.9639 -22.1357 47.1133 -36.1152c6.71973 -6.90527 12.9209 -14.0508 18.8174 -21.6895c13.4639 -16.959 24.0283 -36.4561 30.874 -57.5 +c3.88867 -11.8086 7.16211 -24.2148 9.62207 -36.5996c2.0459 -10.1748 2.53809 -20.6602 3.74609 -31zM337.135 214.927l0.00488281 67.2695c-35.2686 0 -53.1152 -9.36719 -62.04 -36.1895v31.9316h-73.5176v-190.738h73.5127v93.667 +c0 22.1396 6.37012 37.04 33.5703 37.04c11.8984 0 28.4697 -2.98047 28.4697 -2.98047z" /> +c-0.0341797 0.227539 -0.0527344 0.459961 -0.0527344 0.697266c0 2.30566 1.70117 4.21387 3.91309 4.55273c0.240234 0.0400391 -2.12988 0 22.25 0c8.78027 0.879883 11.6396 -6.03027 12.5498 -10.3701l35.7197 -140.83l33.1602 140.83 +c0.530273 3.21973 2.94043 11.0693 12.7998 10.2393h17.1602c2.16992 0.180664 11.1104 0.5 12.6807 -10.3691l33.4199 -142.631l36.8701 142.631c0.479492 2.17969 2.71973 11.3691 12.6797 10.3691h19.7197c0.850586 0.130859 6.15039 0.810547 5.25 -8.5791 +c-0.429688 -1.85059 3.41016 10.6592 -52.75 -169.9c-1.14941 -5.50977 -4.82031 -11.0898 -12.6797 -10.3701h-18.6904c-10.9395 -1.15039 -12.5098 9.66016 -12.6797 10.75l-33.1602 137.13l-32.7803 -136.99c-0.15918 -1.08984 -1.72949 -11.8994 -12.6797 -10.75 +h-18.2998v-0.00976562zM538.39 183.92c-5.87988 -0.00976562 -33.9199 0.299805 -57.3594 12.29c-4.59375 1.94531 -7.81934 6.49609 -7.81934 11.7949c0 0.0410156 0.00878906 0.0742188 0.00878906 0.115234v10.75c0 8.4502 6.2002 6.89941 8.83008 5.88965 +c10.04 -4.05957 16.4805 -7.13965 28.8105 -9.59961c36.6494 -7.53027 52.7695 2.2998 56.7197 4.47949c13.1504 7.81055 14.1895 25.6807 5.25 34.9502c-10.4805 8.79004 -15.4805 9.12012 -53.1299 21c-4.64062 1.29004 -43.7002 13.6104 -43.79 52.3604 +c-0.610352 28.2402 25.0498 56.1797 69.5195 55.9502c12.6699 0.00976562 46.4307 -4.13086 55.5703 -15.6201c1.34961 -2.08984 2.01953 -4.5498 1.91992 -7.04004v-10.1104c0 -4.43945 -1.62012 -6.66016 -4.87012 -6.66016 +c-7.70996 0.860352 -21.3896 11.1699 -49.1602 10.75c-6.88965 0.360352 -39.8896 -0.910156 -38.4092 -24.9697c-0.430664 -18.96 26.6094 -26.0703 29.6992 -26.8896c36.46 -10.9707 48.6504 -12.79 63.1201 -29.5801c17.1406 -22.25 7.90039 -48.2998 4.35059 -55.4404 +c-19.0801 -37.4902 -68.4199 -34.4395 -69.2607 -34.4199zM578.59 79.0596c-70.0303 -51.7197 -171.689 -79.25 -258.49 -79.25c-1.0498 -0.00683594 -2.10059 -0.00976562 -3.15234 -0.00976562c-120.699 0 -230.949 45.7383 -314.117 120.74 +c-6.53027 5.88965 -0.770508 13.96 7.16992 9.46973c93.1143 -53.2637 200.925 -83.7148 315.791 -83.7148c0.138672 0 0.950195 -0.405273 1.08887 -0.405273c85.4404 0.458984 167.381 18.2432 241.59 49.5508c11.7803 5 21.7705 -7.80078 10.1201 -16.3809z +M607.78 112.35c-8.95996 11.5205 -59.2803 5.38086 -81.8105 2.69043c-6.79004 -0.770508 -7.93945 5.12012 -1.79004 9.46973c40.0703 28.1699 105.88 20.1006 113.44 10.6299c7.5498 -9.46973 -2.0498 -75.4092 -39.5605 -106.909 +c-5.75977 -4.87012 -11.2695 -2.30078 -8.70996 4.09961c8.44043 21.25 27.3906 68.4902 18.4307 80.0195z" /> @@ -1446,10 +1646,11 @@ c0.5 12.4004 0.5 18.1006 0 24.1006c2.5 65.2002 -14.7998 120 -46.1992 162.7z" /> +c-2.50586 -1.87988 -5.64258 -2.99316 -9.0127 -2.99316s-6.48145 1.11328 -8.9873 2.99316l-58.0596 43.46c-6.23047 4.65234 -13.9668 7.46582 -22.333 7.46582c-13.2803 0 -24.9512 -6.94434 -31.5771 -17.3965l-73 -115.569 +c-7.05078 -11.0703 6.64941 -23.6006 17.1094 -15.6699l78.3701 59.4395c2.50586 1.87891 5.64258 2.99316 9.0127 2.99316s6.48242 -1.11426 8.9873 -2.99316l58.0801 -43.4697c6.23047 -4.65039 13.9658 -7.46191 22.3301 -7.46191 +c13.2803 0 24.9512 6.94141 31.5801 17.3916z" /> d="M147.3 333.6v-70.5996l82.7998 118.2c31.2002 44.3994 83.3008 41.7998 113.601 12.7998c27.8994 -26.7002 27.7998 -65.0996 10.3994 -89.7998l-74.8994 -107.4l90.7998 -114.8c19.9004 -24.7998 19.5996 -64.5996 -7.40039 -92.2002 c-31.0996 -30.7002 -80.5 -27.2002 -103.199 0l-112.101 138.3v-76.5c0 -57.7998 -32.5996 -83.3994 -72.3994 -83.3994c-49.6006 0 -74.9004 36.0996 -74.9004 83.3994v283c0 45.2002 26.2002 81.4004 73.9004 81.4004c40.8994 0 73.3994 -26.2002 73.3994 -82.4004z" /> +d="M504.4 332.17c0.15625 -0.650391 0.240234 -1.32324 0.240234 -2.02051c0 -0.0234375 0 -0.046875 -0.000976562 -0.0693359v-109.85c0.000976562 -0.0244141 0.00878906 -0.0429688 0.00878906 -0.0673828c0 -2.96191 -1.61328 -5.5498 -4.00879 -6.93262 +l-92.2393 -53.1104v-105.26c0 -0.0078125 0.0078125 -0.00976562 0.0078125 -0.0166016c0 -2.96289 -1.61328 -5.55078 -4.00781 -6.93359l-192.561 -110.84c-0.442383 -0.231445 -0.916016 -0.428711 -1.39941 -0.580078 +c-0.180664 -0.0605469 -0.350586 -0.169922 -0.550781 -0.220703c-0.654297 -0.174805 -1.33789 -0.268555 -2.04688 -0.268555c-0.709961 0 -1.39844 0.09375 -2.05273 0.268555c-0.219727 0.0605469 -0.419922 0.180664 -0.629883 0.260742 +c-0.458008 0.143555 -0.908203 0.327148 -1.33008 0.540039l-192.5 110.84c-2.39551 1.38281 -4 3.96582 -4 6.92773v0.0224609v329.699c0.00195312 0.727539 0.0996094 1.42969 0.280273 2.10059c0.0839844 0.228516 0.181641 0.454102 0.290039 0.669922 +c0.133789 0.427734 0.307617 0.84668 0.509766 1.24023c0.149414 0.259766 0.370117 0.469727 0.549805 0.719727c0.21582 0.329102 0.450195 0.636719 0.709961 0.929688c0.250977 0.217773 0.512695 0.416016 0.790039 0.600586 +c0.274414 0.254883 0.56543 0.483398 0.879883 0.689453v0l96.2705 55.4199c1.1748 0.678711 2.55469 1.06738 4.00781 1.06738s2.81641 -0.388672 3.99219 -1.06738l96.29 -55.4199v0c0.307617 -0.210938 0.598633 -0.435547 0.879883 -0.679688 +c0.271484 -0.1875 0.529297 -0.385742 0.779297 -0.599609c0.260742 -0.298828 0.499023 -0.610352 0.720703 -0.94043c0.169922 -0.25 0.399414 -0.459961 0.540039 -0.719727c0.203125 -0.393555 0.379883 -0.813477 0.519531 -1.24023 +c0.0800781 -0.230469 0.219727 -0.44043 0.280273 -0.679688c0.181641 -0.661133 0.280273 -1.35352 0.280273 -2.07129v-0.0195312v-205.93l80.2197 46.1904v105.239c0.00292969 0.720703 0.100586 1.41602 0.280273 2.08008 +c0.0693359 0.240234 0.199219 0.450195 0.279297 0.680664c0.144531 0.427734 0.320312 0.850586 0.520508 1.25c0.149414 0.259766 0.370117 0.469727 0.540039 0.709961c0.21875 0.329102 0.457031 0.636719 0.719727 0.929688 +c0.248047 0.216797 0.505859 0.416016 0.780273 0.599609c0.277344 0.250977 0.568359 0.479492 0.879883 0.69043v0l96.2803 55.4502c1.1748 0.677734 2.55469 1.06641 4.00781 1.06641s2.81641 -0.388672 3.99219 -1.06641l96.2598 -55.4199 +c0.316406 -0.208984 0.613281 -0.433594 0.899414 -0.680664c0.25 -0.199219 0.540039 -0.379883 0.770508 -0.599609c0.260742 -0.298828 0.499023 -0.609375 0.719727 -0.94043c0.198242 -0.223633 0.376953 -0.458008 0.540039 -0.709961 +c0.207031 -0.396484 0.386719 -0.819336 0.530273 -1.25c0.106445 -0.217773 0.201172 -0.447266 0.280273 -0.679688zM111.6 430.72l-80.1895 -46.1602l80.1797 -46.1699l80.2002 46.1807l-80.1904 46.1494v0zM199.85 370.72l-33.6895 -19.4297l-46.5303 -26.79v-201.29 +l33.6904 19.4004l46.5293 26.79v201.319zM199.85 -42.0596l-0.109375 92.3594l-92.1904 52.1807v0v0c-0.301758 0.203125 -0.585938 0.421875 -0.859375 0.65918c-0.25 0.200195 -0.540039 0.360352 -0.770508 0.580078v0 +c-0.240234 0.265625 -0.458008 0.542969 -0.660156 0.839844c-0.21582 0.25 -0.414062 0.507812 -0.599609 0.780273v0c-0.166016 0.316406 -0.308594 0.655273 -0.419922 1c-0.149414 0.285156 -0.27832 0.589844 -0.379883 0.900391v0 +c-0.0820312 0.383789 -0.135742 0.77832 -0.160156 1.17969c-0.0595703 0.293945 -0.0996094 0.594727 -0.120117 0.900391v215.18l-46.5205 26.7998l-33.6895 19.3799v-311.18zM207.85 64.1104l117.62 67.1494l58.7998 33.5605l-80.1299 46.1299l-92.2598 -53.1104 +l-84.0898 -48.4102zM392.37 59.54v91.4102l-45.7705 -26.1504l-130.72 -74.5996v-92.3105zM392.37 178.67v91.3301l-46.5303 26.8096l-33.6895 19.4004v-91.4199l46.5293 -26.79zM400.37 283.95l80.1797 46.1797l-80.1797 46.1504l-80.2002 -46.1602zM408.37 178.67 +l80.3096 46.1504v0v91.3896l-33.6797 -19.4004l-46.6299 -26.8096v-91.3301z" /> +d="M104.324 178.828v26.1777h26.0664v-26.1777h-26.0664zM156.79 205.006h-26.3428v26.1777c-0.124023 7.05762 -5.8916 12.748 -12.9785 12.748c-7.08594 0 -12.8535 -5.69043 -12.9775 -12.748v-0.166016h-26.4004v0.166016 +c-0.000976562 0.119141 -0.000976562 0.220703 -0.000976562 0.339844c0 21.7041 17.6211 39.3242 39.3242 39.3242c21.5039 0 38.999 -17.2959 39.3213 -38.7227v-0.941406zM209.146 179.16v26.0117h26.3438v-26.0117 +c0 -0.0371094 -0.000976562 -0.0722656 -0.000976562 -0.109375c0 -64.7373 -52.5439 -117.3 -117.274 -117.331h-0.774414c-0.0380859 0 -0.0732422 0.000976562 -0.110352 0.000976562c-64.7373 0 -117.299 52.543 -117.33 117.273v0.166016h26.3369 +c0 -50.2793 40.8203 -91.1006 91.0996 -91.1006h0.609375c50.2793 0 91.1006 40.8213 91.1006 91.1006zM51.9131 179.16v25.96h-26.291v25.3994c0 50.6445 41.1162 91.7617 91.7607 91.7617s91.7607 -41.1172 91.7607 -91.7617v-25.293h-26.3438v25.293v0.200195 +c0 36.1055 -29.3135 65.4199 -65.4199 65.4199c-35.7656 0 -64.8672 -28.7646 -65.4121 -64.4023v-26.6201h26.2891v-25.957c0.356445 -21.2305 17.7031 -38.3564 39.0176 -38.3564s38.6611 17.126 39.0176 38.3564h26.3438 +c-0.140625 -35.9551 -29.374 -65.1016 -65.3613 -65.1016s-65.2207 29.1465 -65.3613 65.1016zM470.313 250.333c-11.3467 0 -20.8633 -4.75977 -24.2402 -12.1172v-8.41211c2.21875 -4.53809 6.30859 -7.69238 12.6191 -9.62988 +c4.75879 -1.37891 9.76562 -2.3623 14.832 -2.87793c6.36426 -0.827148 13.0068 -1.71484 20.6992 -4.42676c13.7256 -4.59375 24.0742 -13.2275 28.9443 -24.2412l0.166016 -0.664062l-0.166016 -25.8994c-7.69238 -17.0479 -28.668 -28.4473 -52.2998 -28.4473 +c-25.6797 0 -47.374 12.6182 -55.2891 32.0439l-0.552734 1.43848l23.0205 11.5078l0.719727 -1.49414c5.97754 -12.1211 17.5996 -19.0391 31.9336 -19.0391c12.0098 0 22.083 4.81445 25.791 12.3418v9.85059c-2.37988 4.59473 -6.47656 7.75098 -12.8398 9.85156 +c-5.20312 1.71582 -10.3506 2.37988 -15.8291 3.09961c-6.78809 0.675781 -13.4814 2.04199 -19.8135 3.98438c-14.1123 4.87109 -23.9678 13.2275 -28.668 24.2412c-0.158203 0.949219 -0.123047 -2.02637 0 24.8496c7.36133 17.0469 27.8379 28.4473 50.9727 28.4473 +c24.9062 0 45.3818 -12.0098 53.4062 -31.2705l0.609375 -1.43848l-23.2451 -11.5117l-0.71875 1.5498c-5.47949 11.6221 -16.3818 18.2637 -30.0518 18.2637zM287.568 136.656v68.3994h26.0664v-68.3994h-26.0664zM639.834 189.956l0.166016 -0.722656l-0.166016 -28.8906 +c-7.52734 -15.9941 -27.8916 -26.7305 -50.584 -26.7305s-43.0029 10.7363 -50.585 26.7305l-0.166016 0.720703l0.166016 28.8887c2.93262 6.25391 8.24121 12.0137 15.4414 16.7139c-5.57422 3.90332 -10.0391 9.14453 -13.0068 15.3311l-0.166016 0.664062 +l0.166016 25.3467c7.36133 15.9922 26.7334 26.7324 48.1504 26.7324s40.7881 -10.7402 48.1504 -26.7295l0.166016 -0.664062l-0.166016 -25.3467c-2.90137 -6.22852 -7.38379 -11.4873 -13.0078 -15.3301c7.1416 -4.7041 12.5088 -10.46 15.4414 -16.7139z +M566.614 240.762v-13.7246c3.48535 -6.19922 12.5068 -10.3486 22.5801 -10.3486c10.0723 0 19.0938 4.14844 22.6357 10.3486v13.7246c-3.59766 6.31055 -12.6191 10.5166 -22.6357 10.5166c-10.0176 0 -18.9805 -4.20605 -22.5801 -10.5166zM613.933 168.593v16.1572 +c-3.76367 6.36523 -13.3379 10.5146 -24.6826 10.5146c-11.1836 0 -20.9756 -4.20605 -24.6836 -10.5146v-16.1572c3.70801 -6.52734 13.5586 -10.8994 24.6836 -10.8994c11.3447 0 20.9189 4.25879 24.6826 10.8994zM376.4 182.038v89.7129h25.8994v-135.095h-25.6777 +l-62.5391 94.085v0.386719h-26.5098v40.623h29z" /> +d="M284.046 223.2c0.0341797 0 0.0664062 -0.00195312 0.100586 -0.00195312c18.8496 0 34.1592 -15.2754 34.2168 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1143 15.2861 -34.1143 34.1143c0 18.7588 15.1748 34.002 33.9072 34.1133zM173.596 223.2 +c0.0332031 0 0.0673828 -0.00195312 0.100586 -0.00195312c18.8496 0 34.1592 -15.2754 34.2168 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1143 15.2861 -34.1143 34.1143c0 18.7588 15.1748 34.002 33.9072 34.1133zM394.519 223.2 +c0.0351562 0 0.0683594 -0.00195312 0.102539 -0.00195312c18.8496 0 34.1592 -15.2754 34.2148 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1133 15.2861 -34.1133 34.1143c0 18.7588 15.1738 34.002 33.9062 34.1133zM548.326 278.519 +c17.3076 -26.9443 26.0674 -55.9189 26.0898 -86.9395c0 -30.209 -8.76074 -59.2021 -26.0703 -86.125c-15.5342 -24.1934 -37.3076 -45.5703 -64.6787 -63.6191c-52.8672 -34.8164 -122.354 -53.9746 -195.667 -53.9746 +c-0.150391 -0.000976562 0.0664062 -0.00585938 -0.0830078 -0.00585938c-24.5488 0 -48.5908 2.18359 -71.9443 6.36621c-14.8564 -14.2842 -31.3604 -26.5059 -49.5098 -36.5889c-66.7744 -33.3467 -125.6 -20.9092 -155.324 -10.2002 +c-5.54492 1.96289 -9.51758 7.25488 -9.51758 13.4697c0 3.82715 1.50879 7.30469 3.96289 9.87109c20.9619 21.6748 55.6416 64.5342 47.1162 103.49c-33.1426 33.9004 -51.1123 74.7764 -51.1123 118.148c0 42.5605 17.9697 83.4365 51.1123 117.337 +c8.52148 38.9521 -26.1582 81.7939 -47.1201 103.47c-2.45996 2.56738 -3.97656 6.0498 -3.97656 9.88281c0 6.21973 3.98047 11.5156 9.53125 13.4785c29.7246 10.71 88.5488 23.1211 155.302 -10.2109c18.1504 -10.0811 34.6553 -22.3027 49.5107 -36.5879 +c23.3457 4.18066 47.0137 6.35742 71.5547 6.35742c0.15918 0 0.318359 -0.000976562 0.476562 -0.000976562c73.293 0 142.78 -19.1826 195.666 -54c27.3711 -18.0479 49.1465 -39.4453 64.6816 -63.6182zM284.987 38.0996c128.612 0 232.866 67.376 232.866 150.487 +c0 83.0957 -104.274 150.469 -232.866 150.469c-128.593 0 -232.847 -67.3691 -232.847 -150.469c0 -36.2002 19.7861 -69.4375 52.7783 -95.4004c9.28809 -29.5986 3.84668 -62.958 -16.3252 -100.078c-0.960938 -1.79297 -1.8584 -3.58496 -2.8418 -5.35645 +c18.6367 1.63574 36.5557 6.875 52.5225 14.8701c13.5889 7.65625 25.9609 16.8633 37.1377 27.585l20.1289 19.3926c28.2617 -7.47852 57.8037 -11.501 88.4033 -11.501c0.347656 0 0.695312 0 1.04297 0.000976562z" /> @@ -2146,11 +2358,11 @@ c-0.5 -2 -1.7998 -3.7002 -3.59961 -4.7002l-61 -35.1992c-2.2002 -1.30078 -5 -1.40 c2.39941 1.40039 5.2998 1.2002 7.39941 0l61.1006 -35.2002c2.2998 -1.2998 3.89941 -3.7998 3.89941 -6.39941v-70.4004zM230.5 310.4l-0.799805 -0.5h1.09961zM306.7 180.2l-0.400391 0.700195v-0.900391z" /> +c-0.0830078 3.7627 -0.750977 7.4043 -1.89941 10.8008c-10.4102 -9.2002 -16.4004 -18.8008 -19 -24.5c-6.7002 -14.6006 -7 -19.3008 -5 -20.7002z" /> +d="M313.6 -26.5996c4.40039 -4.40039 8.10059 -9 13.3008 -12.5c-21.7051 -6.54492 -44.666 -10.1084 -68.4922 -10.1084c-0.636719 0 -1.27246 0.00292969 -1.9082 0.0078125c-135 0 -244.5 109.5 -244.5 244.601c0 135.1 109.4 244.6 244.5 244.6 +s244.6 -109.5 244.6 -244.6c0 -35.3008 -6.89941 -67.4004 -20.2998 -97.7002c-3 5.7002 -7.2002 10.2002 -11.2002 15.2998c11.2002 93.5 -62.0996 176.6 -157 176.6c-87.2578 0 -158.1 -70.8418 -158.1 -158.1s70.8418 -158.1 158.1 -158.1h1zM313.5 -26.5 +l0.400391 -0.0996094zM391.9 142.4c54.7393 0 99.1992 -44.4414 99.1992 -99.1797v-0.0205078c0 -54.75 -44.4492 -99.2002 -99.1992 -99.2002s-99.2002 44.4502 -99.2002 99.2002s44.4502 99.2002 99.2002 99.2002z" /> +d="M286.17 29c9.93457 0 18 -8.06543 18 -18s-8.06543 -18 -18 -18s-18 8.06543 -18 18s8.06543 18 18 18zM398.09 176.6c22.9102 -33.46 35.9102 -72.3398 35.9102 -110.92c0 -31.6797 -5 -60.6797 -14.5996 -86.2295 +c-3.04004 -8.0498 -10.9502 -12.7197 -18.3701 -11.1504c-6.83984 1.24023 -11.1201 9.28027 -8.60059 15.7402c11.1904 28.71 14.8799 58.3398 14.8799 81.6396c-0.0634766 9.75 -1.02246 19.1807 -2.7998 28.4307c-0.649414 -1.06055 -1.12988 -2.2207 -1.84961 -3.2207 +c-17.29 -24.5293 -50.54 -33.8896 -84.7402 -23.8398c-78.8701 23.1699 -178.02 3.81055 -236.25 -38.5898l24.6602 74.1104l-46.8203 -59.8301c2.4834 -18.6582 7.96191 -36.7539 15.7598 -53.1299c6.25 -13.1904 0.460938 -18.2402 -3.75 -20.1104 +c-4.76953 -2.12012 -13.8594 -2.7998 -19.6396 7.33008c-6.41504 11.584 -11.4131 24.3486 -14.5596 37.5596l-23.3203 -29.7998v33.6406c0 55.7695 0 125.109 62.6504 188.409c13.7461 13.917 29.1787 25.7891 46.29 35.54l-8.93066 0.540039 +c-27.8799 1.64062 -49.2402 24.8506 -47.6299 51.8506l2.36035 36.6797c0 -6.24023 0.139648 45.8799 50.75 45.8799c2.05957 0 -0.470703 0.120117 41.0596 -2.33008c2.82715 -0.19043 5.60742 -0.616211 8.29004 -1.25c7.41992 11.3398 15.6504 22.8301 24.3398 34.8906 +l5.48047 7.55957l22.8994 -13.5195c-11.29 -24 -10 -33 -9.39941 -35c9.08008 0.229492 20 -1.6709 32.4102 -5.77051c31.2002 -10.3584 53.6846 -39.8262 53.6846 -74.4844c0 -10.4883 -2.0625 -20.498 -5.80469 -29.6455 +c6.18652 -2.13965 12.3135 -4.56348 18.3799 -7.27051c47.8896 -21.2598 77.7598 -59.0898 87.2598 -73.71zM142.37 319.42c1.87695 6.54492 4.25684 13.041 7 19.1699l-29.1104 1.73047c0.610352 -0.0507812 -12.2598 0.849609 -13.2598 -11.3203l-2.41016 -36.6602 +c-0.00683594 -0.174805 -0.00292969 -0.34375 -0.00292969 -0.520508c0 -6.60449 5.22461 -11.998 11.7627 -12.2695l22.3809 -1.33984c-0.457031 3.73438 -0.692383 7.34863 -0.692383 11.2061c0 2.81836 0.125977 5.6084 0.37207 8.36426l-13.1299 0.779297l1.38965 21.79 +zM290.79 147.24c2.27441 1.75195 3.72949 4.50586 3.72949 7.59668c0 2.19922 -0.742188 4.22559 -1.98926 5.84277l-81.0898 96.3203c-1.9043 2.21094 -4.72949 3.60156 -7.87305 3.60156c-2.42578 0 -4.65918 -0.833984 -6.42773 -2.23145 +c-2.27344 -1.74805 -3.72754 -4.49902 -3.72754 -7.58594c0 -2.19531 0.741211 -4.21973 1.98828 -5.83398c0.0898438 -0.140625 18.5996 -22.1406 18.5996 -22.1406l-16.9102 -13.29c-1.75879 -1.34863 -2.88477 -3.47461 -2.88477 -5.86133 +c0 -1.68359 0.564453 -3.23633 1.51465 -4.47852c0.0800781 -0.109375 2.37988 -2.91113 3.7998 -4.5293c1.4209 -1.61914 3.50977 -2.63477 5.83105 -2.63477c1.79395 0 3.44531 0.610352 4.75977 1.63477l17.0898 13.4492l14.1396 -16.7393l-34.5703 -27.1807 +c-1.74805 -1.34961 -2.86621 -3.46875 -2.86621 -5.84668c0 -1.69043 0.569336 -3.24805 1.52637 -4.49316l15.7803 -18.6396c1.48438 -1.72363 3.68555 -2.80762 6.13574 -2.80762c1.88379 0 3.61816 0.645508 4.99414 1.72754l34.4199 27l9.68066 -11.4902 +c1.92676 -2.2041 4.76465 -3.58789 7.91992 -3.58789c2.4209 0 4.65234 0.820312 6.42969 2.19824zM187.44 29c9.93359 0 18 -8.06543 18 -18s-8.06641 -18 -18 -18c-9.93457 0 -18 8.06543 -18 18s8.06543 18 18 18z" /> +d="M433 268.89c0 0 0.799805 -71.6992 -9 -121.5c-6.23047 -31.5996 -55.1104 -66.1992 -111.23 -72.8994c-20.0996 -2.40039 -93.1191 -14.2002 -178.75 6.7002c0 -0.116211 -0.00390625 -0.119141 -0.00390625 -0.235352c0 -4.63281 0.307617 -9.19434 0.904297 -13.665 +c6.62988 -49.5996 49.2197 -52.5996 89.6299 -54c40.8105 -1.2998 77.1201 10.0996 77.1201 10.0996l1.7002 -36.8994s-28.5098 -15.2998 -79.3203 -18.1006c-28.0098 -1.59961 -62.8193 0.700195 -103.33 11.4004c-112.229 29.7002 -105.63 173.4 -105.63 289.1 +c0 97.2002 63.7197 125.7 63.7197 125.7c61.9209 28.4004 227.96 28.7002 290.48 0c0 0 63.71 -28.5 63.71 -125.7zM357.88 143.69c0 122 5.29004 147.71 -18.4199 175.01c-25.71 28.7002 -79.7197 31 -103.83 -6.10059l-11.5996 -19.5l-11.6006 19.5 +c-24.0098 36.9004 -77.9297 35 -103.83 6.10059c-23.6094 -27.1006 -18.4092 -52.9004 -18.4092 -175h46.7295v114.2c0 49.6992 64 51.5996 64 -6.90039v-62.5098h46.3301v62.5c0 58.5 64 56.5996 64 6.89941v-114.199h46.6299z" /> +s-211.51 -94.6895 -211.51 -211.51s94.7002 -211.51 211.51 -211.51zM434.23 143.47c-4.46582 -17.1914 -11.3633 -33.7256 -20.1309 -48.6895l-74.1299 35.8799l61.4805 -54.8203c-10.709 -14.1553 -23.0713 -26.5469 -37.2002 -37.29l-54.7998 61.5703l35.8799 -74.2705 +c-14.9385 -8.80469 -31.4502 -15.7354 -48.6299 -20.2295l-27.29 78.4697l4.79004 -82.9297c-8.61035 -1.17969 -17.4004 -1.7998 -26.3301 -1.7998s-17.7197 0.620117 -26.3301 1.7998l4.75977 82.46l-27.1494 -78.0303 +c-17.1836 4.48828 -33.7021 11.4092 -48.6504 20.2002l35.9297 74.3398l-54.8701 -61.6396c-14.1318 10.7412 -26.5 23.1299 -37.2197 37.2793l61.5898 54.9004l-74.2598 -35.9297c-8.77051 14.9639 -15.6709 31.4971 -20.1396 48.6895l77.8398 27.1104l-82.2305 -4.75977 +c-1.15918 8.56934 -1.7793 17.3193 -1.7793 26.21c0 9 0.629883 17.8398 1.81934 26.5098l82.3799 -4.76953l-77.9395 27.1592c4.5 17.1895 11.4307 33.7148 20.2295 48.6699l74.2207 -35.9199l-61.5205 54.8604c10.7412 14.1328 23.1299 26.501 37.2803 37.2197 +l54.7598 -61.5293l-35.8301 74.1699c14.9521 8.76465 31.4717 15.6621 48.6504 20.1299l26.8701 -77.25l-4.70996 81.6094c8.60938 1.18066 17.3896 1.80078 26.3193 1.80078c8.93066 0 17.71 -0.620117 26.3203 -1.80078l-4.74023 -82.1592l27.0498 77.7598 +c17.2705 -4.5 33.6006 -11.3506 48.6309 -20.1699l-35.8203 -74.1201l54.7197 61.4697c14.1426 -10.7178 26.5186 -23.0908 37.2402 -37.2295l-61.4502 -54.7705l74.1201 35.8604c8.78906 -14.9492 15.71 -31.4678 20.2002 -48.6504l-77.8105 -27.0996l82.2402 4.75 +c1.19043 -8.66016 1.82031 -17.5 1.82031 -26.4902c0 -8.87988 -0.610352 -17.6299 -1.78027 -26.1904l-82.1201 4.75z" /> @@ -2550,7 +2761,7 @@ c-1.23047 1.73926 -3.44043 3.79004 -6.68066 3.79004c-3.25 0 -5.4502 -2.04004 -6. c0 -14.9102 -7.38965 -32.6201 -19.1299 -48.2402c0.610352 106.761 10.8906 194.73 24.4707 215.351v26.0693zM223.52 266.75c-1.59961 -22.4004 -2.75 -46.5195 -3.47949 -72.0703c-23.2998 -11.2793 -40.7705 -33.1602 -46.3203 -59.5098 c-7.71973 -2.25977 -22.71 -3.91992 -40.4893 -4.21973c-7.51074 3.66016 -16.5 5.85938 -26.1807 6.04004c1.90039 14.9102 5.87012 29.1699 11.6504 42.4199c15.4395 -8.10059 30.9297 -8.66016 35.4697 -0.959961c4.57031 7.74023 -3.58984 21.04 -18.3203 30.6602 c8.68066 11.7695 18.9805 22.2998 30.5605 31.0898c9.50977 -15.5898 23.3594 -24.4404 31.3594 -19.8203c8.05078 4.65039 7.19043 21.1699 -1.70996 37.29c8.76074 3.88965 17.9404 6.92969 27.46 9.08008zM288.48 266.75 -c7.82227 -1.75977 20.1201 -5.82812 27.4492 -9.08008c-8.89941 -16.1299 -9.75977 -32.6396 -1.70996 -37.29c8 -4.62012 21.8506 4.23047 31.3604 19.8203c11.5801 -8.79004 21.8799 -19.3203 30.5596 -31.0898c-14.7197 -9.61035 -22.8896 -22.9199 -18.3193 -30.6602 +c9.45508 -2.12695 18.7754 -5.23145 27.4492 -9.08008c-8.89941 -16.1299 -9.75977 -32.6396 -1.70996 -37.29c8 -4.62012 21.8506 4.23047 31.3604 19.8203c11.5801 -8.79004 21.8799 -19.3203 30.5596 -31.0898c-14.7197 -9.61035 -22.8896 -22.9199 -18.3193 -30.6602 c4.54004 -7.7002 20.0293 -7.14062 35.4697 0.959961c5.79004 -13.25 9.75 -27.5098 11.6504 -42.4199c-9.68066 -0.19043 -18.6709 -2.37988 -26.1807 -6.04004c-17.7793 0.299805 -32.7695 1.95996 -40.4902 4.21973c-5.5498 26.3496 -23.0293 48.2305 -46.3193 59.5098 c-0.719727 25.5508 -1.87988 49.6699 -3.46973 72.0703zM256 258.15c3.23047 0 5.86035 -8.81055 6.08984 -19.9307h0.0498047v-16.8799c0 -41.4199 49.0107 -95.04 93.4902 -95.04c52 0 122.76 1.4502 156.37 -29.1699v-2.50977 c-9.41992 -17.1104 -20.5801 -33.1699 -33.1797 -47.9697c-12.5303 21.0898 -51.5898 40.96 -108.021 41.3496c-45.6797 -1.01953 -79.0195 -20.3301 -90.7598 -40.8701c-0.00976562 -0.00976562 0.00976562 -0.0400391 0 -0.0498047 @@ -2570,47 +2781,48 @@ l-62.5996 9.10059l62.5996 9.09961l-20.2002 55.5l31.4004 -45.8994c2.2998 87.8994 l24.2002 -47.3994s-30.2002 31.7002 -34.5 36.2002c1.7998 -68.8008 2.19922 -85.7002 2.19922 -85.7002s154.4 71.7002 68.6006 230.1c0 0 107 118 10.0996 190.7c0 0 165.5 -100 60.5 -271.5c0 0 86.7998 84.7002 41.4004 170.5c0 0 78.7002 -111 -17.2002 -233.1z" /> @@ -2619,7 +2831,7 @@ d="M235.76 437.77c7.5 0.310547 15 0.280273 22.5 0.0908203c3.61035 -0.140625 7.20 c7.90039 -1.33008 15.6699 -3.28027 23.3906 -5.39941c12.2393 -3.4707 24.1895 -7.91992 35.7598 -13.21c26.5596 -12.2402 50.9395 -29.21 71.6299 -49.8809c20.0303 -20.0898 36.7197 -43.5498 48.8896 -69.1895c1.12988 -2.58984 2.44043 -5.10059 3.4707 -7.74023 c2.80957 -6.42969 5.38965 -12.9697 7.58008 -19.6299c4.13965 -12.3301 7.33984 -24.9902 9.41992 -37.8301c0.569336 -3.13965 1.04004 -6.2998 1.39941 -9.46973c0.549805 -3.83008 0.94043 -7.69043 1.18066 -11.5605 c0.829102 -8.33984 0.839844 -16.7295 0.769531 -25.0996c-0.0703125 -4.96973 -0.259766 -9.94043 -0.75 -14.8896c-0.240234 -3.38086 -0.509766 -6.76074 -0.979492 -10.1201c-0.390625 -2.7207 -0.630859 -5.45996 -1.11035 -8.16992 -c-0.900391 -5.15039 -1.7002 -10.3105 -2.87012 -15.4102c-4.09961 -18.5 -10.2998 -36.5498 -18.5098 -53.6299c-15.7705 -32.8301 -38.8301 -62.1699 -67.1201 -85.1201c-14.3926 -11.7676 -39.8887 -27.3848 -56.9102 -34.8604 +c-0.900391 -5.15039 -1.7002 -10.3105 -2.87012 -15.4102c-4.09961 -18.5 -10.2998 -36.5498 -18.5098 -53.6299c-15.7705 -32.8301 -38.8301 -62.1699 -67.1201 -85.1201c-17.2012 -14.0635 -36.3066 -25.8115 -56.9102 -34.8604 c-6.20996 -2.67969 -12.46 -5.25 -18.8701 -7.41016c-3.50977 -1.16016 -7.00977 -2.37988 -10.5703 -3.38965c-6.61914 -1.87988 -13.2891 -3.63965 -20.0391 -5c-4.66016 -0.910156 -9.34082 -1.73047 -14.0303 -2.48047c-5.25 -0.65918 -10.5 -1.43945 -15.79 -1.73926 c-6.69043 -0.660156 -13.4102 -0.839844 -20.1201 -0.810547c-6.82031 -0.0292969 -13.6504 0.120117 -20.4502 0.790039c-3.29004 0.230469 -6.57031 0.5 -9.83008 0.950195c-2.71973 0.389648 -5.45996 0.629883 -8.16992 1.11035 c-4.12012 0.719727 -8.25 1.37012 -12.3496 2.21973c-4.25 0.939453 -8.49023 1.88965 -12.6904 3.01953c-8.62988 2.16992 -17.0801 5.01074 -25.4102 8.13086c-10.4893 4.11914 -20.79 8.75 -30.6396 14.25c-2.13965 1.14941 -4.28027 2.28906 -6.34961 3.56934 @@ -2703,21 +2915,21 @@ c-0.730469 7.99023 -1.87012 15.96 -3.70996 23.7803z" /> +l-58.8604 -11.5205l69.8408 91.0303c-1.49512 8.39453 -2.27539 16.7734 -2.27539 25.5947s0.780273 17.4609 2.27539 25.8555l-69.8408 91.0293l58.8604 -11.5195zM224 316.22c-31.7998 0 -63.6104 -12.0898 -87.8496 -36.3398c-48.4902 -48.4902 -48.5 -127.2 0 -175.7 +c48.5 -48.4893 127.21 -48.5195 175.699 -0.0292969c48.4902 48.4893 48.5 127.199 0 175.699c-24.25 24.25 -56.0498 36.3701 -87.8496 36.3701zM224 279.56c22.4199 0 44.8301 -8.51953 61.9199 -25.6094c34.1904 -34.1904 34.1797 -89.6904 0 -123.87 +c-34.1895 -34.1797 -89.6504 -34.1904 -123.84 0c-34.1904 34.1895 -34.1797 89.6895 0 123.87c17.0898 17.0898 39.5 25.6094 61.9199 25.6094z" /> +c-51.5254 -20.7842 -87.8506 -71.208 -87.8896 -130.13c0 -0.910156 0.139648 -1.78027 0.139648 -2.67969l-21.8398 -0.150391c-1.41016 100.43 29.8701 160.09 52.4199 190c-1.02051 -0.0820312 -2.03711 -0.0888672 -3.07812 -0.0888672 +c-20.9453 0 -37.9492 17.0049 -37.9492 37.9502s17.0039 37.9502 37.9492 37.9502c15.0898 0 28.1338 -8.8252 34.248 -21.5918c2.35742 -4.91211 3.70117 -10.4102 3.70117 -16.2188c0 -1.67188 -0.109375 -3.31738 -0.321289 -4.93066zM488.57 271.23 +c-4.87012 -2.31934 -10.2754 -3.63965 -16.0244 -3.63965c-1.09375 0 -2.17578 0.046875 -3.24609 0.139648c84.4502 -113.45 -49 -194.61 -49 -194.61c5.87012 43.0303 8.20996 91.1602 8.20996 91.1602c66.6006 40.96 0.640625 63.54 -38.46 72.54 +c-20.5566 51.9932 -71.2275 88.7393 -130.49 88.7598c-2.75 0 -5.43945 -0.259766 -8.13965 -0.410156l-0.139648 22.5c93.6094 1.33008 151.72 -25.7998 183.45 -47.7402c-0.270508 1.82617 -0.375 3.67676 -0.375 5.57715c0 20.9395 17 37.9395 37.9395 37.9395 +c20.9404 0 37.9404 -17 37.9404 -37.9395c0 -15.1162 -8.85938 -28.1797 -21.665 -34.2764zM374.06 11.7598v-0.0595703c0.112305 0.000976562 0.239258 -0.0332031 0.351562 -0.0332031c20.9336 0 37.9297 -16.9961 37.9297 -37.9297 +c0 -20.9346 -16.9961 -37.9307 -37.9297 -37.9307c-15.0908 0 -28.1348 8.83203 -34.2412 21.6035c-2.0498 4.26074 -3.33984 9.0332 -3.63965 14c-111.98 -80.3398 -191.9 51 -191.9 51c43.0703 -5.87988 91.1904 -8.21973 91.1904 -8.21973 +c41.3301 -67.1709 63.9199 0.540039 72.7695 39.4893c53.3574 19.8584 91.3574 71.2188 91.3906 131.45c0 2.08008 -0.220703 4.08984 -0.300781 6.15039l19.5205 0.139648c1.28027 -89.9697 -23.71 -147.2 -45.1406 -179.66z" /> +c1.04785 -1.25391 1.74121 -2.82812 1.9209 -4.54004c0 -1.94043 -1.25 -3.48047 -2.48047 -4.79004c-19.9805 -20.54 -26.3701 -53.1699 -18.8398 -80.3701c0.927734 -3.33594 2.13574 -6.6377 3.5498 -9.74023c17.7002 -41.2598 72.4902 -60.4795 126 -43 +c7.01562 2.29199 13.8936 5.20215 20.3398 8.58008c11.8203 5.84668 22.2969 13.7168 31.1504 23.3096c14.2002 14.8408 22.6396 30.9707 25.9297 50.8408c2.81055 18.6191 -7.78027 18.7598 -11.4395 18.0996c-1.37598 8.42188 -3.82812 16.6758 -7.12012 24.2803 +c-15.6299 -12.3506 -35.71 -20.9707 -51 -25.3506c-69.4004 -19.9102 -90.1904 6.35059 -96.4004 -13.8096c33.7705 -12.3701 69.5098 -7.07031 69.5098 -7.07031zM171.31 290.5l0.0605469 0.00976562c-0.107422 -0.130859 -0.170898 -0.297852 -0.170898 -0.480469 +c0 -0.419922 0.34082 -0.759766 0.759766 -0.759766c0.151367 0 0.292969 0.0439453 0.411133 0.120117c11.4199 8.30078 64.9502 42.7705 134.5 26.8301c0.860352 -0.189453 1.39941 1.29004 0.639648 1.7207c-11.3398 6.33984 -28.6895 10.6494 -41 10.7393 +c-0.405273 0.00976562 -0.732422 0.342773 -0.732422 0.750977c0 0.164062 0.0527344 0.31543 0.142578 0.439453c2.23535 2.92383 4.79492 5.49414 7.70996 7.74023c0.18457 0.140625 0.303711 0.362305 0.303711 0.611328 +c0 0.424805 -0.345703 0.770508 -0.770508 0.770508c-0.0175781 0 -0.0351562 -0.000976562 -0.0527344 -0.00195312c-17.5205 -1.08008 -37.5107 -9.4707 -49 -17.2998c-0.12207 -0.0859375 -0.271484 -0.136719 -0.431641 -0.136719 +c-0.414062 0 -0.75 0.335938 -0.75 0.75c0 0.0605469 0.0078125 0.120117 0.0214844 0.176758c0.899414 4.30957 3.72949 9.98926 5.18945 12.6494c0.0644531 0.108398 0.101562 0.236328 0.101562 0.371094c0 0.40332 -0.327148 0.730469 -0.730469 0.730469 +c-0.134766 0 -0.261719 -0.0371094 -0.371094 -0.101562c-18.4697 -9.4502 -39.0898 -26.2803 -55.8301 -45.6299z" /> +c-0.0263672 55.3057 -28.5371 103.871 -71.8105 131.84l45.3799 26.2002c44.3125 -36.582 72.8613 -91.4561 74.3203 -153h0.129883z" /> +d="M403.5 -7.41016c-40.9688 -30.4482 -91.7109 -48.4707 -146.63 -48.4707c-0.223633 0 -0.646484 -0.120117 -0.870117 -0.119141c-137.19 0 -248 111 -248 248c0 137.19 111 248 248 248h0.21582c63.5576 0 121.648 -24.0508 165.484 -63.5 +c0.716797 -0.65332 1.16699 -1.59375 1.16699 -2.63965c0 -1.9707 -1.59961 -3.57031 -3.57031 -3.57031c-0.155273 0 -0.306641 0.0107422 -0.457031 0.0302734c-18.2656 2.43848 -36.9023 3.69727 -55.8301 3.69727c-0.445312 0 -0.43457 -0.0166016 -0.879883 -0.0175781 +c-129.36 0 -222.399 -53.4697 -222.399 -155.35c0 -109 92.1299 -145.881 176.829 -178.73c33.6406 -13 65.4004 -25.3604 87 -41.5898c0.868164 -0.65332 1.42969 -1.69238 1.42969 -2.86133c0 -1.16992 -0.561523 -2.20508 -1.42969 -2.8584zM503 214.91 +c0.698242 -7.59375 0.950195 -15.1699 0.950195 -22.9443c0 -31.8691 -5.99902 -62.3467 -16.9307 -90.3662c-0.526367 -1.31445 -1.81543 -2.24023 -3.31738 -2.24023c-0.608398 0 -1.18066 0.152344 -1.68262 0.420898 +c-29.4893 16.3594 -61.6094 28.3398 -92.6797 39.9297c-60.2803 22.4902 -112.34 41.8896 -112.34 84.4902c0 1.45996 -3.87988 53.6299 80.25 53.6299c50.8604 0 92.7197 -17.4805 144.48 -60.4805c0.706055 -0.598633 1.17871 -1.46484 1.26953 -2.43945z" /> +c-0.0117188 -0.470703 -0.0126953 -0.894531 -0.0126953 -1.36816c0 -4.77148 0.594727 -9.40527 1.71289 -13.832l-1.7002 -5.90039c-2.90039 10.6006 -5.90039 20.2002 -9.2998 27.7998c-9.7002 17.7002 -30.2002 -9.19922 -43 -11.2998 +c4.53027 -0.25293 8.71777 -0.380859 13.3115 -0.380859c4.59277 0 9.15723 0.12793 13.6885 0.380859l-22.4004 -5.39941l3.40039 -4.7002c-5.5 0 -16.9004 -0.900391 -22.4004 17.2002zM358.4 346.9l-20.3008 -11.8008 +c11.3008 -7.59961 20.2002 -18.1992 27.8008 -31.1992c6.39941 2.89941 10.0996 5.09961 11.7998 7.59961c2.5 2.7998 2.5 4.7002 3 7.09961c0.599609 1.30078 0.799805 2.7002 -3.40039 11.1006c-7.5 11.7998 -16.2002 15.2998 -18.8994 17.2002zM91 304.9 +c-7.7998 -24.1006 -11.7002 -49.4004 -13.2002 -74.6006l13.2002 -5l1.2002 27c9.5 -16.3994 11.2002 -23.2998 12.2998 -28.7998c2.7998 2.09961 7.7002 7 22.5996 11.2998l1.2002 -1.7002l-7.59961 -10.5996c10.0996 3.5 19.5 3.5 28.2998 0.5l-10.5996 -8.40039 +c22.7998 -8.39941 26.5996 -7.59961 38.3994 -26.0996l-11.7998 1.2002c34.9297 -20.5 66 -47.9004 141.2 -63.2002c15.5996 24.0996 14 21.0996 14 22.9004l0.200195 0.199219l-0.200195 0.200195c-0.700195 1.90039 -14.1006 16.6006 -18.2002 20.7002 +c7.2998 -1.7998 6 -0.900391 10.7998 -3.7002c1.7002 -0.899414 -5.39941 5.40039 -21.8994 20.2002c16.5 -6.7002 27.5996 -15.5 33 -27.7998l1.69922 30.7002l-22.3994 17.6992l6.39941 5.90039c-7.2998 0 -31 3.7002 -49.1992 -16l-2.5 0.5 +c6.9668 14.3867 12.4512 30.0156 16 46c1.9209 9.16797 2.95508 18.5742 3 28.2998c0 19.5 -4.7002 38.4004 -13.5 56.6006c-6.40039 13.5 -16.5 25.2998 -30 35.3994c-6.5957 4.94238 -13.4805 9.43652 -20.7002 13.5c3 0.700195 1 1.2002 -5.40039 1.2002 +c-6.39941 0.200195 -13 0.700195 -19.3994 1.2002v-3c-10.2949 -1.63086 -19.2871 -7.22266 -25.3008 -15.2002h-1.19922l-5.40039 -3.40039c-1.2002 2.90039 0 6.30078 4.2002 9.30078l10.5996 11.2998l-3.39941 -0.5l2 3.39941 +c-2.30078 0.200195 -4.2002 0.5 -6.2002 0.700195l-0.5 1.2002l2.5 1.7002c2.2002 -0.200195 4.59961 -0.5 7.09961 -0.700195c2.9043 1.54785 6.22559 2.4375 9.74414 2.4375c1.45898 0 2.88184 -0.150391 4.25586 -0.4375l2.5 -1.2002l0.200195 -0.5 +c7.93457 0.514648 15.7422 1.49121 23.4004 2.90039c20.6992 2.89941 36.6992 11.2998 48.5 24.7998l-21.1006 0.5c-25.7998 0.5 -49.3994 -5.40039 -71.2998 -18.9004l-2.5 2.5l0.5 4.7002l1.7002 7.10059c1.66211 8.54199 3.83691 17.1143 6.39941 25.2998 +c-1.69922 -0.700195 -4.59961 -4.90039 -9.2998 -11.2998c-4.7002 -6.40039 -8.39941 -13 -10.0996 -19.4004c-1.0957 -5.14258 -3.14062 -10.0195 -5.90039 -14.2998l-13.5 29l8.40039 -35.7998l-0.5 -1.7002c-0.00585938 0 -0.0146484 0.0117188 -0.0195312 0.0117188 +c-5.57227 0 -10.9424 0.87207 -15.9805 2.48828c-3.40039 0.700195 -10.6006 1.2002 -20.9004 1.2002c0.5 0 -0.700195 0 -3.2002 -0.5c5.40039 -1.30078 13.5 -4.2002 24.8008 -8.40039l6.39941 1.2002c-4.2002 -3.40039 -10.8994 -10.1006 -20.2002 -19.4004 +c-9.39941 -8.89941 -20.1992 -26.0996 -32.5 -50.2002l4.2002 1.2002l10.1006 9.2998l-5.40039 -4.69922l13 12.2998l-2.5 -3.40039c-5.09961 -7.59961 -8.09961 -12.2998 -9.2998 -15.2002zM367.5 -25.0996c8.2998 40.2998 3.59961 55.1992 -0.700195 89.5 +c-35.5 -11.8008 -20.2998 -6 -32 -10.8008l10.5 -14.1992l-1.2002 -1.2002c-20.1992 6 -23.1992 10.7998 -27.7998 15c6 -22.2002 13.9004 -26.4004 29.5 -31.7002c-9.5 -9.59961 -25.3994 4 -34.3994 13l2.5 -23.5996l-4.2002 -3c-5 22.0996 -22 39.0996 -25.2998 39.0996 +c-44 -13 -79.1006 -5.7998 -113.9 10.5996c-1.59961 -0.399414 -70.5996 -18 -120.5 37.1006c13.7002 -35 32.2998 -63.7002 71.2998 -82.6006c-4.98047 10.3184 -12.0117 19.3135 -20.7002 26.6006c0 0 0.700195 3.7002 1.2002 10.0996 +c19.4004 -19.3994 50.7002 -39.5 93.2002 -60.2002c-59.5996 24.5 -59.9004 24.8008 -69.0996 29l16 -20.6992c-3 -1.30078 -6.7002 -0.5 -10.1006 1.19922c-12.5371 7.32422 -24.2949 15.5693 -35.3994 24.8008c1.89941 -2.2002 80.0996 -98.5 200.899 -74.3008 +c-43.0996 21.8008 -52.3994 52.4004 -66.5996 73.5l17.7002 -7.59961l-11.8008 23.0996c20.1006 -27.7998 28.6006 -35 38.4004 -44.2998l-30 16.5c12.5996 -27.0996 33.7002 -47 63.5 -58.7998c2.90039 1.5 9.09961 -1.09961 59 23.9004zM482.8 189.3l8.93066 -12.7998 +l-12.3008 32.5c10.9004 0 10 -0.0996094 21.2002 -3.40039c-8.16406 11.4756 -17.0879 22.0469 -27 32l-26.5996 23.1006l1.2002 3l23.5996 2.5c-10.6865 2.35742 -21.708 3.79199 -33 4.2002l-17.7002 -0.5l-0.5 2.89941l14.7998 13l-41.7998 -20.2002l-12.2998 18.9004 +l3.40039 -16l-2.5 -1.2002l-5.90039 4.2002h-10.0996l5.39941 -4.2002v-2l-13.5 -27.7998c-10.0996 -31.2002 -21.8994 -67.9004 -35.3994 -109.7l1.19922 16l-1.19922 -3v-0.5c-6.40039 -16 -13.6006 -29.5 -21.2002 -39.5996l9.2998 21.8994l-46.7002 -20.1992 +c11.7998 13.5 23.6006 19.3994 34.9004 18.8994c-71.2002 11.4004 -106.2 41 -110.4 46c3.60059 -6.2002 13.2002 -17.7998 16 -40.0996l-1.7002 -1.2002c-4.2998 15.5996 -16.3994 46.5996 -55.7998 69.5996l23.6006 -2.5c-10.5 12.6006 -36.3008 17.8008 -40.8008 16 +l-2.5 2.5l8.40039 8.40039l-22.2998 -5.7998l5.39941 13.5c-8.09961 -4.40039 -4.2998 -2.40039 -17 -8.90039l-1.69922 0.5c0.599609 0.600586 0.899414 -0.700195 -3 9.2998c-0.600586 -11 -0.400391 -8.59961 -1 -11.7998 +c-1.29785 -0.430664 -2.54785 -1.00781 -3.7002 -1.7002c-40 20.6006 -57.2002 11 -73 5.2002c36.7998 -6 29.2998 -4 38.3994 -9.2998c-25.7998 -12.2002 -31.8994 -12.5996 -51.3994 -70.0996l22.2695 22.2998l2.5 -16.4004c13.4004 -58 68.7002 -92.5 126.4 -83.3994 +l-26.1006 22.3994l44.8008 -22.3994l-1.2002 -3c4.59961 -1.7002 9.2998 -3 13.5 -4.2002c19.3359 -5.72266 39.5713 -8.83887 60.752 -8.83887c11.0293 0 21.8643 0.832031 32.4482 2.43848l-32.5 21.2002c35.7998 -7 50.6992 -31.4004 56.7998 -39.5996l-7.60059 29 +l1.2002 2.5l19 -27.9004l-9.2998 26.5996l21.9004 -13.5h1.19922l-3.39941 4.2002l7.09961 -4.7002l-14.2998 16l1.2002 3l7.59961 -7.09961c4.2998 1.2002 41.4004 10.5 80.9004 40.2998c47.8994 35.4004 68.0996 73.7998 71.5996 79.7002l-3 9.2998zM476.7 260.6 +l-18.2002 -1.19922l14.2998 -11.8008zM221.9 253.5c2.69922 -5.09961 5.69922 -12.4004 18.3994 -18.7998c-7.5 -10.9004 -8.2998 -10.5 -20.2002 -16c-7.59961 -7.7002 -13.5 -13.1006 -17.6992 -14.7998l7.09961 13c-5.38281 -1.97266 -11.167 -3.06836 -17.2295 -3.06836 +c-2.57324 0 -5.10156 0.194336 -7.57031 0.568359l-0.5 1.19922c19 2.10059 37.2002 9.40039 46.5 16c-4.10059 4.2002 -7.10059 11.3008 -8.7998 21.9004zM225.6 355.8c5.87793 -3.32715 10.7842 -8.04688 14.3008 -13.7998 +c14.6992 -24.0996 19.1992 -40.0996 11.2998 -47.7002c-7.90039 -7.59961 -16.7998 -7.09961 -26.1006 3c-9.2998 10.1006 -13.5 23.7002 -11.7998 39.6006c1.7002 15.8994 5.90039 22.2998 12.2998 18.8994zM220.9 309.5 +c7.09961 -21.2998 33.3994 -23.0996 26.8994 4.90039c-3.89941 16.5 -8.7998 27.0996 -15.2002 32.5c-6.59961 5.39941 -10.0996 6.69922 -11.2998 4.19922c-2.5 -2.89941 -3.5 -11.2998 -3 -24.7998c7.5 12.7998 11.6006 5.90039 12.5 4.7002l-0.5 -0.5 +c-0.799805 -1.7002 -2.59961 -3.09961 1.7002 -6.2002l1.2002 0.5v-4.7002c-1.7998 -12.5 -6.90039 -12.7998 -12.2998 -10.5996zM175.9 315c-2.41016 0.448242 -4.38965 2.04102 -5.40039 4.2002c-3.5 8.5 0 21.2002 8.09961 21.2002 +c2 -0.5 3.7002 -1.7002 5.40039 -4.7002c-1.5 -0.400391 -4.7002 -4.7998 0.700195 -5.90039h0.5c0 -13.7002 -7.7002 -15.0996 -9.2998 -14.7998zM216 365.1l-3.7002 2.40039l-0.5 2.5c18.2998 0 25.7998 -8.7998 28.2998 -14.2998 +c-6.94727 3.78809 -14.9268 5.97363 -23.3916 5.97363c-0.90918 0 -1.81152 -0.0244141 -2.70801 -0.0742188l-0.5 3zM144.2 315.7c1.59961 -1.60059 0.599609 -0.299805 4.89941 -6.60059c-25.3994 -4.69922 -23.1992 -12.2998 -30 -12.2998 +c0.300781 0.600586 7.10059 16 23.6006 16l-7.10059 7.60059c9.40039 0.5 15.2002 2.09961 19.9004 -5.90039c0.0214844 8.14648 1.03027 16.0225 2.90039 23.5996c2 7.60059 3.69922 11.8008 5.39941 13.5c1 1.5 16.2998 15.7002 29 22.4004 +c2.33496 1.68262 5.22168 2.67676 8.31641 2.67676c1.8291 0 3.57715 -0.34668 5.18359 -0.976562c0.321289 -0.390625 0.515625 -0.889648 0.515625 -1.43457c0 -0.0898438 -0.00488281 -0.178711 -0.015625 -0.265625l-13 -7.59961 +c7.60059 -11.8008 10.5 -25.3008 8.7998 -41.3008c-1.11328 -11.292 -6.61426 -21.3291 -14.7998 -28.2998l2.90039 -4.7002c-30 2.2002 -24.7998 6.80078 -46.5 23.6006zM162.9 334.4c-1.80078 -7.2002 -2.30078 -16 -3.10059 -26l5.40039 -6.40039l7.09961 -3.40039 +c2.39648 -0.458008 4.79688 -0.699219 7.3252 -0.699219c1.3418 0 2.66797 0.0673828 3.97461 0.199219c1 1.7002 3.5 4.2002 6.40039 7.60059c5 5.89941 7.90039 13.7998 8.40039 23.0996c0.0849609 1.43848 0.113281 2.82617 0.113281 4.28613 +c0 7.30859 -1.08887 14.3643 -3.11328 21.0137c-3 8.10059 -5.90039 11 -10.1006 9.30078c-5.39941 -1.7002 -10.5996 -5.40039 -16 -11.8008c-3 -4.19922 -5.2002 -9.59961 -6.39941 -17.1992zM204.9 278.3l-3.10059 -6.5c7.10059 4.2002 13.5 7.2002 19.4004 8.40039 +l7.09961 0.5l11.7998 -7.60059h-2.5c-8.7998 3.7002 -19.3994 1.2002 -30.6992 -7.59961c-0.5 -4.7002 1.69922 -14.7002 5.89941 -29.5l9.2002 0.5c-21.9004 -6.59961 -37.5996 -8.40039 -48.9004 -5.40039c-24.8994 6.7002 -27.3994 23.6006 -27.5 24.1006 +c-1.74121 6.70996 -2.67871 13.6348 -2.67871 20.8867c0 4.35645 0.333984 8.63574 0.979492 12.8135c-6.40039 -0.5 -11 -4.2002 -15.2002 -10.6006c-2.90039 5.90039 -5.40039 8.7998 -5.90039 9.2998c1.5 0.700195 12.2998 7.5 32.5 4.90039l0.5 -2.5l-5.89941 -1.2002 +c-0.100586 -0.399414 -1.90039 -29.5 18.8994 -24.7998c1.40039 0.299805 1.2998 -0.0996094 36.1006 14.2998z" /> +d="M357.45 -20.2002c2.2002 -14.2998 4.09961 -28.7002 6.59961 -43.7002c-367.8 0 -153.899 -0.599609 -337.1 0c-4 0 -6.10059 0.700195 -5.2998 5.7002c2.09961 12.9004 3.5 25.9004 5 38.7998c0.5 4.80078 2.2998 6.80078 7.59961 6.80078 +c118.1 -1 114.9 -0.300781 121.4 2.39941c9.39941 4 14.8994 12.9004 14.8994 23.1006c-0.0996094 42.8994 -0.299805 85.8994 -0.200195 128.8c0 3.7998 -1.19922 5.89941 -4.59961 6.7998c-15.7002 3.90039 -31.2998 7.7002 -47.5996 11.7002 +c-5.30078 -12.2998 -10.4004 -24.4004 -15.7002 -36.7002c1.7998 -3.2998 28.3994 -2.90039 35.2998 -2.90039v-27.5996h-114.3c1 8.59961 1.7002 16.7998 3.2002 24.9004c0.299805 1.39941 3.59961 3.09961 5.5 3.19922 +c8.39941 0.400391 16.8994 0.300781 25.3994 0.100586c4 0 5.90039 1.09961 7.60059 5.2002c16.5996 40.6992 13.5 31.1992 67.2998 161c31.5 76.0996 33 76 32.5996 87.3994c-0.700195 18.6006 -25.3994 22.2998 -37.7002 22.1006c-30 -0.400391 -38.3994 0.5 -101.8 0.5 +c-7.2002 44.5 -4.2002 32.0996 -6.39941 45.2998c-0.700195 4.2002 1 5.2998 4.59961 5.2998l339.1 -0.200195c-0.799805 -5.39941 -1.59961 -10.7998 -2.39941 -16.0996c-1.2998 -9.7002 -2.7998 -19.4004 -4 -29.2002c-0.299805 -2.90039 -1.2002 -4.2998 -4.2998 -4.2998 +c-20.6006 -0.100586 -41.2002 -0.100586 -61.8008 -0.5c-18.6992 -0.400391 -37.5996 -0.299805 -56.1992 -2c-13.4004 -1.2002 -23.3008 -12.6006 -18.9004 -26.6006c8.59961 -27.0996 27.7002 -69.0996 36.5 -89.1992c65.7002 -154.2 61.4004 -157 84 -158.601 +c6.59961 -0.5 13.4004 -0.0996094 20.4004 -0.0996094c1.2998 -9.40039 2.59961 -18 4 -27.5h-116v27c10.3994 0 20.3994 0.0996094 30.3994 -0.100586c3.5 0 5 0.700195 3.40039 4.40039c-4.40039 10.2998 -8.7002 20.5996 -13.2002 30.9004 +c-1.59961 3.69922 -4.09961 4.7998 -8.40039 3.5c-12.3994 -3.60059 -24.7998 -6.7002 -37.2998 -9.7002c-4.2998 -1.10059 -6 -2.7998 -5.89941 -7.5c0.799805 -57.5 0.899414 -127.5 1 -129.101c0.399414 -12.5996 8.69922 -21.3994 21 -23.0996 +c0.899414 -0.200195 12.8994 -2.7998 112.699 -2.59961c8.30078 0 8.40039 0.0996094 9.60059 -7.60059zM182.55 185.5c2.87695 -1.01465 5.98633 -1.56641 9.20801 -1.56641s6.31543 0.551758 9.19238 1.56641c13 4.2002 26.2998 7.7998 39.3994 11.7002 +c1.34473 0.620117 2.65234 1.32422 3.90039 2.09961c-6.7002 17.4004 -13.0996 34.2002 -19.7002 50.9004c-8.89941 22.7002 -17.7002 60.2998 -27 82.7998c-1.5 0.799805 -1.89941 -2.40039 -9.39941 0c-17.1006 -44 -34.1006 -87.7998 -51.3008 -132.1 +c1.8457 -1.09766 3.7959 -2.07422 5.80078 -2.90039c13.2998 -4.2998 26.5996 -8.2998 39.8994 -12.5z" /> - +c-13.3994 49.5996 -18.2002 101.8 -0.0996094 133.8c3.7998 6.74023 16.7998 27.7402 47.5996 27.7402c41.6006 0 110.3 -41.6396 182.2 -142.14c28.7607 -2.29492 57.1504 -6.70801 84.5996 -13c20.5 82 6.90039 125.1 -15.5 137.8 +c-1.2998 0.700195 -38.3994 27.2002 -120.899 -52.7998c-3.40039 3.5 -6.80078 6.89941 -10.2002 10.1992c52.2998 50.9404 103.7 74.6006 138.2 55.2402c33.8994 -19.2002 41.8994 -75.8994 22.2998 -153.899c12.0234 -3.14844 24.0938 -6.9873 35.5996 -11.3008z +M135.901 411.16c-23.1006 -40.7998 1 -121.562 1.19922 -122.961c27.2979 6.86914 55.7041 11.835 84.4004 14.5996c15.5215 22.6875 32.2832 43.9033 50.7002 64.2002c3.39941 -3.33301 6.7998 -6.74609 10.2002 -10.2393 +c-15.1953 -16.6592 -29.1309 -33.958 -42.2002 -52.3994c17.9678 1.35645 34.9062 2.04102 53.2197 2.04102c13.6523 0 27.2158 -0.383789 40.6797 -1.1416c-64.5 86.6006 -126.5 126.2 -163.3 126.2c-23 0 -32 -15.2002 -34.8994 -20.2998zM440.701 -27.1406 +c3.2998 6 21.5 38.5996 -1.2002 123c-4.09961 -1.10059 -37.0996 -9.90039 -84.4004 -14.6006c-15.4961 -22.7061 -32.2598 -43.9238 -50.6992 -64.2002c-3.40039 3.2998 -6.80078 6.7002 -10.2002 10.2002c15.1943 16.6602 29.1299 33.958 42.2002 52.4004 +c-17.9014 -1.38379 -34.792 -2.08301 -53.0459 -2.08301c-13.7139 0 -27.3359 0.398438 -40.8545 1.18262c64.5996 -86.7998 126.6 -126.2 163.3 -126.2c23.1006 0 32 15.2002 34.9004 20.3008zM449.801 111.459c25.6006 7.2998 85.9004 27.4004 105.7 62.5 +c1.40039 2.5 33.5 50.5 -72.5996 90.4004c-11.1553 4.18555 -22.8525 7.92188 -34.5 11c-3.60059 -12.9004 -7.90039 -26.1006 -12.8008 -39.5c-3.71387 -0.506836 -6.9248 -2.60645 -8.89941 -5.60059l-0.100586 0.100586c-1.94824 1.84863 -4.25 3.31445 -6.7998 4.2998 +c5.7002 15 10.6006 29.7998 14.6006 44.2002c-7.2002 1.69922 -31.8008 7.59961 -72.2002 11.6992c16.7002 -24.5 27.8994 -44.0996 34.2998 -55.5c-4.18457 -1.36719 -7.79199 -3.96777 -10.4004 -7.39941c-13.5996 16.3994 -11 19.8994 -42.5 64.5 +c-16.6885 1.17285 -32.207 1.77344 -49.1914 1.77344c-21.2998 0 -42.3818 -0.9375 -63.208 -2.77344c-16.9004 -25 -28.2998 -45.2002 -34.7998 -56.9004c-4.16797 -1.77637 -7.68652 -4.69238 -10.2002 -8.39941c-1.07422 3.39844 -3.37402 6.23633 -6.40039 8 +c6.10059 11.3994 16.9004 31 32.7998 55.2998c-39.5996 -4.60059 -65 -11.2002 -72 -13c4.30078 -14.1006 9.40039 -28.6006 15.2002 -43.2998c-0.866211 -0.632812 -1.63086 -1.36328 -2.2998 -2.2002c-1.5 1.89941 -4 5.2998 -14.4004 5.2998 +c-4.69922 12.2998 -8.7998 24.5 -12.3994 36.4004c-138.8 -40.3604 -158.4 -121.36 1.5 -164c3.59961 12.8994 7.7998 26 12.7002 39.3994c0.328125 -0.0185547 0.651367 -0.0214844 0.984375 -0.0214844c2.0752 0 4.06641 0.360352 5.91504 1.02148 +c3 -1.2002 5.2002 -1 8.40039 -1c-5.5 -14.5996 -10.2002 -28.8994 -14.1006 -42.8994c23.4512 -5.42578 47.71 -9.39258 72.2002 -11.7002c-16.2998 23.8994 -27.5 43.3994 -33.7998 54.5996c8.7002 0 10.7002 1.60059 12.5996 3.2002 +c0.950195 -0.574219 1.95996 -1.08008 3 -1.5c15.3008 -26.7002 28.9004 -46.5996 36.8008 -57.7998c16.6875 -1.17285 32.2051 -1.77344 49.1895 -1.77344c21.2998 0 42.3838 0.9375 63.21 2.77344c16.5 24.2998 27.7002 44 33.9004 55.2002 +c7.2998 0 9.7998 3 10.8994 4.19922c1.82324 -1.3252 3.84766 -2.41113 6 -3.19922c-15 -28 -28.6992 -48.9004 -32.1992 -54.2002c24.4219 2.70312 48.6768 7.11816 72 13c-4.10059 13.7998 -9 27.8994 -14.7002 42.2002c2.00391 0.898438 3.81934 2.11523 5.39941 3.59961 +l0.100586 0.0996094c2.2666 -3.44043 6.1543 -5.7002 10.5781 -5.7002c0.0410156 0 0.0810547 0 0.12207 0.000976562c4.69922 -12.3008 8.7998 -24.5 12.3994 -36.4004zM335.401 225.459c0.0664062 0.00683594 0.132812 0.00878906 0.201172 0.00878906 +c1.07422 0 1.95117 -0.84668 1.99805 -1.90918v-51.5c0 -9.5 -5 -14.0996 -15.0996 -14.0996h-0.400391c-10.0996 0 -15.0996 4.5 -15.0996 14.0996v51.5c-0.00195312 0.0341797 -0.00488281 0.0664062 -0.00488281 0.100586c0 0.999023 0.811523 1.81055 1.81055 1.81055 +c0.0654297 0 0.130859 -0.00390625 0.194336 -0.0107422h1.2002c0.0742188 0.00976562 0.148438 0.0166016 0.224609 0.0166016c0.932617 0 1.69043 -0.756836 1.69043 -1.68945c0 -0.0771484 -0.00488281 -0.15332 -0.015625 -0.227539v-49.7998 +c0 -8 2.60059 -11.0996 10.1006 -11.0996s10.0996 3.2002 10.0996 11.0996v49.7998c-0.00488281 0.0566406 -0.00976562 0.111328 -0.00976562 0.168945c0 0.959961 0.779297 1.73926 1.74023 1.73926c0.0576172 0 0.114258 -0.00195312 0.169922 -0.0078125h1.2002z +M321.701 139.999l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059l-5.80078 -4.10059l2.10059 6.7998l-5.7002 4.30078l7.09961 0.0996094l2.30078 6.7998zM290.601 132.599l7.10059 -0.0996094l-5.7002 -4.2998l2.09961 -6.7998l-5.7998 4.09961 +l-5.7998 -4.09961l2.09961 6.7998l-5.69922 4.2998l7.09961 0.0996094l2.2998 6.80078zM295.701 163.399c0.0615234 0.00585938 0.12207 -0.0292969 0.185547 -0.0292969c1.00977 0 1.83008 -0.819336 1.83008 -1.83008 +c0 -0.0810547 -0.00585938 -0.162109 -0.015625 -0.241211v-0.799805c0.00390625 -0.0488281 0.0078125 -0.0966797 0.0078125 -0.145508c0 -0.977539 -0.792969 -1.77051 -1.77051 -1.77051c-0.0800781 0 -0.160156 0.00585938 -0.237305 0.015625h-22.5 +c-0.0644531 -0.00683594 -0.126953 -0.0117188 -0.193359 -0.0117188c-0.999023 0 -1.80957 0.811523 -1.80957 1.81055c0 0.0341797 0.000976562 0.0683594 0.00292969 0.101562v63c-0.00195312 0.0332031 -0.00488281 0.0664062 -0.00488281 0.100586 +c0 0.999023 0.811523 1.80957 1.80957 1.80957c0.0664062 0 0.130859 -0.00292969 0.195312 -0.00976562h22.2002c0.0771484 0.00976562 0.155273 0.0175781 0.235352 0.0175781c0.977539 0 1.77051 -0.793945 1.77051 -1.77051 +c0 -0.0498047 -0.00195312 -0.0986328 -0.00585938 -0.147461v-0.799805c0.00195312 -0.0380859 0.00488281 -0.0751953 0.00488281 -0.113281c0 -1.04395 -0.847656 -1.89062 -1.89062 -1.89062c-0.0380859 0 -0.0761719 0.000976562 -0.114258 0.00390625h-19.1006 +v-25.7998h16.1006c0.0380859 0.00195312 0.0742188 0.00488281 0.113281 0.00488281c1.04297 0 1.88965 -0.847656 1.88965 -1.89062c0 -0.0380859 -0.000976562 -0.0761719 -0.00292969 -0.114258v-0.800781 +c0.00195312 -0.0380859 0.00488281 -0.0742188 0.00488281 -0.113281c0 -1.04297 -0.847656 -1.88965 -1.89062 -1.88965c-0.0380859 0 -0.0761719 0.000976562 -0.114258 0.00292969h-16.1006v-26.6992h19.4004zM288.301 262.799l2.2998 -6.7998l7.10059 -0.0996094 +l-5.7002 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.69922 4.30078l7.09961 0.0996094z" /> +d="M2 70.5996h315.1l59.2002 -102.6h-285.399c-0.00488281 0 0.0205078 -0.0498047 0.015625 -0.0498047c-20.0742 0 -37.4736 11.5439 -45.916 28.3496zM501.8 98c19 -29.4004 -0.0996094 -55.9004 -2 -59.0996l-40.7002 -70.5l-257.3 447.6h88.4004 +c0.00390625 0 -0.0234375 0.0527344 -0.0195312 0.0527344c19.6797 0 36.79 -11.0879 45.4189 -27.3525zM275 143.5h-231l115.5 200z" /> @@ -3198,26 +3408,26 @@ c13.9004 0 25.7998 -3.7998 35.4004 -14.7998h0.5v75.5h151.199v-48.0996h-56.0996v- c-34 0 -34.6006 -62.7998 0 -62.7998zM460.5 112.1v29.6006h-56.0996v44.7002h56.0996v28.0996h-55.5v33.9004h56.0996v30.1992h-95v-166.5h94.4004zM414.6 151.9h56.1006v-45.6006l50.7002 57l-50.7002 57v-44h-56.1006v-24.3994zM553.2 141.6l26.2998 -29.5h40.5 l-46 51.4004l45.4004 51h-38.5l-25.6006 -29.2998l-26.5996 29.2998h-39.7002l45.5996 -51.2002l-45.5996 -51.2002h38.0996z" /> +d="M225 416c123.7 -0.299805 223.7 -100.9 223.4 -224.6c-0.300781 -123.7 -100.9 -223.7 -224.601 -223.4l-170.2 0.400391c-29.582 0 -53.6006 24.0117 -53.6006 53.5938c0 0.102539 0 0.204102 0.000976562 0.305664l0.400391 170.3 +c0.399414 123.7 100.899 223.7 224.6 223.4zM394.8 258.8c-0.0947266 7.71387 -1.06445 15.1934 -2.7998 22.4004l-55.2002 56.0996v-1.59961c0 -5.10059 -1.5 -9.60059 -3.7998 -14.2998zM331 353.7c1.94141 -2.71777 3.39453 -5.85449 4.2002 -9.2002l54.2998 -54.5996 +c-9.56543 28.6953 -30.9629 51.8848 -58.5 63.7998zM118.1 200.8c-5.54395 -0.450195 -11.0029 -1.44336 -16.1992 -2.89941l8.5 -8.5c2.04004 4.16895 4.62598 7.98535 7.69922 11.3994zM97 196.6c-4.72363 -1.31543 -9.36719 -3.08691 -13.7002 -5.19922l27 -27.2002 +c-1.51855 3.87012 -2.37598 8.09961 -2.39941 12.5l0.899414 8zM78.7998 189.2c-3.89551 -2.1748 -7.62207 -4.57227 -11.2002 -7.2002l35.3008 -35.9004c4.36133 2.17188 9.16016 3.79395 14.0996 4.7002zM63.5996 179.4 +c-3.7207 -2.78223 -7.0625 -5.89355 -10.0996 -9.40039l34.9004 -34.5996c3.2168 3.18945 6.69531 6.00781 10.5 8.5zM50.2998 167.1c-2.89941 -3.2998 -5.7998 -6.69922 -8.59961 -10.5l35.7998 -35.8994c2.11035 4.12598 4.6875 7.93262 7.7002 11.3994zM39.2998 152.8 +c-2.49414 -3.82227 -4.73926 -7.83984 -6.7002 -12l39.5 -39.7998c0.374023 5.3252 1.63574 10.4883 3.60059 15.2002zM30.5 136.5c-1.7998 -4.90039 -3.2998 -9.59961 -4.7002 -14.5l52.7002 -53.5c-3.96484 7.90234 -6.36621 16.8438 -6.7002 26.2002zM22.5996 93.5 +c0.046875 -7.56934 1.05859 -14.8945 2.90039 -21.9004l55.4004 -55.6992v1.09961c0.0429688 5.14551 1.35156 10.0322 3.59961 14.2998zM27.9004 62.7998c9.59375 -28.6787 30.9805 -51.8564 58.5 -63.7998c-1.90527 2.74219 -3.35254 5.87402 -4.2002 9.2002z +M22.5996 99.7998l64.4004 -64.2002c2.76953 3.4707 6.08594 6.38965 9.90039 8.7002l-72.2002 72.5c-1.2793 -5.48047 -2.00293 -11.1543 -2.10059 -17zM275.9 151.6c32.5996 -0.0996094 32.6992 49.2002 0.199219 49.4004l-33.5996 0.0996094 +c-4.91504 0.0224609 -8.90039 4.01855 -8.90039 8.93945v0.0605469l0.100586 47c0.0996094 40.5 38.5996 60.8008 66 54.9004c15.3994 -3.90039 30.2998 8.40039 30.2998 23.9004c0 12.0996 -8.7002 22.1992 -19.9004 24c-6.37305 1.50098 -12.9639 2.30078 -19.793 2.30078 +c-0.135742 0 -0.271484 -0.000976562 -0.40625 -0.000976562c-0.143555 0 -0.277344 -0.00292969 -0.420898 -0.00292969c-57.9893 0 -105.081 -47.0303 -105.18 -104.997l-0.0996094 -56l-42.6006 0.0996094c-32.5996 0.100586 -32.6992 -49.2002 -0.0996094 -49.2998 +l33.5996 -0.0996094c4.40039 0 8.90039 -4.5 8.90039 -9l-0.0996094 -47c-0.00585938 -30.8535 -25.0527 -55.9004 -55.9062 -55.9004h-0.194336c-9.39941 0 -9.39941 1.59961 -15.7002 1.59961c-13.458 -0.209961 -24.3447 -11.1289 -24.5 -24.5996 +c0 -15.5 14.2002 -24.2002 19.9004 -24.2002c61.2998 -12.8994 125.5 33.6006 125.7 102.9l0.0996094 56zM299.4 151.9c5.48145 0.538086 10.9062 1.52637 16.0996 2.89941l-8.5 8.5c-1.78711 -4.29492 -4.37207 -8.14844 -7.59961 -11.3994zM320.4 156.1 +c4.74121 1.31738 9.38574 3.12305 13.6992 5.30078l-27 27.1992c1.51855 -3.86914 2.37598 -8.09961 2.40039 -12.5l-0.900391 -8.09961zM338.4 163.5c4 2.2002 8.09961 4.7002 11.8994 7.2002l-36.2002 35.8994c-4.09961 -2.2998 -8.7998 -3.59961 -13.6992 -4.69922z +M353.9 173.3c3.55273 2.83594 6.87891 5.7998 10.0996 9l-34.9004 35c-3.18457 -3.22266 -6.66797 -6.04492 -10.5 -8.5zM367.1 185.6c3.0625 3.36523 5.89941 6.82812 8.60059 10.5l-35.7998 35.9004c-2.1582 -4.0957 -4.73145 -7.89746 -7.7002 -11.4004zM378.1 199.9 +c2.53027 3.79688 4.77832 7.81738 6.7002 12l-39.5 39.7998c-0.374023 -5.3252 -1.63574 -10.4893 -3.59961 -15.2002zM391.6 230.8l-53.0996 53.4004c4.25977 -7.79688 6.82422 -16.7627 7.09961 -26.2002l41.3008 -41.5c1.7959 4.61523 3.39258 9.46387 4.69922 14.2998z +M392.6 236.4c1.25586 5.3623 2.04199 10.9189 2.30078 16.5996l-64.3008 64.7002c-2.61426 -3.74805 -5.95898 -6.85938 -9.89941 -9.2002z" /> +d="M277 277.3h-85.4004v-256c-0.0273438 -47.082 -38.2617 -85.2998 -85.3506 -85.2998c-47.1055 0 -85.3496 38.2441 -85.3496 85.3496c0 47.1064 38.2441 85.3506 85.3496 85.3506h0.0507812c-47.1055 0 -85.3496 38.2441 -85.3496 85.3496 +c0 47.1064 38.2441 85.3506 85.3496 85.3506c-47.0781 0 -85.2998 38.2217 -85.2998 85.2998s38.2217 85.2998 85.2998 85.2998h170.7c47.1055 0 85.3496 -38.2441 85.3496 -85.3496c0 -47.1064 -38.2441 -85.3506 -85.3496 -85.3506zM277 277.3 +c47.0762 -0.00488281 85.2949 -38.2236 85.2998 -85.2998c0 -47.0781 -38.2217 -85.2998 -85.2998 -85.2998s-85.2998 38.2217 -85.2998 85.2998s38.2217 85.2998 85.2998 85.2998z" /> +d="M427.84 67.3301l-196.5 -97.8203c-2.24707 -0.963867 -4.72266 -1.49805 -7.32129 -1.49805s-5.10156 0.53418 -7.34863 1.49805l-196.51 97.8203c-4 2 -4 5.28027 0 7.29004l47.0596 23.3799c2.25098 0.964844 4.72949 1.49805 7.33203 1.49805 +c2.60156 0 5.10742 -0.533203 7.3584 -1.49805l134.76 -67c2.24609 -0.969727 4.72168 -1.50684 7.32129 -1.50684s5.10254 0.537109 7.34863 1.50684l134.76 67c2.24902 0.964844 4.72656 1.49902 7.32715 1.49902s5.10449 -0.53418 7.35352 -1.49902l47.0596 -23.4297 +c4.0498 -1.95996 4.0498 -5.24023 0 -7.24023zM427.84 203.86c4.0498 -2.01074 4.0498 -5.29004 0 -7.31055l-196.5 -97.7998c-2.24707 -0.964844 -4.74902 -1.49902 -7.34863 -1.49902c-2.59863 0 -5.07422 0.53418 -7.32129 1.49902l-196.51 97.7998 +c-4 2.02051 -4 5.31055 0 7.31055l47.0596 23.4297c2.25098 0.964844 4.75684 1.49805 7.3584 1.49805c2.60254 0 5.08105 -0.533203 7.33203 -1.49805l134.76 -67.0801c2.24902 -0.959961 4.75 -1.49121 7.34863 -1.49121c2.59766 0 5.07227 0.53125 7.32129 1.49121 +l134.76 67.0801c2.24902 0.964844 4.75293 1.49902 7.35352 1.49902s5.07812 -0.53418 7.32715 -1.49902zM20.1602 317.58c-4.0498 1.86035 -4.0498 4.88965 0 6.74023l196.5 90.2793c2.2666 0.900391 4.76074 1.39551 7.3457 1.39551 +c2.58594 0 5.05762 -0.495117 7.32422 -1.39551l196.51 -90.2793c4 -1.85059 4 -4.87988 0 -6.74023l-196.51 -90.29c-2.26953 -0.890625 -4.76172 -1.37988 -7.3457 -1.37988s-5.05469 0.489258 -7.32422 1.37988z" /> +d="M447.8 384c23.6006 0 42.9004 -19.0996 42.9004 -42.7002v-298.6c0 -23.6006 -19.1006 -42.7002 -42.7002 -42.7002h-149.4v42.7002h149.2v298.6h-383.8v-63.8994h-42.7002v63.8994c0 23.6006 19.1006 42.7002 42.7002 42.7002h383.8zM21.2998 64.4004 +c35.2998 0 63.9004 -28.6006 63.9004 -63.9004h-63.9004v63.9004v0zM21.2998 149.4c82.4004 -0.100586 149.4 -67 149.3 -149.4h-42.6992c0 58.9004 -47.7002 107 -106.601 107v42.4004zM213.4 0c-0.100586 106 -86.1006 192.4 -192.101 192.2v42.3994 +c129.5 -0.299805 234.3 -105.1 234.8 -234.6h-42.6992z" /> +c0.00195312 0.0214844 0.00195312 0.0419922 0.00195312 0.0634766c0 0.612305 -0.49707 1.11035 -1.10938 1.11035c-0.0244141 0 -0.0478516 -0.00195312 -0.0722656 -0.00390625h-9.39941c-0.0244141 0.00195312 -0.0488281 0.00292969 -0.0732422 0.00292969 +c-0.612305 0 -1.11035 -0.498047 -1.11035 -1.11035c0 -0.0214844 0.00195312 -0.0410156 0.00292969 -0.0625v-55.2793c-0.000976562 -0.0214844 -0.00195312 -0.0419922 -0.00195312 -0.0634766c0 -0.618164 0.501953 -1.11914 1.12012 -1.11914 +c0.0214844 0 0.0410156 0.000976562 0.0625 0.00195312h9.63965c0.0205078 -0.000976562 0.0410156 -0.00195312 0.0625 -0.00195312c0.618164 0 1.12012 0.501953 1.12012 1.12012c0 0.0214844 -0.00195312 0.0410156 -0.00292969 0.0625v27.7695 +c0 2.91016 0.0498047 11.3701 4.45996 15.0498c4.90039 4.90039 12 3.36035 13.4102 3.06055c0.630859 0.0107422 1.1709 0.393555 1.41016 0.939453c1.15918 2.57324 2.19629 5.28125 3.05957 8c0.0517578 0.130859 0.0800781 0.273438 0.0800781 0.422852 +c0 0.416992 -0.21875 0.783203 -0.549805 0.987305v-0.00976562zM502.69 170.6l-2.12012 7.29004c-0.470703 1.18066 -1.41016 0.709961 -1.41016 0.709961c-4.23047 -1.81934 -10.1504 -1.88965 -11.29 -1.88965c-4.63965 0 -17.1699 1.12988 -17.1699 19.7598 +c0 6.23047 1.84961 19.7607 16.4697 19.7607c0.299805 0.00683594 0.601562 0.0107422 0.90332 0.0107422c3.70605 0 7.26562 -0.587891 10.6172 -1.66113c3.35059 -1.07324 0.939453 -0.469727 1.17969 0.709961c0.939453 2.58984 1.63965 4.46973 2.58984 7.53027 +c0.230469 0.939453 -0.469727 1.16992 -0.709961 1.16992c-11.5898 3.87012 -22.3398 2.5293 -27.7598 0c-1.58984 -0.740234 -16.2305 -6.49023 -16.2305 -27.5205c0 -2.89941 -0.580078 -30.1094 28.9404 -30.1094c5.45117 0.0107422 10.6943 1.02051 15.5195 2.83008 +c0.319336 0.236328 0.527344 0.616211 0.527344 1.04395c0 0.130859 -0.0214844 0.256836 -0.0566406 0.375977v-0.0107422zM556.56 210.12c-0.799805 3 -5.36914 16.2295 -22.3496 16.2295c-16 0 -23.5195 -10.1094 -25.6396 -18.5898 +c-1.07129 -3.53906 -1.64746 -7.29199 -1.64746 -11.1787c0 -0.198242 -0.00585938 -0.383789 -0.00292969 -0.581055c0 -25.8701 18.8398 -29.4004 29.8799 -29.4004c10.8203 0 16.46 2.35059 18.5801 3.76074c0.469727 0.239258 0.709961 0.709961 0.240234 1.87988 +l-2.36035 6.83008c-0.200195 0.430664 -0.636719 0.729492 -1.14258 0.729492c-0.0927734 0 -0.180664 -0.0107422 -0.267578 -0.0302734c-2.58984 -0.939453 -6.34961 -2.81934 -15.29 -2.81934c-17.4199 0 -16.8496 14.7402 -16.9297 16.7002h37.1602 +c0.569336 0.0136719 1.04395 0.40918 1.17969 0.939453c-0.239258 0.00976562 0.94043 7.07031 -1.41016 15.54v-0.00976562zM533.27 216.47c5.11035 0 11.8506 -2.2002 12.7305 -14.1201h-26.3701c0.639648 5.12012 3.31055 14.1201 13.6396 14.1201z" /> +d="M213.86 152h-113.86c-55.1914 0 -100 44.8086 -100 100s44.8086 100 100 100h132.84c22.0771 0 40 -17.9238 40 -40s-17.9229 -40 -40 -40h-134.84c-26.4697 0 -26.4502 -40 0 -40h113.82c55.1914 0 100 -44.8086 100 -100s-44.8086 -100 -100 -100h-171.82 +c-22.0762 0 -40 17.9238 -40 40s17.9238 40 40 40h173.86c26.4795 0 26.46 40 0 40zM298 32c26.7314 18.1455 45.667 46.8174 51.1104 80h64.5498c10.8652 0.0927734 19.6572 8.94238 19.6572 19.8291c0 0.0585938 0.00292969 0.113281 0.00292969 0.170898v120v0.173828 +c0 10.8867 -8.79492 19.7334 -19.6602 19.8262h-117.24c9.34473 10.6875 15.0088 24.6729 15.0088 39.9697c0 15.2979 -5.66406 29.3428 -15.0088 40.0303h136.93c43.4404 0 78.6504 -35.8203 78.6504 -80v-160c0 -44.1797 -35.21 -80 -78.6504 -80h-135.35z" /> +d="M421.78 295.83c-48.1602 -26.3896 -118.561 -58.1504 -130.2 -50s91.4395 80.3701 106.689 88.7695c0.920898 0.5 1.80078 0.970703 2.63086 1.40039c2.07227 0.612305 4.28125 0.954102 6.55176 0.954102c12.7275 0 23.0605 -10.332 23.0605 -23.0596 +c0 -7.31445 -3.41309 -13.8389 -8.73242 -18.0645zM421.78 78.6602c5.27539 -4.22949 8.64258 -10.7148 8.64258 -17.9961c0 -12.7334 -10.3369 -23.0703 -23.0693 -23.0703c-2.24023 0 -4.40527 0.320312 -6.45312 0.916016 +c-0.830078 0.410156 -1.70996 0.900391 -2.63086 1.41016c-15.2695 8.38965 -118.25 80.6396 -106.689 88.7402c11.5596 8.09961 82.04 -23.6201 130.2 -50zM464.21 211c10.4287 -2.18359 18.2344 -11.4395 18.2344 -22.5127 +c0 -11.4219 -8.34375 -20.9102 -19.2646 -22.6973c-54.9102 0.0195312 -131.93 6.00977 -138.21 18.7598c-6.2793 12.75 118.84 26.5098 136.24 26.5098c1.0498 0 2.0498 -0.0595703 3 -0.0595703zM31 351.35c-0.817383 2.46387 -1.26074 5.09766 -1.26074 7.83496 +c0 13.7314 11.1484 24.8799 24.8799 24.8799c9.96582 0 18.5498 -5.8457 22.5205 -14.3145l81 -205.06h1.20996l77 203.529c3.42188 8.7627 11.9502 14.9775 21.9189 14.9775c12.9805 0 23.5195 -10.5391 23.5195 -23.5195 +c0 -2.33398 -0.353516 -4.59863 -0.988281 -6.72754l-109.6 -273.391c-18.5498 -47.2197 -37.1201 -79.5596 -93.29 -79.5596c-0.185547 -0.000976562 -0.371094 -0.000976562 -0.556641 -0.000976562c-7.9707 0 -15.6465 0.666016 -23.2539 1.95117 +c-8.90723 2.55371 -15.4336 10.7646 -15.4336 20.4883c0 11.7607 9.54883 21.3096 21.3105 21.3096c0.349609 0 0.677734 -0.0117188 1.02344 -0.0283203c0.660156 -0.0595703 10.9102 -0.660156 13.8604 -0.660156c30.4697 0 43.7393 18.9404 58.0693 59.4102z" /> +d="M439.55 211.95c5.22266 -5.22363 8.45508 -12.4463 8.45508 -20.4092s-3.23242 -15.1768 -8.45508 -20.4014l-194.689 -194.689c-5.22363 -5.21973 -12.4443 -8.4502 -20.4043 -8.4502c-7.96094 0 -15.1729 3.23047 -20.3965 8.4502l-195.609 195.6 +c-5.22266 5.22363 -8.45508 12.4463 -8.45508 20.4092s3.23242 15.1768 8.45508 20.4014l134.12 134.14l50.79 -50.8496c-5.95996 -14.2607 -2.16016 -36.4902 18.6396 -45v-123c-22.3203 -9.09082 -28.8203 -38.4004 -11.25 -56 +c6.21582 -6.21191 14.8066 -10.0557 24.2803 -10.0557c9.47266 0 18.0547 3.84375 24.2695 10.0557c13.1807 13.1494 16.2197 42.46 -9.08008 55v121.85l46.3506 -46.29c-14.21 -34.4697 29.5098 -63.8301 56 -37.3398c25.71 25.6895 -1.24023 68.4902 -35.4707 56.6895 +l-49.6592 49.6602c9.29004 26.9102 -16.3301 52.8203 -43.3906 43.6807l-51.5195 51.5195l40.6602 40.6299c5.22461 5.2207 12.4463 8.45117 20.4082 8.45117c7.96289 0 15.1768 -3.23047 20.4014 -8.45117z" /> +c14.4902 -7.60059 25.5605 -19.3301 33.5605 -33.8301c7.52734 14.4502 19.1924 26.1982 33.5801 33.8301c-14.4902 8.00977 -26.0508 19.0596 -33.8203 33.5498c-7.60156 -14.3262 -19.2539 -25.9658 -33.5898 -33.5498z" /> +c0 41.7695 34.3408 75.6494 76.6904 75.6494c0.0117188 0 -0.0234375 -0.00292969 -0.0117188 -0.00292969c5.91797 0 11.6826 -0.666016 17.2217 -1.92676c0.623047 2.21875 1.13281 4.53516 1.5 6.84961c6.92969 44.1904 -14.8496 72.8408 -78 72.8408h-133.44 +l-77.25 -290.74zM358 240.89l-9.4502 -36.75l-15 36.75h-31.3398l-26.6299 -90.3096h37.8301l7.83008 35.6299l11.1895 -35.6299h35.4102l22.1602 90.3096h-32zM503.86 58.8096l21.1992 84.0605h-103.869l53.0498 205.36h-92.5l-21.3301 -82.3506 +c29.3799 -10.5996 50.3799 -38.4102 50.3799 -71.0596c0 -41.7803 -34.3496 -75.6504 -76.6904 -75.6504c-0.0205078 0 0.0380859 -0.00292969 0.0166016 -0.00292969c-3.90137 0 -7.73633 0.28418 -11.4863 0.833008l-15.8398 -61.1904h197.07zM211.7 178.61 +c16.1494 0 29.7002 -7.51074 24.1396 -29.8203c-5.83008 -23.4697 -21.7998 -26.6504 -37.9395 -26.6504h-24.7002l13.7998 56.4707h24.7002zM233 278c18.0703 0 32.2305 1.29004 27.5801 -17.5703c-3.83008 -15.5 -21.21 -30.1396 -39.21 -30.1396h-21.3701l11.6602 47.71 +h21.3398z" /> +c33.6494 -45.6201 48.5293 -100.87 35.3096 -149.2c-1.16797 -4.21484 -2.58105 -8.44238 -4.16016 -12.4697c-1.72949 1.14941 -3.84961 2.41992 -6.72949 4c0 0 -76.3906 47.1699 -159.181 130.59c-2.16992 2.2002 44.1504 -66.25 96.7207 -121.74 +c-24.7803 13.9004 -93.7803 64.1201 -137.48 104.12c5.58301 -9.18652 11.8184 -17.7773 18.7803 -25.8994c36.4902 -46.2207 84.0898 -103.37 141.09 -147.221c-40 -24.4902 -96.6396 -26.3994 -153 0c-13.8662 6.50977 -26.9756 14.3477 -39.1699 23.3701 +c25.1133 -39.9365 61.6025 -71.4268 105.29 -90.3701c53.3203 -22.9199 106.35 -21.3799 145.85 -0.379883l0.419922 0.25c1.77051 1 3.53027 2 5.25 3c19.0801 9.7998 56.3105 19.46 76.3105 -19.4697z" /> - - - - - - - - - +c0.360352 5.24023 0.524414 10.1309 0.524414 15.4619c0 5.12988 -0.169922 10.2197 -0.503906 15.2656c-0.43457 14.9102 -1.64258 29.4004 -3.61035 43.8799c-1.87012 13.2197 -3.56934 22.3799 -5.38965 32c-1.02051 4.87988 -1.28027 6.39941 -1.83008 8.44922 +c-0.506836 2.22461 -2.49805 3.89062 -4.875 3.89062h-0.0253906h-0.819336l-32 -5c-2.37793 -0.385742 -4.20117 -2.44922 -4.20117 -4.93457c0 -0.0224609 0.000976562 -0.0439453 0.000976562 -0.0654297 +c-0.00976562 -0.128906 -0.0146484 -0.249023 -0.0146484 -0.380859c0 -0.130859 0.00488281 -0.260742 0.0146484 -0.389648l1.68945 -8.7793c1.60645 -8.86719 3.23633 -20.0938 4.88965 -33.6807c1.62695 -13.9551 2.49707 -27.7852 2.59961 -42.1494 +c0.266602 -26.9072 -2.44336 -46.834 -8.12988 -59.7803c-5.62891 -12.7627 -17.1777 -22.3076 -31.1504 -25.2305c-16.2686 -3.44336 -32.8506 -5.2627 -50.1387 -5.2627c-2.38477 0 -4.76172 0.0341797 -7.13086 0.103516h-10.25 +c-2.40625 -0.0712891 -4.53223 -0.0996094 -6.95605 -0.0996094c-17.2725 0 -34.127 1.80566 -50.3838 5.23926c-14.0283 2.86719 -25.6377 12.4033 -31.3105 25.1797c-5.60645 12.9336 -8.31641 32.877 -8.12988 59.8301 +c0.101562 14.3672 0.986328 28.2021 2.64062 42.1504c1.62012 13.6201 3.2334 24.8467 4.83984 33.6797l1.7002 8.78027c0.00976562 0.128906 0.0146484 0.249023 0.0146484 0.379883c0 0.131836 -0.00488281 0.261719 -0.0146484 0.389648 +c0 0.00488281 -0.00488281 0.00878906 -0.00488281 0.0126953c0 2.48633 -1.79297 4.55664 -4.15527 4.9873l-32 5h-0.69043c-2.37402 -0.0214844 -4.3623 -1.6748 -4.89941 -3.88965c-0.540039 -2.03027 -0.820312 -3.57031 -1.82031 -8.4502 +c-1.83008 -9.41992 -3.52051 -18.6094 -5.40039 -32c-1.95898 -14.4814 -3.16406 -28.9697 -3.59961 -43.8799c-0.351562 -5.13867 -0.530273 -9.93066 -0.530273 -15.1582s0.178711 -10.4131 0.530273 -15.5518c0.766602 -27.0928 5.43359 -48.7598 14 -65 +c8.57324 -16.2061 23.0801 -27.873 43.5195 -35c20.4404 -7.12695 48.9209 -10.6172 85.4414 -10.4697h4.59961c36.5605 -0.15332 65.0439 3.33691 85.4502 10.4707c20.4336 7.12012 34.9365 18.7871 43.5098 35.001s13.2402 37.8809 14 65.001z" /> diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf index 948a2a6cc76a4d7cb692d0d08e352f126ec48a9d..f071825144b8bb9b0ebdb53121ebe9d96e69fd28 100644 GIT binary patch delta 11726 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 LfBKzzUDf{sSojMX diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff index 2a89d521e3fadb6ad3bc1738830a2c039bc57272..277ab65bb454ce4dd64d2cf6a5bf42b06e8c1e93 100644 GIT binary patch literal 92136 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

    w`Ao`B8FfP>nd2WTiT*&L> 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�d261qc>pomd%U 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 diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot index 38cf2517a4da71a05f8e83723cdffce45ebc3319..bef9f7226c215f6cf889fa42b4b15488055219ee 100644 GIT binary patch delta 1055 zcmYk5YiJx*6vxk<$Ik5R?(EKFXJ%is&t%`(>}zH>X_6)}Tct@c6iq^nnBca?CTM(s zSYs2k=7R)m9FRgmf=Iwu2puUw{ZMU{e27I9tF1*s)euS%35oPW9h_<^UJmD+d$}C` z{O|o;na7srF)}v?KrE0IVtnW9=0evvsX!453m;V|1#(b;)WU-uS`zV|H?vb5>0BacFsWan8$LhY|d|i7RWr^R8uB~d9 zQJ|}OwHgI@VHJRUWa{bXp1<>C_oo0ay8);V00E%B*G4zb?u?LQ9^A+a> zr{QXMO}bV&mHU{F^L73me!byf!@9f2z2r88gTiN`PdqN(kh0Qo=_^l<=UvaXx9npnOaL%(<_;9W<0Z%EoV<>?=+uk-p&o= zwp*Ufi}|?%Q&=qgSv*p_RytAoqTEvlcb^9I5QTG#I*5hillC%vIOpo`{T8Z+Nk6x>e4q6`*oL2;#AQKf`g)QXup zQAG`+5UO+{%~mTW#eG;&t)N{S*2dJDCs0RrL~;j`9y}oT>$Yj`pcs~gAbpsz$!Q!XxS&9gjsT}h-l+C_=7#9l6)H88>n$Xl%Bipgz$5Dr5T`Y|sn}v_eh$c`!|=`%qDH z4wXqZP!F(L-%w7Fq*hs$abpw>7%O@Ek9IRaKRvV_Gl?}p)y7_m;7YEbt(+Kil%Qmy pn=>c=%d%^aWq?wtkW-2Ut!3JO_qKj$de`c{cGLJ_53m0)`x~f-1~~u# delta 1088 zcmZ9LX=ogE6u{qqcJ7^>Ju1V5B~2(@_B!bmBt#9*aJl~_?qQ~DtUkx)VjVm=6QaT+6tkH@<{Jl?_Y z>RIgmS&XQh2B@1Q3i$lRnaXVY5RrluG%8E)7N`u!T3kE(VyhBE7V+Gb;!6PUn*hN5 zT&c4Q;xG>|y{YU&Nzb}grH_ofGgx}~`3eBz0~lQz8hE{5bX3-qOQ;TCN8fiT%gEi{ z{6Llfj;{g`uZ)jP9NRwHaSPy73jp;gAOO^Zag~{i^M{NrTcF3Z#sCj5eGuFANi~jn zsma6C8hw~vV_su!usmC2&#>$IqJEhZxjgqCch4Xge&Z#+mp{YbF_w(e#&1kuYBPS%s1$};ivuG{&W7NK!0E(SPm|R_|Q=3m(X@t2=_+X zBMVVF+8dpY-i&U>BC$7OcWVQ+Q?-xc<@mRWY~o~MyRN%#q25$KCzEo2l1!dX#ZwF2aJ zsnRp&5k^qz7taz1vs#qvC2ty`+mL}H+J9|U!H9U2zydOsL^77k7V`FJB$v$>c1&JE zUQ}qq6rwXNOQ;!3=L={{j}@8c75OIB}lP*}Nv@P-iM_ zNSM*EQzlW_Vx^hiV?|1DWGZBhz<8_@y-&}&6FMC(#!159Hs|domr1$RnIbrI$N}n; z&f7%5uN^QBNp04&&1x2SWJF{zkVKSbBRO-n4JkkNxLOI8m}52h>=T`iWdD;@)v4;e zNi>C4ClQ)wsOn{sW3il0*SZHW6gv1cQ@!O2tbPgfPkDnD=vEdhajFe9qqKySjY^g# zMXsMV@wgJ+FWVVjTe->O@#w03Xm9meihICmst)b{AxP|ys(gLIL)GWxhK!t2+E2xl zYbRtwM!R{#4#&Gx%ezzqWHJqMD%I$Vb&ZW4^K~2_m>7F=!1wmRTN6jeMvK0G8mZxv OTa2(W9RBnF82$~XIsq>L diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg index 48634a9ab4..bccc256b91 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg @@ -1,16 +1,12 @@ - -Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 +Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020 By Robert Madole Copyright (c) Font Awesome - + @@ -77,17 +73,17 @@ c0 -110.569 89.4678 -200 200 -200zM363.244 247.2c0 -67.0518 -72.4209 -68.084 -72 c17.5615 9.84473 28.3242 16.541 28.3242 29.5791c0 17.2461 -21.999 28.6934 -39.7842 28.6934c-23.1885 0 -33.8936 -10.9775 -48.9424 -29.9697c-4.05664 -5.11914 -11.46 -6.07031 -16.666 -2.12402l-27.8232 21.0986 c-5.10742 3.87207 -6.25098 11.0654 -2.64453 16.3633c23.627 34.6934 53.7217 54.1846 100.575 54.1846c49.0713 0 101.45 -38.3037 101.45 -88.7998zM298 80c0 -23.1592 -18.8408 -42 -42 -42s-42 18.8408 -42 42s18.8408 42 42 42s42 -18.8408 42 -42z" /> +d="M288 304c0.114258 0 0.240234 -0.0175781 0.354492 -0.0175781c61.6543 0 111.71 -50.0557 111.71 -111.71s-50.0557 -111.71 -111.71 -111.71s-111.71 50.0557 -111.71 111.71c0 10.7422 1.51953 21.1328 4.35547 30.9678 +c7.95898 -4.52637 17.2129 -7.17188 27 -7.24023c30.9072 0 56 25.0928 56 56c-0.0683594 9.78711 -2.71387 19.041 -7.24023 27c9.88379 3.07617 20.3896 4.83008 31.2402 5zM572.52 206.6c2.21387 -4.37793 3.46094 -9.38965 3.46094 -14.626 +c0 -5.2373 -1.24707 -10.1855 -3.46094 -14.5635c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635 +c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48c98.6602 0 189.1 55 237.93 144c-48.8398 89 -139.27 144 -237.93 144s-189.09 -55 -237.93 -144c48.8398 -89 139.279 -144 237.93 -144z" /> +d="M634 -23c3.66895 -2.93262 6.00391 -7.45117 6.00391 -12.5088c0 -3.7832 -1.31543 -7.26074 -3.51367 -10.001l-10 -12.4902c-2.93359 -3.66309 -7.44824 -5.99414 -12.502 -5.99414c-3.77637 0 -7.25 1.31152 -9.98828 3.50391l-598 467.49 +c-3.66895 2.93262 -6.00391 7.45117 -6.00391 12.5088c0 3.7832 1.31543 7.26074 3.51367 10.001l10 12.4902c2.93359 3.66309 7.44824 5.99414 12.502 5.99414c3.77637 0 7.25 -1.31152 9.98828 -3.50391zM296.79 301.53c7.51172 1.60254 15.2266 2.45508 23.21 2.46973 +c60.4805 0 109.36 -47.9102 111.58 -107.85zM343.21 82.46c-7.51367 -1.59375 -15.2285 -2.44336 -23.21 -2.45996c-60.4697 0 -109.35 47.9102 -111.58 107.84zM320 336c-19.8799 0 -39.2803 -2.7998 -58.2197 -7.09961l-46.4102 36.29 +c32.9199 11.8096 67.9297 18.8096 104.63 18.8096c122.93 0 230.29 -71.5898 284.57 -177.4c2.21289 -4.37793 3.45996 -9.38965 3.45996 -14.626c0 -5.2373 -1.24707 -10.1855 -3.45996 -14.5635c-14.1924 -27.5625 -31.9229 -52.6689 -52.9004 -75.1104l-37.7402 29.5 +c17.2305 18.0527 31.9385 38.1318 44 60.2002c-48.8398 89 -139.279 144 -237.93 144zM320 48c19.8896 0 39.2803 2.7998 58.2197 7.08984l46.4102 -36.2803c-32.9199 -11.7598 -67.9297 -18.8096 -104.63 -18.8096c-122.92 0 -230.28 71.5898 -284.51 177.4 +c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635c14.1885 27.5586 31.916 52.6621 52.8896 75.1006l37.7402 -29.5c-17.249 -18.0469 -31.9727 -38.1221 -44.0498 -60.1904c48.8496 -89 139.279 -144 237.93 -144z" /> +d="M567.403 212.358c5.59668 -8.04688 8.59668 -17.6113 8.59668 -27.4121v-136.946c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v136.946c0 10.167 3.19531 19.6465 8.59668 27.4121l105.08 151.053 +c8.67383 12.4678 23.0791 20.5889 39.4043 20.5889h269.838c16.3252 0 30.7305 -8.12109 39.4043 -20.5889zM153.081 336l-77.9131 -112h425.664l-77.9131 112h-269.838zM528 48v128h-480v-128h480zM496 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32 +s14.3271 32 32 32s32 -14.3271 32 -32zM400 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z" /> +c0 56.9277 35.2861 92 83.2002 92c0.0283203 0 -0.0361328 0 -0.0078125 0c7.66602 0 15.1582 -0.748047 22.4072 -2.17578v86.1768zM224 364.8c0 18.9756 -16.2246 35.2002 -35.2002 35.2002c-18.7002 0 -35.2002 -16.7754 -35.2002 -35.2002v-158.399 +c-17.3242 0 -35.1992 26.3994 -70.3994 26.3994c-26.4004 0 -35.2002 -20.625 -35.2002 -44c0 -8.79395 32.7119 -20.4443 56.0996 -34.9258c14.5752 -9.07422 27.2256 -19.5244 39.875 -30.7988c18.374 -16.1094 36.6328 -33.8359 39.5967 -59.0752h176.753 +c3.7627 42.79 39.6758 74.5088 39.6758 120v21.2988c0 40.5244 -22.1973 57.124 -61.3252 50.6006c-8.00098 14.6113 -33.9785 24.1514 -53.625 12.9248c-18.2246 19.3652 -46.3809 17.7871 -61.0498 4.9502v91.0254zM352 24c-13.2549 0 -24 -10.7451 -24 -24 +s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24z" /> +d="M433.941 382.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-80v-48c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h80v48c0 26.5098 21.4902 48 48 48 +h172.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM266 -16c3.31152 0 6 2.68848 6 6v42h-96c-26.5098 0 -48 21.4902 -48 48v224h-74c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM394 80c3.31152 0 6 2.68848 6 6v202h-88 +c-13.2549 0 -24 10.7451 -24 24v88h-106c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM400 336v9.63184c0 1.65527 -0.670898 3.15723 -1.75684 4.24316l-48.3682 48.3682c-1.12598 1.125 -2.65234 1.75684 -4.24316 1.75684h-9.63184v-64h64z" /> +d="M433.941 318.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM272 368h-128v-80h128v80z +M394 16c3.31152 0 6 2.68848 6 6v259.632c0 1.65527 -0.670898 3.15723 -1.75684 4.24316l-78.2432 78.2432v-100.118c0 -13.2549 -10.7451 -24 -24 -24h-176c-13.2549 0 -24 10.7451 -24 24v104h-42c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340z +M224 216c48.5234 0 88 -39.4766 88 -88s-39.4766 -88 -88 -88s-88 39.4766 -88 88s39.4766 88 88 88zM224 88c22.0557 0 40 17.9443 40 40s-17.9443 40 -40 40s-40 -17.9443 -40 -40s17.9443 -40 40 -40z" /> @@ -241,13 +237,13 @@ c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0683594l22.5361 -22.7178c4.66699 -4. +c-13.7021 -5.33105 -26.3955 -11.5371 -38.0498 -18.585c-1.82715 -1.11523 -3.98633 -1.76953 -6.28027 -1.77734h-86.1006c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340c3.31152 0 6 2.68848 6 6v25.9658c0 5.37012 3.5791 10.0596 8.74023 11.541z +" /> +M363.351 93.0645c-9.61328 -9.71289 -45.5293 -41.3965 -104.064 -41.3965c-82.4297 0 -140.484 61.4248 -140.484 141.567c0 79.1514 60.2754 139.4 139.763 139.4c55.5303 0 88.7373 -26.6201 97.5928 -34.7783c2.37793 -2.1875 3.86914 -5.3252 3.86914 -8.80762 +c0 -2.39746 -0.717773 -4.64258 -1.93359 -6.51465l-18.1543 -28.1133c-3.8418 -5.9502 -11.9668 -7.28223 -17.499 -2.9209c-8.5957 6.77637 -31.8145 22.5381 -61.708 22.5381c-48.3037 0 -77.916 -35.3301 -77.916 -80.082c0 -41.5889 26.8877 -83.6924 78.2764 -83.6924 +c32.6572 0 56.8428 19.0391 65.7266 27.2256c5.26953 4.85645 13.5957 4.03906 17.8193 -1.73828l19.8652 -27.1699c1.45996 -1.98145 2.32422 -4.42969 2.32422 -7.07715c0 -3.28809 -1.32422 -6.2793 -3.47656 -8.44043z" /> +c0 34.4023 -52 33.7744 -52 0.676758v-116.571c0 -8.83105 -7.17773 -15.9961 -16.0078 -15.9961c-4.0166 0 -7.68848 1.48242 -10.499 3.92969l-7 6.09473c-3.37012 2.93457 -5.49316 7.25293 -5.49316 12.0674v41.2275c0 34.2148 -52 33.8857 -52 0.677734v-56.9531 +c0 -18.8555 8.27441 -36.874 22.7002 -49.4365l97.71 -85.0801c12.4502 -10.8398 19.5898 -26.4463 19.5898 -42.8164v-10.2861h220v7.07617c0 13.21 2.65332 26.0791 7.88281 38.25l42.835 99.6553c3.37891 7.82715 5.28223 16.501 5.28223 25.5625v0.0498047z" /> +c-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.084 -12.2725 60.4111 -32.8291zM528 16v76.1709c0 0.0166016 -0.0439453 0.106445 -0.0439453 0.12207c0 14.3945 -4.24219 27.8057 -11.5439 39.0498l-146.358 225.715 +c-4.44336 6.85254 -11.9707 10.9424 -20.1367 10.9424h-293.917c-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709 +c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8h131.552c0.0175781 0 0.0712891 -0.0273438 0.0888672 -0.0273438c9.16992 0 17.9404 -1.72461 26.0039 -4.86621l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z" /> +d="M501.03 331.824c6.92773 -11.1826 10.9697 -24.4053 10.9697 -38.5146c0 -5.92676 -0.706055 -11.6885 -2.03809 -17.208l-57.623 -241.963c-13.2236 -56.1904 -63.707 -98.1387 -123.908 -98.1387h-0.352539h-107.455 +c-0.0761719 0 -0.193359 0.00195312 -0.270508 0.00195312c-40.9248 0 -78.1475 15.9814 -105.761 42.0391l-91.3652 85.9766c-14.3076 13.4434 -23.2246 32.5547 -23.2246 53.7168c0 19.5254 7.61035 37.2861 20.0254 50.4766 +c5.31836 5.66406 29.875 29.3926 68.1152 21.8477l-24.3594 82.1973c-1.97363 6.64844 -2.97656 13.6836 -2.97656 20.9688c0 38.6953 29.8926 70.4639 67.8262 73.4531c-0.246094 2.45117 -0.34082 4.85547 -0.34082 7.37207c0 34.4199 23.585 63.376 55.4619 71.5752 +c43.248 10.9785 80.5645 -17.7012 89.6602 -53.0723l13.6836 -53.207l4.64648 22.6602c6.99023 33.5186 36.6826 58.8037 72.2373 58.916c8.73438 0 56.625 -3.26953 70.7383 -54.0801c15.0664 0.710938 46.9199 -3.50977 66.3105 -35.0176zM463.271 287.219 +c7.86914 32.9844 -42.1211 45.2695 -50.0859 11.9219l-24.8008 -104.146c-4.38867 -18.4141 -31.7783 -11.8926 -28.0557 6.2168l28.5479 139.166c7.39844 36.0703 -43.3076 45.0703 -50.1182 11.9629l-31.791 -154.971 +c-3.54883 -17.3086 -28.2832 -18.0469 -32.7109 -0.804688l-47.3262 184.035c-8.43359 32.8105 -58.3691 20.2676 -49.8652 -12.8359l42.4414 -165.039c4.81641 -18.7207 -23.3711 -26.9121 -28.9648 -8.00781l-31.3438 105.779 +c-9.6875 32.6465 -59.1191 18.2578 -49.3867 -14.625l36.0137 -121.539c6.59375 -22.2441 10.1777 -45.7803 10.1777 -70.1523c0 -6.54297 -8.05664 -10.9355 -13.4824 -5.82617l-51.123 48.1074c-24.7852 23.4082 -60.0527 -14.1875 -35.2793 -37.4902l91.3691 -85.9805 +c19.0469 -17.9736 44.75 -28.998 72.9795 -28.998h0.157227h107.455c0.0732422 0 0.138672 0.0429688 0.212891 0.0429688c37.5791 0 69.1016 26.1416 77.3564 61.2168z" /> +d="M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -5.24023 -0.600586 -10.3037 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286 +c-21.2588 0 -41.3682 10.4102 -53.791 27.8457l-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338 +c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289c27.1934 12.8467 60.3799 5.66992 79.8721 -19.0986zM80.9854 168.303c-14.4004 20.2119 -43.8008 -2.38281 -29.3945 -22.6055l109.712 -154c3.43457 -4.81934 8.92871 -7.69727 14.6973 -7.69727h178.285 +c8.49219 0 15.8037 5.99414 17.7822 14.5762l27.4297 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285v84c0 25.1602 -36.5713 25.1211 -36.5713 0c0 -8.83594 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16406 -16 16v21 +c0 25.1602 -36.5713 25.1201 -36.5713 0v-21c0 -8.83594 -7.16309 -16 -16 -16h-6.85938c-8.83691 0 -16 7.16406 -16 16v35c0 25.1602 -36.5703 25.1201 -36.5703 0v-35c0 -8.83594 -7.16309 -16 -16 -16h-6.85742c-8.83691 0 -16 7.16406 -16 16v175 +c0 25.1602 -36.5713 25.1201 -36.5713 0v-241.493c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832zM176.143 48v96c0 8.83691 6.26855 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM251.571 48v96 +c0 8.83691 6.26758 16 14 16h6c7.73145 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26855 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM327 48v96c0 8.83691 6.26758 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6 +c-7.73242 0 -14 7.16309 -14 16z" /> +M366.442 73.791c4.40332 -7.99219 -1.37012 -17.791 -10.5107 -17.791h-42.8096c-0.00488281 0 -0.000976562 -0.0126953 -0.00585938 -0.0126953c-4.58594 0 -8.57422 2.58301 -10.5869 6.37305l-47.5156 89.3027h-31.958v-83.6631c0 -6.61719 -5.38281 -12 -12 -12 +h-38.5674c-6.61719 0 -12 5.38281 -12 12v248.304c0 6.61719 5.38281 12 12 12h78.667c71.251 0 101.498 -32.749 101.498 -85.252c0 -31.6123 -15.2148 -59.2969 -39.4824 -73.1758c3.02148 -4.61719 0.225586 0.199219 53.2715 -96.085zM256.933 208.094 +c20.9131 0 32.4307 11.5186 32.4316 32.4316c0 19.5752 -6.5127 31.709 -38.9297 31.709h-27.377v-64.1406h33.875z" /> +d="M268 32c-6.62305 0 -12 5.37695 -12 12v216c0 6.62305 5.37695 12 12 12h24c6.62305 0 12 -5.37695 12 -12v-216c0 -6.62305 -5.37695 -12 -12 -12h-24zM432 368c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-16v-336 +c0 -26.4922 -21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48v336h-16c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h82.4102l34.0195 56.7002c8.39258 13.9844 23.6777 23.2998 41.1602 23.2998h100.82 +c0.0078125 0 -0.015625 0.0517578 -0.0078125 0.0517578c17.4824 0 32.7949 -9.36719 41.1875 -23.3516l34 -56.7002h82.4102zM171.84 397.09l-17.4502 -29.0898h139.221l-17.46 29.0898c-1.0498 1.74707 -2.95898 2.91016 -5.14355 2.91016h-0.00683594h-94 +c-0.00585938 0 -0.00683594 0.00683594 -0.0126953 0.00683594c-2.18457 0 -4.09766 -1.16992 -5.14746 -2.91699zM368 -16v336h-288v-336h288zM156 32c-6.62305 0 -12 5.37695 -12 12v216c0 6.62305 5.37695 12 12 12h24c6.62305 0 12 -5.37695 12 -12v-216 +c0 -6.62305 -5.37695 -12 -12 -12h-24z" /> - -Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 +Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020 By Robert Madole Copyright (c) Font Awesome - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +d="M470.38 446.49c3.03613 0.957031 6.26953 1.47949 9.62012 1.47949c17.6514 0 31.9834 -14.3223 32 -31.9697v-352c0 -35.3496 -43 -64 -96 -64s-96 28.6602 -96 64s43 64 96 64c11.0361 -0.0605469 21.7158 -1.4248 32 -3.92969v184.609l-256 -75v-233.68 +c0 -35.3398 -43 -64 -96 -64s-96 28.6602 -96 64s43 64 96 64c11.0352 -0.0625 21.7139 -1.42285 32 -3.91992v261.41c0.00878906 14.3125 9.43359 26.4336 22.4102 30.5098z" /> +d="M280.37 299.74c2.09082 1.68555 4.76562 2.69434 7.6582 2.69434s5.55078 -1.00879 7.6416 -2.69434l184.33 -151.74v-164c0 -8.83105 -7.16895 -16 -16 -16l-112.02 0.30957c-8.83105 0 -16.001 7.16895 -16.001 15.999c0 0.0175781 0 0.0341797 0.000976562 0.0517578 +v95.6396c0 8.83105 -7.16992 16 -16 16h-64c-8.83105 0 -16 -7.16895 -16 -16v-95.71c0 -8.80371 -7.12695 -15.9561 -15.9209 -16l-112.06 -0.290039c-8.83105 0 -16 7.16895 -16 16v163.89zM571.6 196.53c2.70703 -2.20117 4.42578 -5.56152 4.42578 -9.31836 +c0 -2.88867 -1.02246 -5.54004 -2.72559 -7.6123l-25.5 -31c-2.20117 -2.66309 -5.53418 -4.35059 -9.25684 -4.35059c-2.90332 0 -5.56641 1.0332 -7.64258 2.75098l-235.23 193.74c-2.09082 1.68555 -4.7666 2.69434 -7.6582 2.69434 +c-2.89258 0 -5.55078 -1.00879 -7.6416 -2.69434l-235.22 -193.74c-2.0752 -1.71387 -4.73926 -2.75586 -7.63867 -2.75586c-3.73242 0 -7.07031 1.70898 -9.27148 4.38574l-25.5 31c-1.71875 2.07617 -2.7627 4.74414 -2.7627 7.64648 +c0 3.72266 1.69824 7.05176 4.3623 9.25391l253.13 208.47c8.29102 6.82227 18.9668 10.9209 30.5312 10.9209s22.1787 -4.09863 30.4688 -10.9209l89.5303 -73.6602v72.6104c0 6.62305 5.37695 12 12 12h56c6.62305 0 12 -5.37695 12 -12v-138.51z" /> +d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM348.49 127c2.19531 2.73926 3.52637 6.21973 3.52637 10c0 5.05566 -2.35059 9.56738 -6.0166 12.5l-58 42.5v144c0 8.83105 -7.16895 16 -16 16h-32 +c-8.83105 0 -16 -7.16895 -16 -16v-155.55c0 -12.6338 5.8418 -23.8975 15 -31.2305l67 -49.7197v0c2.7373 -2.19043 6.21387 -3.51758 9.98926 -3.51758c5.05566 0 9.56738 2.35059 12.501 6.01758l20 25v0z" /> +c-0.00195312 0 -0.00390625 -0.0078125 -0.00488281 -0.0078125c-4.12891 0 -7.53125 -3.13477 -7.95508 -7.15234zM315.64 144c9.5 0 16.9102 8.23047 15.9102 17.6797l-5.06934 48c-0.860352 8.14062 -7.7207 14.3203 -15.9102 14.3203h-45.1504 +c-8.18945 0 -15.0498 -6.17969 -15.9102 -14.3203l-5.06934 -48c-1 -9.44922 6.40918 -17.6797 15.9092 -17.6797h55.29z" /> +d="M567.938 204.092c5.07422 -7.61035 8.06152 -16.7998 8.06152 -26.625v-129.467c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v129.467c0 9.8252 2.9873 19.0146 8.06152 26.625l105.689 158.534c8.60742 12.9102 23.2725 21.374 39.9385 21.374 +h268.621c16.667 0 31.332 -8.46387 39.9395 -21.374zM162.252 320l-85.334 -128h123.082l32 -64h112l32 64h123.082l-85.333 128h-251.497z" /> +d="M500.33 448c6.62305 0 12 -5.37695 12 -12v-200.34c0 -6.62305 -5.37695 -12 -12 -12h-200.33c-6.62305 0 -12 5.37695 -12 12v47.4102c0 0.00390625 -0.00878906 0.00878906 -0.00878906 0.0136719c0 6.62305 5.37695 12 12 12 +c0.194336 0 0.386719 -0.00488281 0.579102 -0.0136719l101.529 -4.87012c-31.6084 47.0322 -85.1172 77.8594 -145.992 77.8594c-97.1367 0 -176 -78.8633 -176 -176s78.8633 -176 176 -176c44.502 0 85.168 16.5518 116.173 43.8301 +c2.10938 1.84375 4.87793 2.96582 7.89746 2.96582c3.31055 0 6.31055 -1.34375 8.48242 -3.51562l34 -34c2.17383 -2.17188 3.52246 -5.17285 3.52246 -8.48633c0 -3.55176 -1.54688 -6.74512 -4.00293 -8.94336c-43.8477 -39.6924 -102.079 -63.9102 -165.824 -63.9102 +h-0.355469c-136.9 0 -247.9 110.93 -248 247.81c-0.0996094 136.66 111.34 248.19 248 248.19c0.0927734 0 0.116211 0.140625 0.208984 0.140625c75.5918 0 143.312 -33.9727 188.711 -87.4707l-4 82.7598c-0.00878906 0.192383 -0.0136719 0.375977 -0.0136719 0.570312 +c0 6.62305 5.37695 12 12 12h0.0136719h47.4102z" /> +d="M440.65 435.43c-0.00976562 0.192383 -0.0136719 0.375977 -0.0136719 0.570312c0 6.62109 5.37305 11.9961 11.9932 12h47.3701c6.62305 0 12 -5.37695 12 -12v-200.35c0 -6.62305 -5.37695 -12 -12 -12h-200.22c-6.62305 0 -12 5.37695 -12 12v47.4092 +c0 0.00488281 -0.00878906 0.00976562 -0.00878906 0.0136719c0 6.62305 5.37695 12 12 12c0.194336 0 0.386719 -0.00390625 0.578125 -0.0136719l101.46 -4.85938c-31.5938 46.9941 -85.1406 77.6738 -145.973 77.6738c-82.8662 0 -152.428 -57.4229 -171.027 -134.614 +c-1.24219 -5.29688 -5.99707 -9.25391 -11.6699 -9.25977h-49.0498c-6.62305 0 -12 5.36719 -12 11.9893c0 0.748047 0.0693359 1.48047 0.200195 2.19043c21.6201 114.9 122.44 201.82 243.54 201.82c0.0966797 0 0.123047 0.141602 0.219727 0.141602 +c75.5615 0 143.248 -33.9814 188.601 -87.4814zM255.83 16c0.015625 0 0.0185547 0.0898438 0.0332031 0.0898438c82.8701 0 152.43 57.4434 170.997 134.65c1.24219 5.29688 5.99707 9.25391 11.6699 9.25977h49.0498c6.62305 0 12 -5.36719 12 -11.9893 +c0 -0.748047 -0.0693359 -1.48047 -0.200195 -2.19043c-21.6201 -114.9 -122.439 -201.82 -243.55 -201.82c-0.0800781 0 -0.0908203 -0.140625 -0.170898 -0.140625c-75.4814 0 -143.106 33.9082 -188.459 87.3105l4.14941 -82.5703 +c0.0107422 -0.201172 0.015625 -0.395508 0.015625 -0.599609c0 -6.62305 -5.37695 -12 -12 -12h-0.015625h-47.3496c-6.62305 0 -12 5.37695 -12 12v200.33c0 6.62305 5.37695 12 12 12h200.2c6.62305 0 12 -5.37695 12 -12v-47.4004 +c0 -0.00390625 0.0078125 -0.00878906 0.0078125 -0.0136719c0 -6.62305 -5.37695 -12 -12 -12c-0.193359 0 -0.386719 0.00488281 -0.578125 0.0136719l-101.8 4.87012c31.5254 -47.0088 85.0449 -77.7998 145.847 -77.7998h0.15332z" /> +c-60.5791 0 -109.917 48.0967 -111.928 108.187l-14.3828 7.19141c-10.502 5.25098 -17.6895 16.0908 -17.6895 28.6221v48c0 141.504 114.52 256 256 256z" /> +d="M215 377c15 15 41 4.46973 41 -17v-336c0 -21.4697 -26 -32 -41 -17l-88.9404 89h-102.06c-13.2461 0 -24 10.7539 -24 24v144c0 13.2461 10.7539 24 24 24h102z" /> +d="M0 195.882v204.118c0 26.5098 21.4902 48 48 48h204.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-211.883 211.883 +c-8.68848 8.68848 -14.0586 20.6943 -14.0586 33.9404zM112 384c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48z" /> +d="M497.941 222.059c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7461 -18.7451 -49.1387 -18.7441 -67.8818 0l-211.883 211.883c-8.68848 8.68848 -14.0586 20.6943 -14.0586 33.9404v204.118c0 26.5098 21.4902 48 48 48h204.118 +c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM112 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM625.941 154.177l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-0.360352 0.360352 +l174.059 174.059c16.999 16.999 26.3604 39.6006 26.3604 63.6406s-9.3623 46.6406 -26.3604 63.6396l-196.242 196.242h48.7207c13.2461 0 25.252 -5.37012 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818z" /> d="M512 304v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h88l12.2998 32.9004c7 18.6992 24.9004 31.0996 44.9004 31.0996h125.5c20 0 37.8994 -12.4004 44.8994 -31.0996l12.4004 -32.9004h88c26.5 0 48 -21.5 48 -48zM376 160 c0 66.2002 -53.7998 120 -120 120s-120 -53.7998 -120 -120s53.7998 -120 120 -120s120 53.7998 120 120zM344 160c0 -48.5 -39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88z" /> +d="M333.49 210c34.4395 -27.54 55.5693 -71.1504 50.8301 -119.6c-6.86035 -70.6504 -70.2002 -122.4 -141 -122.4h-209.32c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h31.8701v288h-31.8701c-8.83105 0 -16 7.16895 -16 16v48 +c0 8.83105 7.16895 16 16 16h199.42c74.5801 0 134.45 -64.4902 127.07 -140.79c-2.43945 -24.5273 -12.1992 -47.1309 -27 -65.21zM145.66 336v-96h87.7598c26.4922 0 48 21.5078 48 48s-21.5078 48 -48 48h-87.7598zM233.42 48c30.9072 0 56 25.0928 56 56 +s-25.0928 56 -56 56h-87.7598v-112h87.7598z" /> +d="M320 400v-32c0 -8.83105 -7.16895 -16 -16 -16h-62.7598l-80 -320h46.7598c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h62.7598l80 320h-46.7598 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192c8.83105 0 16 -7.16895 16 -16z" /> +d="M432 416c8.83105 0 16 -7.16895 16 -16v-80c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v16h-120v-112h24c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h24v112h-120v-16c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v80c0 8.83105 7.16895 16 16 16h416zM363.31 155.31l80 -80c2.89453 -2.89551 4.68555 -6.89844 4.68555 -11.3115 +c0 -4.41406 -1.79102 -8.41211 -4.68555 -11.3076l-80 -80c-10 -10.0205 -27.3096 -3 -27.3096 11.3096v48h-224v-48c0 -15.6396 -18 -20.6396 -27.3096 -11.3096l-80 80c-2.89453 2.89551 -4.68555 6.89844 -4.68555 11.3115c0 4.41406 1.79102 8.41211 4.68555 11.3076 +l80 80c10 10.0107 27.3096 3 27.3096 -11.3096v-48h224v48c0 15.6396 18 20.6396 27.3096 11.3096z" /> +d="M12.8301 96c-7.07617 0 -12.8301 5.74414 -12.8301 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34h0.00976562c7.07617 0 12.8203 -5.74414 12.8203 -12.8193v-0.0107422v-38.3398v-0.00976562 +c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34zM12.8301 352c-7.07617 0 -12.8301 5.74414 -12.8301 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34h0.00976562 +c7.07617 0 12.8203 -5.74414 12.8203 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34zM432 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h416zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" /> +d="M432 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16 +v32c0 8.83105 7.16895 16 16 16h416zM108.1 352c-6.67773 0 -12.0996 5.42188 -12.0996 12.0996v39.8105c0 6.67285 5.41699 12.0898 12.0898 12.0898h0.00976562h231.811c6.67285 0 12.0898 -5.41699 12.0898 -12.0898v-39.8105v-0.00976562 +c0 -6.67285 -5.41699 -12.0898 -12.0898 -12.0898h-231.811zM339.91 96h-231.811c-6.67773 0 -12.0996 5.42188 -12.0996 12.0996v39.8105c0 6.67285 5.41699 12.0898 12.0898 12.0898h0.00976562h231.811c6.67285 0 12.0898 -5.41699 12.0898 -12.0898v-39.8105 +v-0.00976562c0 -6.67285 -5.41699 -12.0898 -12.0898 -12.0898z" /> +d="M16 224c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16 +v32c0 8.83105 7.16895 16 16 16h416zM435.17 416c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193 +v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34zM435.17 160c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-262.34h-0.00976562 +c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h262.34z" /> +d="M432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM432 160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16 +v32c0 8.83105 7.16895 16 16 16h416zM432 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16 +h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" /> +d="M80 80c8.83105 0 16 -7.16895 16 -16v-64c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v64c0 8.83105 7.16895 16 16 16h64zM80 400c8.83105 0 16 -7.16895 16 -16v-64c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v64 +c0 8.83105 7.16895 16 16 16h64zM80 240c8.83105 0 16 -7.16895 16 -16v-64c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v64c0 8.83105 7.16895 16 16 16h64zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 384c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 224c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320z" /> +d="M100.69 84.71l-96 95.9805c-2.89453 2.89551 -4.68555 6.89844 -4.68555 11.3115c0 4.41406 1.79102 8.41211 4.68555 11.3076l96 96c9.97949 10 27.3096 3.01074 27.3096 -11.3096v-191.98c0 -14.2393 -17.3096 -21.3096 -27.3096 -11.3096zM432 32 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM435.17 160c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562 +c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM435.17 288 +c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562 +c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" /> +d="M27.3096 84.7002c-9.97949 -10 -27.3096 -3.00977 -27.3096 11.2998v192c0 14.2197 17.2695 21.3398 27.3096 11.3203l96 -96c2.89453 -2.89648 4.68555 -6.89941 4.68555 -11.3125s-1.79102 -8.41211 -4.68555 -11.3076zM432 32c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416zM435.17 160c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422 +h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM435.17 288c7.07617 0 12.8301 -5.74414 12.8301 -12.8193v-0.0107422v-38.3398v-0.00976562 +c0 -7.07617 -5.74414 -12.8203 -12.8193 -12.8203h-0.0107422h-230.34h-0.00976562c-7.07617 0 -12.8203 5.74414 -12.8203 12.8193v0.0107422v38.3398v0.00976562c0 7.07617 5.74414 12.8203 12.8193 12.8203h0.0107422h230.34zM432 416c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" /> @@ -375,18 +674,18 @@ c63.4004 0 118.9 33.5996 149.9 87.5c6.69922 11.7998 22.6992 11.2998 28.2998 -1.2 d="M216 424.14c0 -103.14 168 -125.85 168 -296.14c0 -105.87 -86.1299 -192 -192 -192s-192 86.1299 -192 192c0 58.6699 27.7998 106.84 54.5703 134.96c14.96 15.7305 41.4297 5.2002 41.4297 -16.5v-85.5098c0 -35.1699 27.9805 -64.4902 63.1504 -64.9404 c35.7393 -0.469727 64.8496 28.3604 64.8496 63.9902c0 88 -176 96.1504 -52.1504 277.18c13.5 19.7305 44.1504 10.7607 44.1504 -13.04z" /> +d="M572.52 206.6c2.21387 -4.37793 3.46094 -9.38965 3.46094 -14.626c0 -5.2373 -1.24707 -10.1855 -3.46094 -14.5635c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626 +c0 5.2373 1.24707 10.1855 3.46094 14.5635c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48c0.0234375 0 0.0458984 -0.000976562 0.0703125 -0.000976562c79.4365 0 143.93 64.4922 143.93 143.93v0.0712891 +c0 79.4756 -64.5244 144 -144 144s-144 -64.5244 -144 -144s64.5244 -144 144 -144zM288 288c0.0761719 0 0.160156 -0.0273438 0.237305 -0.0273438c52.8623 0 95.7803 -42.917 95.7803 -95.7793s-42.918 -95.7803 -95.7803 -95.7803s-95.7803 42.918 -95.7803 95.7803 +c0 8.68945 1.16016 17.1104 3.33301 25.1162c7.93164 -5.83594 17.7432 -9.26758 28.3359 -9.26758c26.4092 0 47.8496 21.4404 47.8496 47.8496c0 10.5938 -3.44922 20.3867 -9.28516 28.3184c8.0459 2.34277 16.541 3.66797 25.3096 3.79004z" /> +d="M320 48c8.91309 0.0830078 17.542 0.976562 26 2.61035l51.8896 -40.1504c-25.0195 -6.45996 -50.9795 -10.46 -77.8896 -10.46c-122.93 0 -230.29 71.5898 -284.52 177.4c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635 +c10.2393 20 22.9297 38.29 36.7197 55.5898l104.899 -81.0693c5.65039 -74.4004 67.0508 -133.11 142.9 -133.11zM633.82 -10.0996c3.76855 -2.92871 6.17676 -7.50977 6.17676 -12.6475c0 -3.69238 -1.25293 -7.09375 -3.35742 -9.80273l-19.6396 -25.2705 +c-2.92871 -3.76855 -7.50879 -6.17578 -12.6465 -6.17578c-3.69727 0 -7.10254 1.25684 -9.81348 3.36621l-588.36 454.729c-3.76562 2.92871 -6.1709 7.50781 -6.1709 12.6426c0 3.69434 1.25488 7.09863 3.36133 9.80762l19.6299 25.2705 +c2.92871 3.76855 7.50879 6.17578 12.6465 6.17578c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l127.22 -98.3301c43.6846 23.8564 94.0967 37.6357 147.32 37.7002c122.93 0 230.29 -71.5898 284.52 -177.4c2.21387 -4.37793 3.46094 -9.38965 3.46094 -14.626 +c0 -5.2373 -1.24707 -10.1855 -3.46094 -14.5635c-20.2109 -39.3887 -47.6904 -73.7881 -81.25 -102.07zM450.1 131.9c8.61035 18.3203 13.9004 38.4697 13.9004 60.0996c0 0.0273438 0.00195312 0.0527344 0.00195312 0.0800781c0 79.4316 -64.4883 143.92 -143.92 143.92 +h-0.0820312c-34.6328 -0.0253906 -66.4756 -12.4902 -91.1504 -33.1104l73.6104 -56.8896c0.857422 3.20508 1.38867 6.5625 1.54004 10c-0.0185547 10.5391 -3.49023 20.3242 -9.30957 28.21c8.43164 2.46191 17.3359 3.82031 26.5576 3.82031 +c52.2998 0 94.7607 -42.46 94.7607 -94.7598c0 -0.423828 -0.00292969 -0.847656 -0.00878906 -1.27051c-0.138672 -10.377 -1.97559 -20.4014 -5.2002 -29.7197z" /> +l43.2002 -57.5996h102.86l-49.0303 171.61c-2.91992 10.2197 4.75 20.3896 15.3799 20.3896h65.5c5.95117 0 11.1396 -3.23633 13.9004 -8.05957l105.1 -183.94h114.29z" /> +d="M504.971 88.9707c9.37305 -9.37305 9.37305 -24.5684 0 -33.9404l-80 -79.9844c-15.0098 -15.0098 -40.9707 -4.49023 -40.9707 16.9707v39.9834h-58.7852c-3.46094 0 -6.58105 1.46484 -8.77246 3.81152l-70.5566 75.5967l53.333 57.1426l52.7812 -56.5508h32v39.9814 +c0 21.4375 25.9434 31.9971 40.9707 16.9707zM12 272c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h110.785c3.46094 0 6.58203 -1.46484 8.77246 -3.81152l70.5566 -75.5967l-53.333 -57.1426l-52.7812 56.5508h-84zM384 272h-32l-220.442 -236.188 +c-2.26953 -2.43066 -5.44629 -3.81152 -8.77246 -3.81152h-110.785c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h84l220.442 236.188c2.19141 2.34668 5.31152 3.81152 8.77246 3.81152h58.7852v39.9814c0 21.4365 25.9434 31.9971 40.9707 16.9697 +l80 -79.9814c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-80 -79.9844c-15.0098 -15.0088 -40.9707 -4.48926 -40.9707 16.9707v39.9844z" /> +d="M164.07 299.9h-152.07c-6.62305 0 -12 5.37695 -12 12v80c0 19.8682 16.1309 36 36 36h104c19.8691 0 36 -16.1318 36 -36v-80c0 -0.0380859 0.000976562 -0.0751953 0.000976562 -0.112305c0 -6.5625 -5.32812 -11.8906 -11.8906 -11.8906 +c-0.0136719 0 -0.0263672 0.00292969 -0.0400391 0.00292969zM512 311.9c0 -0.00390625 0.00195312 -0.0078125 0.00195312 -0.0107422c0 -6.5625 -5.32715 -11.8906 -11.8896 -11.8906c-0.0380859 0 -0.0751953 0.000976562 -0.112305 0.000976562h-152 +c-6.62305 0 -12 5.37695 -12 12v80c0 19.8691 16.1309 36 36 36h104c19.8691 0 36 -16.1309 36 -36v-80.0996zM348 267.9h151.85c6.62305 0 12.001 -5.37598 12.001 -11.998c0 -0.0341797 0 -0.0683594 -0.000976562 -0.102539 +c-0.199219 -20.2002 -0.599609 -40.3994 0 -53.2002c0 -150.699 -134.42 -246.699 -255 -246.699s-256.75 96 -256.75 246.6c0.600586 13 0.100586 31.9004 0 53.2998v0.100586c0 6.62305 5.37695 12 12 12h151.9c6.62305 0 12 -5.37695 12 -12v-52 +c0 -127.9 160 -128.101 160 0v52c0 6.62305 5.37695 12 12 12z" /> @@ -422,10 +722,10 @@ d="M207.029 66.5244l-194.344 194.344c-9.37207 9.37305 -9.37207 24.5684 0 33.9404 c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-194.343 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9414 0z" /> +l-40.416 42.792v-182.119h187.548c6.62305 0 12.627 -2.68457 16.9707 -7.0293z" /> +d="M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM94 32c160.055 0 290 129.708 290 290c0 7.11621 -4.97559 13.0801 -11.6279 14.6143l-65 14.998 +c-1.08691 0.250977 -2.20312 0.394531 -3.36621 0.394531c-6.18457 0 -11.501 -3.75195 -13.7939 -9.10156l-30 -69.998c-0.775391 -1.81055 -1.22266 -3.81055 -1.22266 -5.90332c0 -4.68066 2.14844 -8.86328 5.51172 -11.6152l37.8857 -30.9971 +c-22.4834 -47.9219 -61.8369 -87.8164 -110.78 -110.779l-30.9971 37.8848c-2.75195 3.36328 -6.94043 5.49414 -11.6211 5.49414c-2.09277 0 -4.08691 -0.429688 -5.89746 -1.20508l-69.998 -29.999c-5.34961 -2.29297 -9.08984 -7.59375 -9.08984 -13.7783 +c0 -1.16309 0.131836 -2.29492 0.382812 -3.38184l14.998 -65c1.55957 -6.75391 7.58301 -11.627 14.6162 -11.627z" /> @@ -512,11 +812,11 @@ c-8.41406 0 -15.4707 6.49023 -16.0176 14.8867c-7.29883 112.07 -96.9404 201.488 - M447.99 -15.4971c0.324219 -9.03027 -6.97168 -16.5029 -16.0049 -16.5039h-48.0684c-8.62598 0 -15.6455 6.83496 -15.999 15.4531c-7.83789 191.148 -161.286 344.626 -352.465 352.465c-8.61816 0.354492 -15.4531 7.37402 -15.4531 15.999v48.0684 c0 9.03418 7.47266 16.3301 16.5029 16.0059c234.962 -8.43555 423.093 -197.667 431.487 -431.487z" /> +d="M576 144v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48zM528 224h-480c-0.0234375 0 -0.0996094 -0.0361328 -0.124023 -0.0361328 +c-10.8613 0 -21.2168 -2.18066 -30.6533 -6.12891l96.5283 144.791c8.60742 12.9102 23.2725 21.374 39.9385 21.374h268.621c16.667 0 31.332 -8.46387 39.9395 -21.374l96.5273 -144.791c-9.43652 3.94824 -19.8447 6.16504 -30.7061 6.16504h-0.0712891zM480 128 +c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32s-14.3271 32 -32 32zM384 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32s-14.3271 32 -32 32z" /> @@ -572,13 +872,14 @@ d="M507.73 338.9c11.7891 -47.4102 -0.84082 -99.6602 -37.9102 -136.73c-39.9004 -3 c-16.5 50.1006 -5.58984 107.561 34.0498 147.2c37.0303 37.0195 89.2002 49.6699 136.58 37.9297c9.08984 -2.25977 12.2803 -13.54 5.66016 -20.1602l-74.3604 -74.3594l11.3105 -67.8799l67.8799 -11.3105l74.3604 74.3604 c6.58008 6.58008 17.8799 3.51953 20.1201 -5.50977zM64 -24c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z" /> +d="M139.61 412.5l17 -16.5c2.13281 -2.18066 3.44922 -5.16797 3.44922 -8.45605c0 -3.33496 -1.35352 -6.35547 -3.54004 -8.54395l-72.1992 -72.1904l-15.5898 -15.6191c-2.29297 -2.17969 -5.39941 -3.51758 -8.80859 -3.51758 +c-3.41016 0 -6.50977 1.33789 -8.80176 3.51758l-47.5898 47.3994c-2.18066 2.17383 -3.53125 5.18262 -3.53125 8.50195c0 3.31836 1.35059 6.3252 3.53125 8.49805l15.7002 15.7197c2.17285 2.18164 5.18164 3.53125 8.50098 3.53125s6.3252 -1.34961 8.49902 -3.53125 +l22.6992 -22.1191l63.6807 63.3096c2.17285 2.18066 5.18262 3.53125 8.50098 3.53125c3.31934 0 6.3252 -1.35059 8.49902 -3.53125zM139.61 253.31l16.9795 -17c2.125 -2.16504 3.43652 -5.13574 3.43652 -8.40625c0 -3.31641 -1.34863 -6.32031 -3.52637 -8.49316 +l-72.2002 -72.2197l-15.7002 -15.6904c-2.29004 -2.17871 -5.39551 -3.5166 -8.80273 -3.5166c-3.4082 0 -6.50586 1.33789 -8.79688 3.5166l-47.4697 47.5c-2.18066 2.17285 -3.53125 5.18262 -3.53125 8.50195c0 3.31836 1.35059 6.3252 3.53125 8.49805l15.7002 15.6904 +c2.17285 2.18066 5.18164 3.53125 8.50098 3.53125s6.3252 -1.35059 8.49902 -3.53125l22.6992 -22.1006l63.6807 63.7197c2.17285 2.18164 5.18262 3.53125 8.50098 3.53125c3.31934 0 6.3252 -1.34961 8.49902 -3.53125zM64 80c26.4922 0 48 -21.5078 48 -48 +s-21.5078 -48 -48 -48c-26.4697 0 -48.5898 21.5 -48.5898 48s22.0996 48 48.5898 48zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288zM496 384 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288zM496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h288z" /> @@ -598,11 +899,11 @@ c-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004c-17.7002 0 -32 14.2998 +c-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h168v-104zM440.971 375.029c4.34473 -4.34473 7.0293 -10.3477 7.0293 -16.9707v-6.05859h-96v96h6.05859c6.62305 0 12.626 -2.68457 16.9707 -7.0293z" /> @@ -634,30 +935,30 @@ d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 - d="M16 316c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 156c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40 c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 -4c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416z" /> +d="M48 400c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48s-48 21.5078 -48 48s21.5078 48 48 48zM48 240c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48s-48 21.5078 -48 48s21.5078 48 48 48zM48 80c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48 +s-48 21.5078 -48 48s21.5078 48 48 48zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 384c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16 +h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320z" /> +c4.76758 -1.95996 10.0107 -3.07617 15.4707 -3.11914c10.1602 0 14.3594 3.5 14.3594 8.21973c0 6.64941 -5.60938 9.08984 -15.9395 9.08984h-4.73047c-5.95996 0 -9.25 2.12012 -12.25 7.87988l-1.0498 1.92969c-2.4502 4.75 -1.2002 9.81055 2.7998 14.8809l5.61035 7 +c3.47461 4.32422 7.0957 8.37695 11 12.3096h-22.8301c-4.41504 0 -8 3.58496 -8 8v16c0 4.41504 3.58496 8 8 8h57c7.5 0 11.3398 -4 11.3398 -11.3496v-3.31055c0.0136719 -0.299805 0.0175781 -0.595703 0.0175781 -0.899414 +c0 -5.10449 -1.9248 -9.76367 -5.08789 -13.29zM496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 384c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM496 64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-320c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h320zM16 288 +c-4.41504 0 -8 3.58496 -8 8v16c0 4.41504 3.58496 8 8 8h16v64h-8c-4.4082 0.0078125 -7.98145 3.59766 -7.98145 8.00781c0 1.2832 0.303711 2.49707 0.841797 3.57227l8 16c1.31055 2.62012 4.01367 4.41406 7.13965 4.41992h24c4.41504 0 8 -3.58496 8 -8v-88h16 +c4.41504 0 8 -3.58496 8 -8v-16c0 -4.41504 -3.58496 -8 -8 -8h-64zM12.0898 128c-7.00977 0 -12.0898 4 -12.0898 11.4102v4c0 47.2803 51 56.3994 50.9697 69.1201c0 7.18945 -5.9502 8.75 -9.2793 8.75c-0.0185547 0 -0.0380859 0.000976562 -0.0566406 0.000976562 +c-3.65918 0 -6.97949 -1.46582 -9.40332 -3.84082c-5.12012 -4.91016 -10.5107 -7 -16.1201 -2.44043l-8.58008 6.87988c-5.7998 4.53027 -7.16992 9.78027 -2.7998 15.3701c6.65918 8.75 19.0996 18.75 40.46 18.75c19.4697 0 44.4697 -10.5 44.4697 -39.5596 +c0 -37.7607 -45.0498 -46.1504 -48.3398 -56.4404h38.6797c4.41504 0 8 -3.58496 8 -8v-16c0 -4.41504 -3.58496 -8 -8 -8h-67.9102z" /> +d="M496 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-480c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h102.29c-11.6797 16.5303 -19.7803 35.4697 -21.7803 56.3604c-0.385742 3.97559 -0.577148 7.88281 -0.577148 11.96 +c0 68.2266 55.3633 123.624 123.577 123.68h68c50.1416 0 93.5244 -28.7686 114.521 -70.7998l0.529297 -1c1.07324 -2.14844 1.70215 -4.57715 1.70215 -7.13965c0 -6.26562 -3.61035 -11.6953 -8.86133 -14.3203l-42.9404 -21.4707 +c-2.14941 -1.07324 -4.5791 -1.70312 -7.14355 -1.70312c-6.2627 0 -11.6895 3.60645 -14.3164 8.85352c-8.18652 16.374 -25.0859 27.5801 -44.623 27.5801h-0.0371094h-66.79c-24.0352 -0.000976562 -43.5479 -19.5059 -43.5479 -43.541 +c0 -19.5742 12.9414 -36.1494 30.7285 -41.6289l87.1699 -26.8301h202.1zM315.76 128h94.3906c2.6084 -7.7373 4.44434 -15.9834 5.33984 -24.3604c0.385742 -3.97559 0.577148 -7.88281 0.577148 -11.96c0 -68.2266 -55.3633 -123.624 -123.577 -123.68h-68 +c-50.1416 0 -93.5244 28.7686 -114.521 70.7998l-0.529297 1c-1.07324 2.14844 -1.70215 4.57715 -1.70215 7.13965c0 6.26562 3.61035 11.6953 8.86133 14.3203l42.9404 21.4707c2.14941 1.07324 4.5791 1.70312 7.14355 1.70312 +c6.2627 0 11.6895 -3.60645 14.3164 -8.85352c8.18652 -16.374 25.0859 -27.5801 44.623 -27.5801h0.0371094h66.79c24.0254 0.0224609 43.5273 19.5244 43.5498 43.5498c-0.0117188 15.3828 -8.07227 28.8594 -20.2402 36.4502z" /> +d="M32 384c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h144c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32v-160c0 -44.1533 35.8467 -80 80 -80s80 35.8467 80 80v160h-32c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h144c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32v-160c0 -88.2197 -71.7803 -160 -160 -160s-160 71.7803 -160 160v160h-32zM432 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h416z" /> +M448 198.059v-6.05859h-96v96h6.05859c6.62305 0 12.626 -2.68457 16.9707 -7.0293l65.9404 -65.9404c4.34473 -4.34473 7.03027 -10.3477 7.03027 -16.9717z" /> @@ -764,7 +1065,7 @@ d="M544 224c96 -21.333 96 -26.583 96 -32s0 -10.667 -96 -32l-128 -16l-48 -16h-24l l64 8v2.66602h-48v16h-8v69.333l10.667 10.667h34.666l66.667 -80h48v164h-16v12h114.667c11.666 0 21.333 -2.625 21.333 -6s-9.66699 -6 -21.333 -6h-39.5088l116.842 -148h24l48 -16z" /> +c15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-15.8174l-108.607 -93.7861c-11.8906 -10.2637 -19.3926 -25.4307 -19.3926 -42.3564v-0.0234375c0 -0.0078125 -0.0292969 -0.00292969 -0.0292969 -0.0117188c0 -16.9268 7.53125 -32.1084 19.4229 -42.373 +l108.606 -93.7852v-15.8184c0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641z" /> +d="M496 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32 +c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-144h16zM336 384c8.83105 0 16 -7.16895 16 -16v-48c0 -8.83105 -7.16895 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83105 0 16 -7.16895 16 -16v-48 +c0 -8.83105 -7.16895 -16 -16 -16h-67c-5.41113 0.0273438 -10.1836 2.73047 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.89062 -4.16016 -7.69531 -6.87012 -13.1396 -6.87012h-67c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h33.4805l77.8096 112 +l-77.8096 112h-33.4805c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h67c5.41113 -0.0273438 10.1836 -2.73047 13.0596 -6.87012l79.9004 -115l79.9004 115c2.89062 4.16016 7.69531 6.87012 13.1396 6.87012h67z" /> +d="M496 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32 +c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-144h16zM336 384c8.83105 0 16 -7.16895 16 -16v-48c0 -8.83105 -7.16895 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83105 0 16 -7.16895 16 -16v-48 +c0 -8.83105 -7.16895 -16 -16 -16h-67c-5.41113 0.0273438 -10.1836 2.73047 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.89062 -4.16016 -7.69531 -6.87012 -13.1396 -6.87012h-67c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h33.4805l77.8096 112 +l-77.8096 112h-33.4805c-8.83105 0 -16 7.16895 -16 16v48c0 8.83105 7.16895 16 16 16h67c5.41113 -0.0273438 10.1836 -2.73047 13.0596 -6.87012l79.9004 -115l79.9004 115c2.89062 4.16016 7.69531 6.87012 13.1396 6.87012h67z" /> +c0.136719 3.79004 1.03223 7.43164 2.51562 10.7031l49.4355 98.8125c7.33008 14.6094 26.5391 26.4688 42.8867 26.4844h104.215c46.2168 72.7969 108.122 128 211.354 128c25.0996 0 50.3086 0 82.5059 -6.90625c5.54883 -1.1875 11.0176 -6.65625 12.207 -12.1875z +M384.04 280c22.0752 0.0078125 39.9971 17.9258 40.0098 40c0 22.0762 -17.9229 40 -40 40c-22.0762 0 -40 -17.9238 -40 -40c0 -22.0732 17.918 -39.9951 39.9902 -40z" /> @@ -987,12 +1288,12 @@ c2.2998 -2.30078 6.09961 -2.30078 8.5 0l23.0996 23.0996c9.2998 9.2998 9.2998 24. +c3.36816 -0.485352 6.75977 -0.711914 10.2607 -0.711914c8.3877 0 16.4424 1.44043 23.9287 4.08887c7.81348 2.76367 16.0107 -3.01465 16.0107 -11.3027v-88.8057c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48 +h121.033c12.5508 0 16.6748 -16.8301 5.54492 -22.6309c-18.7773 -9.78613 -36.0615 -22.1084 -51.0137 -37.6758c-2.18164 -2.27637 -5.25098 -3.69141 -8.64844 -3.69336h-50.916v-320h320v68.8721z" /> +M374.14 291.95c7.61035 16.6494 -9.54004 33.7998 -26.1895 26.2002l-144.34 -65.9707c-6.98438 -3.19238 -12.5781 -8.78516 -15.7705 -15.7695l-65.9795 -144.351c-7.61035 -16.6494 9.5498 -33.8096 26.1992 -26.1992l144.341 65.9697 +c6.9834 3.19238 12.5771 8.78613 15.7695 15.7695z" /> @@ -1006,8 +1307,8 @@ c-7.56055 7.56055 -20.4854 2.20605 -20.4854 -8.48438v-246.06c0 -10.6904 12.9258 d="M310.706 34.2354l8.81836 -44.4902c1.23828 -6.24902 -2.62109 -12.3623 -8.78809 -13.957c-12.5391 -3.24414 -34.8008 -7.78809 -61.1016 -7.78809c-104.371 0 -182.496 65.3076 -207.521 155.64h-30.1143c-6.62695 0 -12 5.37305 -12 12v28.3604 c0 6.62695 5.37305 12 12 12h21.3877c-1 12.958 -0.828125 28.6377 0.181641 42.2451h-21.5693c-6.62695 0 -12 5.37305 -12 12v29.7549c0 6.62695 5.37305 12 12 12h33.0752c28.9551 83.748 107.376 144 204.56 144c21.0752 0 40.582 -2.91211 52.6865 -5.20703 c6.86035 -1.30078 11.1475 -8.17578 9.32617 -14.917l-11.9912 -44.3682c-1.65527 -6.125 -7.78613 -9.89062 -14.002 -8.62305c-9.28711 1.89551 -23.3652 4.14551 -37.8516 4.14551c-54.9287 0 -96.9854 -30.0391 -117.619 -75.0303h138.278 -c7.66211 0 13.3613 -7.08203 11.7227 -14.5664l-6.51172 -29.7549c-1.13965 -5.20703 -6.3916 -9.43359 -11.7227 -9.43359v0h-146.593c-1.55176 -13.958 -1.34766 -27.917 -0.137695 -42.2451h134.237c7.68945 0 13.3936 -7.12891 11.708 -14.6309l-6.37305 -28.3604 -c-1.16211 -5.17188 -6.40723 -9.36914 -11.708 -9.36914h-113.689c19.5322 -50.6582 64.6982 -85.4482 121.462 -85.4482c18.0039 0 34.7334 2.97363 45.4258 5.41211c6.58887 1.50391 13.1094 -2.73828 14.4238 -9.36816z" /> +c7.66211 0 13.3613 -7.08203 11.7227 -14.5664l-6.51172 -29.7549c-1.17969 -5.3877 -5.9834 -9.43359 -11.7227 -9.43359h-146.593c-1.55176 -13.958 -1.34766 -27.917 -0.137695 -42.2451h134.237c7.68945 0 13.3936 -7.12891 11.708 -14.6309l-6.37305 -28.3604 +c-1.20312 -5.35547 -5.99121 -9.36914 -11.708 -9.36914h-113.689c19.5322 -50.6582 64.6982 -85.4482 121.462 -85.4482c18.0039 0 34.7334 2.97363 45.4258 5.41211c6.58887 1.50391 13.1094 -2.73828 14.4238 -9.36816z" /> +d="M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32 +c8.83105 0 16 -7.16895 16 -16v-304h48zM416 160c8.83105 0 16 -7.16895 16 -16v-17.6299c0 -9.51074 -4.14355 -18.0566 -10.7402 -23.9199l-61.2598 -70.4502h56c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16 +v17.6299c0 9.51074 4.14355 18.0566 10.7402 23.9199l61.2598 70.4502h-56c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128zM447.06 245.38c0.600586 -1.67969 0.931641 -3.49512 0.931641 -5.37988c0 -8.82812 -7.16406 -15.9951 -15.9912 -16h-24.8398 +c-0.015625 0 -0.0263672 -0.00195312 -0.0419922 -0.00195312c-7.11426 0 -13.1514 4.6543 -15.2285 11.082l-4.40918 12.9199h-71l-4.4209 -12.9199c-2.07617 -6.42773 -8.10938 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301 +c-8.82715 0.00488281 -15.9863 7.17773 -15.9863 16.0049c0 1.88574 0.326172 3.69531 0.926758 5.375l59.2695 160c2.20996 6.19043 8.125 10.6201 15.0703 10.6201h41.4395c6.94531 0 12.8604 -4.42969 15.0703 -10.6201zM335.61 304h32.7793l-16.3896 48z" /> +d="M304 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96 +c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-304h48zM432 288 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192zM368 160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h128zM496 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256z" /> +d="M304 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64zM16 288c-14.2305 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555 +c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48zM432 288c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192zM368 160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128zM496 416 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256z" /> +d="M304 352c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16zM330.15 189.09c53.4502 14.25 101.85 -25.8799 101.869 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132 +c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8496 102.53c7.62793 26.2793 28.5596 46.9287 55 54.1699 +zM352 92c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555 +l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-304h48z" /> +c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c7.62891 26.2793 28.5596 46.9287 55 54.1699zM352 92c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20zM304 352 +c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16zM107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48 +c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555z" /> +c-20.1826 0 -29.4854 39.293 -33.9307 57.7949c-5.20605 21.666 -10.5889 44.0703 -25.3936 58.9023c-32.4688 32.5234 -49.5029 73.9668 -89.1172 113.11c-2.19727 2.17285 -3.55762 5.19043 -3.55762 8.52148v213.77c0 6.54102 5.24316 11.8779 11.7832 11.998 +c15.8311 0.290039 36.6934 9.0791 52.6504 16.1787c31.7549 14.127 71.2744 31.708 119.561 31.7246h2.84375c42.7773 0 93.3633 -0.413086 113.774 -29.7373c8.3916 -12.0566 10.4453 -27.0342 6.14746 -44.6318c16.3125 -17.0527 25.0635 -48.8633 16.3818 -74.7568 +c17.5439 -23.4316 19.1436 -56.1318 9.30859 -79.4688l0.109375 -0.110352c11.8936 -11.9492 19.5234 -31.2588 19.4395 -49.1973c-0.15625 -30.3516 -26.1572 -58.0977 -59.5527 -58.0977h-101.725c7.30762 -28.3398 33.2773 -52.1318 33.2773 -94.5479 +c0 -73.4521 -48 -81.4521 -72 -81.4521z" /> +c-15.6172 0 -27.0654 14.6953 -23.2832 29.8213l48 192c2.6084 10.4316 12.0488 18.1787 23.2832 18.1787h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604c11.2344 0 20.6748 -7.74707 23.2832 -18.1787z" /> @@ -1105,7 +1405,7 @@ l-100.399 33.5l-47.2998 -94.7002c-6.40039 -12.7998 -24.6006 -12.7998 -31 0l-47.3 c-4.59961 13.5 8.2998 26.4004 21.9004 21.9004l100.5 -33.5l47.2998 94.7002c6.40039 12.7998 24.5996 12.7998 31 0l47.4004 -94.8008l100.399 33.5c13.5 4.60059 26.4004 -8.2998 21.9004 -21.8994l-33.5 -100.4zM346.5 101.5c49.9004 49.9004 49.9004 131.1 0 181 s-131.1 49.9004 -181 0s-49.9004 -131.1 0 -181s131.1 -49.9004 181 0z" /> +c0 5.72656 4.02734 10.5205 9.39746 11.7139l54.6025 12.1338v30.4395l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766c0 5.72656 4.02734 10.5205 9.39746 11.7139l54.6025 12.1338v68.9971c0 6.62695 5.37305 12 12 12h56 +c6.62695 0 12 -5.37305 12 -12v-51.2188l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139v-40.9756c0 -5.72656 -4.02734 -10.5205 -9.39746 -11.7139l-134.603 -29.9121v-30.4385l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139 +v-40.9766c0 -5.72656 -4.02734 -10.5205 -9.39746 -11.7139l-134.603 -29.9121v-159.219c86.1787 0 168 48 168 148.754c0 6.33398 5.63965 11.2461 11.9746 11.2461h48.0195z" /> +c-4.41504 0 -8 -3.58496 -8 -8v-64c0 -4.41504 3.58496 -8 8 -8z" /> +d="M496 320v-16c0 -4.41504 -3.58496 -8 -8 -8h-24v-12c0 -6.62695 -5.37305 -12 -12 -12h-392c-6.62695 0 -12 5.37305 -12 12v12h-24c-4.41504 0 -8 3.58496 -8 8v16c0 3.33398 2.03906 6.19141 4.94141 7.3916l232 88 +c0.94043 0.389648 1.97168 0.605469 3.05371 0.605469c1.08105 0 2.12305 -0.21582 3.06348 -0.605469l232 -88c2.90234 -1.2002 4.94141 -4.05762 4.94141 -7.3916zM472 16c13.2549 0 24 -10.7451 24 -24v-16c0 -4.41504 -3.58496 -8 -8 -8h-464 +c-4.41504 0 -8 3.58496 -8 8v16c0 13.2549 10.7451 24 24 24h432zM96 256h64v-192h64v192h64v-192h64v192h64v-192h36c6.62695 0 12 -5.37305 12 -12v-20h-416v20c0 6.62695 5.37305 12 12 12h36v192z" /> +l9.40039 -31.9004c1.4668 -4.96582 6.06152 -8.5957 11.5 -8.59961h22.8994c8.2998 0 14 8.09961 11.4004 15.9004l-57.5 169.1c-1.7002 4.7998 -6.2998 8.09961 -11.4004 8.09961h-32.5c-5.2002 0 -9.7002 -3.19922 -11.3994 -8.09961z" /> +d="M480 288c17.6611 0 32 -14.3389 32 -32v-288c0 -17.6611 -14.3389 -32 -32 -32h-320c-17.6611 0 -32 14.3389 -32 32v448c0 17.6611 14.3389 32 32 32h242.75c8.82715 -0.000976562 16.8291 -3.58008 22.6201 -9.37012l45.25 -45.25 +c5.7959 -5.79199 9.37891 -13.7979 9.37988 -22.6299v-82.75zM288 16v32c0 8.83105 -7.16895 16 -16 16h-32c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM288 144v32c0 8.83105 -7.16895 16 -16 16h-32 +c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM416 16v32c0 8.83105 -7.16895 16 -16 16h-32c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM416 144v32 +c0 8.83105 -7.16895 16 -16 16h-32c-8.83105 0 -16 -7.16895 -16 -16v-32c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16zM416 256v64h-48c-8.83105 0 -16 7.16895 -16 16v48h-160v-128h224zM64 320c17.6611 0 32 -14.3389 32 -32v-320 +c0 -17.6611 -14.3389 -32 -32 -32h-32c-17.6611 0 -32 14.3389 -32 32v320c0 17.6611 14.3389 32 32 32h32z" /> +d="M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c4.34375 -4.34473 7.0293 -10.3486 7.0293 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464 +c0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM123.206 47.4951l19.5791 20.8838c0.905273 0.96582 1.46289 2.26562 1.46289 3.69238c0 1.61426 -0.709961 3.06445 -1.83496 4.05469l-40.7627 35.874l40.7627 35.874 +c1.125 0.990234 1.83203 2.44043 1.83203 4.05566c0 1.42676 -0.554688 2.72559 -1.45996 3.69141l-19.5791 20.8848c-0.985352 1.05176 -2.3877 1.70703 -3.94141 1.70703c-1.42676 0 -2.72559 -0.555664 -3.69141 -1.46094l-64.8662 -60.8115 +c-1.05078 -0.986328 -1.70801 -2.38672 -1.70801 -3.93945c0 -1.55371 0.657227 -2.9541 1.70801 -3.94043l64.8662 -60.8115c0.96582 -0.905273 2.26562 -1.46289 3.69336 -1.46289c1.55273 0 2.9541 0.657227 3.93945 1.70898zM174.501 -2.98438 +c0.478516 -0.138672 0.982422 -0.212891 1.50488 -0.212891c2.45801 0 4.53418 1.64551 5.18555 3.89453l61.4395 211.626c0.138672 0.478516 0.213867 0.982422 0.213867 1.50488c0 2.45801 -1.64551 4.53418 -3.89355 5.18652l-27.4521 7.9707 +c-0.477539 0.138672 -0.981445 0.212891 -1.50391 0.212891c-2.45801 0 -4.53516 -1.64551 -5.18848 -3.89453l-61.4395 -211.626c-0.138672 -0.477539 -0.212891 -0.981445 -0.212891 -1.50293c0 -2.45898 1.64551 -4.53516 3.89355 -5.18848zM335.293 108.061 +c1.05176 0.986328 1.70898 2.38672 1.70898 3.94043c0 1.55273 -0.657227 2.95312 -1.70801 3.93945l-64.8662 60.8115c-0.96582 0.905273 -2.26562 1.46289 -3.69336 1.46289c-1.55273 0 -2.9541 -0.657227 -3.93945 -1.70898l-19.5801 -20.8848 +c-0.905273 -0.96582 -1.46289 -2.26562 -1.46289 -3.69238c0 -1.61426 0.709961 -3.06445 1.83496 -4.05469l40.7627 -35.874l-40.7637 -35.873c-1.125 -0.990234 -1.83203 -2.44043 -1.83203 -4.05566c0 -1.42676 0.554688 -2.72559 1.45996 -3.69141l19.5801 -20.8848 +c0.985352 -1.05176 2.3877 -1.70703 3.94141 -1.70703c1.42676 0 2.72559 0.555664 3.69141 1.46094z" /> +d="M448 352v-320h32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-160c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32v128h-192v-128h32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-160 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32v320h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32v-128h192v128h-32c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32z" /> +d="M448 400v-32c0 -8.83105 -7.16895 -16 -16 -16h-48v-368c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v368h-32v-368c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v112h-32c-88.3066 0 -160 71.6934 -160 160 +s71.6934 160 160 160h240c8.83105 0 16 -7.16895 16 -16z" /> +d="M352 128c53.0186 0 96 -42.9814 96 -96s-42.9814 -96 -96 -96s-96 42.9814 -96 96c0 0.00976562 0.00292969 -0.0429688 0.00292969 -0.0332031c0 7.16699 0.785156 14.1523 2.27344 20.874l-102.486 64.0537c-16.4033 -13.0752 -37.1816 -20.8945 -59.79 -20.8945 +c-53.0186 0 -96 42.9814 -96 96s42.9814 96 96 96c22.6084 0 43.3867 -7.81934 59.79 -20.8945l102.486 64.0537c-1.48633 6.71094 -2.27637 13.6826 -2.27637 20.8408c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96s-42.9814 -96 -96 -96 +c-22.6084 0 -43.3867 7.81934 -59.79 20.8965l-102.486 -64.0547c1.48828 -6.73145 2.27344 -13.6025 2.27344 -20.7793s-0.785156 -14.1719 -2.27344 -20.9033l102.486 -64.0537c16.4033 13.0752 37.1816 20.8945 59.79 20.8945z" /> +c-1.13281 -4.44141 -1.73535 -9.09375 -1.73535 -13.8857c0 -0.0117188 -0.00488281 0 -0.00488281 -0.0117188c0 -30.9277 25.0723 -56 56 -56s56 25.0723 56 56c-0.000976562 30.9287 -25.0732 56.001 -56.001 56.001z" /> +d="M320 416v-96h-64v96c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32zM368 288c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-16v-32c-0.0117188 -77.3096 -55.0684 -141.886 -128 -156.8v-99.2002h-64v99.2002 +c-72.9316 14.9141 -127.988 79.4902 -128 156.8v32h-16c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h352zM128 416v-96h-64v96c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32z" /> @@ -1358,16 +1658,17 @@ c5.41992 6.97949 15.4805 8.22949 22.46 2.80957l144.96 -112.04c22.9307 31.5 57.26 c0 -102.3 36.1504 -133.529 55.4697 -154.29c6 -6.43945 8.66016 -14.1602 8.61035 -21.71c0 -1.39941 -0.610352 -2.67969 -0.799805 -4.05957zM157.23 196.46l212.789 -164.46h-241.92c-19.1191 0 -31.9893 15.5996 -32.0996 32 c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c16.21 17.4199 44.0098 42.79 52.6201 110.75zM320 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z" /> +d="M432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3 +c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375c9.41113 0 17.5645 -5.42871 21.4961 -13.3232l9.40039 -18.7002h120zM53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.57031 -25.0762 -22.4316 -44.9971 -47.8994 -45h-245.801 +c-25.4678 0.00292969 -46.3291 19.9238 -47.8994 45z" /> +c5.45996 -5.05566 14.1846 -3.97168 18.2334 2.29492l22.3799 34.6553c1.20996 1.87305 1.91895 4.12109 1.91895 6.51465c0 3.125 -1.19727 5.97168 -3.15625 8.1084c-1.45703 1.58887 -36.4658 38.9043 -103.423 38.9043c-81.7578 0 -143.762 -62.0986 -143.762 -143.401 +c0 -82.3066 59.792 -145.567 144.484 -145.567c70.0752 0 108.259 43.8643 109.851 45.7314z" /> @@ -1402,13 +1703,13 @@ c-70.751 0 -128 -57.2588 -128 -128zM384 64c70.751 0 128 57.2598 128 128c0 70.751 d="M384 384c106 0 192 -86 192 -192s-86 -192 -192 -192h-192c-106 0 -192 86 -192 192s86 192 192 192h192zM384 64c70.7002 0 128 57.2002 128 128c0 70.7002 -57.2002 128 -128 128c-70.7002 0 -128 -57.2002 -128 -128c0 -70.7002 57.2002 -128 128 -128z" /> +s35.8877 -80 80 -80zM290.632 144l74.2861 120h-127.547l-24.7461 -39.9736c22.8271 -20.1328 38.4229 -48.2705 42.3828 -80.0264h35.624zM507.689 48.1143c46.0605 -2.43164 84.3115 34.3447 84.3125 79.8848c0 44.1123 -35.8877 80 -80 80 +c-0.0136719 0 0.00585938 -0.0078125 -0.00683594 -0.0078125c-6.85156 0 -13.5029 -0.864258 -19.8516 -2.48926l44.4688 -71.6426c4.66113 -7.50879 2.35156 -17.3721 -5.15625 -22.0322l-13.5938 -8.4375c-7.50879 -4.65918 -17.3721 -2.35156 -22.0322 5.15625 +l-44.4326 71.5859c-12.7021 -14.7451 -20.1475 -34.1416 -19.3359 -55.2627c1.57812 -41.0635 34.5918 -74.5898 75.6279 -76.7549z" /> +c22.7783 -7.32129 29.7354 -36.1914 12.8359 -53.0918zM192 320v-87.5312l118.208 37.9951c3.08594 0.992188 6.38086 1.52832 9.79492 1.52832c3.41309 0 6.70312 -0.536133 9.78906 -1.52832l118.208 -37.9951v87.5312h-256z" /> +c9.69238 24.6738 37.5537 36.8174 62.2275 27.124l190.342 -74.7646l24.8721 31.0898c12.3066 15.3809 33.9785 19.5146 51.0811 9.74121l112 -64c12.0605 -6.89355 20.1533 -19.8564 20.1533 -34.7305v-240c0 -18.5615 -12.7695 -34.6855 -30.8379 -38.9365l-136 -32 +c-2.94824 -0.694336 -6.00391 -1.06348 -9.16211 -1.06348h-80c-22.0908 0 -40 17.9082 -40 40z" /> +d="M384 -32v61.4609c0 8.5332 -4.4375 16.0166 -11.1543 20.2734l-111.748 70.8105c-7.41895 4.70215 -16.2656 7.45508 -25.6914 7.45508h-147.406c-13.2549 0 -24 10.7451 -24 24v8c0 35.3457 28.6543 64 64 64h123.648c13.3086 0 24.7158 8.12109 29.5371 19.6924 +l21.4102 51.3848c4.94141 11.8555 -3.77051 24.9229 -16.6143 24.9229h-229.981c-30.9277 0 -56 25.0723 -56 56v16c0 13.2549 10.7451 24 24 24h333.544c17.0908 0 32.0781 -8.90137 40.583 -22.3682l163.04 -258.146c9.35645 -14.8145 14.833 -32.4619 14.833 -51.2637 +v-116.222h-192z" /> +d="M510.9 302.729l-68.2969 -286.823c-10.8975 -45.7705 -52.0801 -79.9062 -101.166 -79.9062h-127.363c-36.0293 0 -68.8447 14.0459 -93.1855 36.9531l-108.298 101.92c-7.72754 7.29297 -12.5537 17.6299 -12.5537 29.084c0 22.0723 17.9199 39.9922 39.9922 39.9922 +c10.5742 0 20.2188 -4.11426 27.374 -10.8262l60.5928 -57.0254v0c0 27.958 -4.1084 54.9473 -11.6699 80.4668l-42.6885 144.075c-1.06738 3.60254 -1.63965 7.41699 -1.63965 11.3633c0 22.0801 17.9258 40.0059 40.0049 40.0059 +c18.1338 0 33.4512 -12.0977 38.3525 -28.6504l37.1543 -125.395c1.02148 -3.44629 4.21387 -5.96387 7.99023 -5.96387c4.59766 0 8.33105 3.7334 8.33105 8.33105c0 0.717773 -0.09375 1.41016 -0.264648 2.07422l-50.3047 195.641 +c-0.821289 3.19238 -1.25879 6.53711 -1.25879 9.98438c0 22.0742 17.9219 39.9961 39.9971 39.9961c18.6279 0 34.291 -12.793 38.7305 -30.043l56.0947 -218.158c1.15527 -4.49512 5.23926 -7.82129 10.0928 -7.82129c5.03125 0 9.23438 3.57715 10.207 8.32227 +l37.6826 183.704c3.76074 18.2139 19.9043 31.9248 39.2256 31.9248c4.20703 0 8.26562 -0.629883 12.0771 -1.83496c19.8604 -6.2998 30.8623 -27.6738 26.6758 -48.085l-33.8389 -164.967c-0.101562 -0.492188 -0.154297 -1.00098 -0.154297 -1.52344 +c0 -4.16797 3.38379 -7.55176 7.55176 -7.55176c3.56445 0 6.55566 2.48535 7.34668 5.80859l29.3975 123.459c4.19141 17.6016 20.0312 30.708 38.9082 30.708c22.0732 0 39.9941 -17.9209 39.9941 -39.9941c0 -3.19727 -0.380859 -6.26465 -1.09082 -9.24512v0z" /> +c13.2549 0 24 10.7451 24 24v71.6631h25.5566l44.1289 -82.9375c4.03516 -7.58301 12.0049 -12.7266 21.1875 -12.7266h24.4639c18.2617 0.000976562 29.8291 19.5908 21.0186 35.5869z" /> +d="M592 448c26.4922 0 48 -21.5078 48 -48v-320c0 -26.4922 -21.5078 -48 -48 -48h-240v-32h176c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h176v32h-240 +c-26.4922 0 -48 21.5078 -48 48v320c0 26.4922 21.5078 48 48 48h544zM576 96v288h-512v-288h512z" /> +d="M0 330.34c0.00292969 13.4697 8.32617 24.9932 20.1201 29.71l139.88 55.9502v-384l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v346.32zM192 32v384l192 -64v-384zM554.06 414.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-346.32 +c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-139.88 -55.9502v384z" /> +d="M440.667 265.891c-1.00195 -5.61328 -5.91309 -9.89062 -11.8135 -9.89062h-79.0957l-22.8564 -128h74.8096c7.4707 0 13.126 -6.75391 11.8135 -14.1094l-7.14355 -40c-1.00195 -5.61328 -5.91309 -9.89062 -11.8125 -9.89062h-79.0967l-15.377 -86.1094 +c-1.00195 -5.61328 -5.91309 -9.89062 -11.8125 -9.89062h-40.6318c-7.47266 0 -13.127 6.75391 -11.8135 14.1094l14.623 81.8906h-98.6338l-15.3779 -86.1094c-1.00195 -5.61328 -5.91309 -9.89062 -11.8135 -9.89062h-40.6318 +c-7.4707 0 -13.126 6.75391 -11.8125 14.1094l14.623 81.8906h-74.8105c-7.4707 0 -13.126 6.75391 -11.8125 14.1094l7.14258 40c1.00195 5.61328 5.91309 9.89062 11.8135 9.89062h79.0957l22.8564 128h-74.8096c-7.4707 0 -13.126 6.75391 -11.8135 14.1094l7.14355 40 +c1.00195 5.61328 5.91309 9.89062 11.8125 9.89062h79.0967l15.377 86.1094c1.00195 5.61328 5.91309 9.89062 11.8125 9.89062h40.6318c7.47266 0 13.127 -6.75391 11.8135 -14.1094l-14.623 -81.8906h98.6348l15.377 86.1094 +c1.00195 5.61328 5.91309 9.89062 11.8135 9.89062h40.6318c7.4707 0 13.126 -6.75391 11.8125 -14.1094l-14.623 -81.8906h74.8105c7.4707 0 13.126 -6.75391 11.8125 -14.1094zM261.889 128l22.8574 128h-98.6338l-22.8574 -128h98.6338z" /> +c-4.33203 -6.17773 -11.4912 -10.1973 -19.6006 -10.2002l-33.3994 -0.100586c-19.5 0 -30.9004 21.9004 -19.7002 37.8008l368 463.699c4.5 6.40039 11.7998 10.2002 19.5996 10.2002z" /> @@ -1756,14 +2057,14 @@ d="M290.547 258.961c-20.2949 10.1494 -44.1465 11.1992 -64.7393 3.88965c42.6064 0 c-14.7246 -30.8457 -46.123 -50.8535 -80.2979 -50.8535c-0.556641 0 -94.4707 8.61426 -94.4707 8.61426l-66.4062 -33.3467c-9.38379 -4.69336 -19.8145 -0.378906 -23.8945 7.78125l-44.4561 88.9248c-4.16699 8.61523 -1.11133 18.8975 6.94531 23.6211l58.0723 33.0693 l41.1221 74.1953c6.38965 57.2451 34.7314 109.768 79.7432 146.727c11.3906 9.44824 28.3408 7.78125 37.5098 -3.61328c9.44629 -11.3936 7.78027 -28.0674 -3.6123 -37.5156c-12.5029 -10.5596 -23.6172 -22.5098 -32.5088 -35.5703 c21.6719 14.7285 46.6787 24.7324 74.1865 28.0674c14.7246 1.94434 28.0625 -8.33594 29.7295 -23.0654c1.94531 -14.7275 -8.33594 -28.0674 -23.0615 -29.7344c-16.1162 -1.94434 -31.1201 -7.50293 -44.1787 -15.2832c26.1143 5.71289 58.7119 3.1377 88.0791 -11.1152 -c13.3359 -6.66895 18.8936 -22.5088 12.2246 -35.8486c-6.38965 -13.0596 -22.5039 -18.6162 -35.5645 -12.2256zM263.318 189.489c-6.1123 12.5049 -18.3379 20.2861 -32.2314 20.2861h-0.105469c-19.5732 0 -35.46 -15.8867 -35.46 -35.46 -c0 -0.0302734 0 -0.0800781 0.000976562 -0.110352c0 -21.4277 17.8076 -35.5703 35.5645 -35.5703c13.8936 0 26.1191 7.78125 32.2314 20.2861c4.44531 9.44922 13.6133 15.0059 23.3389 15.2842c-9.72559 0.277344 -18.8936 5.83496 -23.3389 15.2842zM638.139 226.726 -c4.16797 -8.61426 1.11133 -18.8965 -6.94531 -23.6201l-58.0713 -33.0693l-41.1221 -74.1963c-6.38965 -57.2451 -34.7314 -109.767 -79.7432 -146.726c-10.9316 -9.1123 -27.7988 -8.14453 -37.5098 3.6123c-9.44629 11.3945 -7.78027 28.0674 3.61328 37.5166 -c12.5029 10.5586 23.6162 22.5088 32.5078 35.5703c-21.6719 -14.7295 -46.6787 -24.7324 -74.1865 -28.0674c-10.0205 -2.50586 -27.5518 5.64258 -29.7295 23.0645c-1.94531 14.7285 8.33594 28.0674 23.0615 29.7344c16.1162 1.94629 31.1201 7.50293 44.1787 15.2842 -c-26.1143 -5.71289 -58.7119 -3.1377 -88.0791 11.1152c-13.3359 6.66895 -18.8936 22.5088 -12.2246 35.8477c6.38965 13.0605 22.5049 18.6191 35.5654 12.2266c20.2949 -10.1484 44.1465 -11.1982 64.7393 -3.88965c-42.6064 0 -71.208 20.4746 -85.5781 50.5762 -c-8.57617 17.8984 5.14746 38.0713 23.6172 38.0713c-18.4297 0 -32.2109 20.1357 -23.6172 38.0703c14.0332 29.3965 44.0391 50.8877 81.9658 50.8545l92.8027 -8.61523l66.4062 33.3467c9.4082 4.7041 19.8281 0.354492 23.8936 -7.78027zM408.912 245.344 -c-13.8936 0 -26.1191 -7.78027 -32.2314 -20.2861c-4.44531 -9.44824 -13.6133 -15.0059 -23.3389 -15.2832c9.72559 -0.27832 18.8936 -5.83594 23.3389 -15.2842c6.1123 -12.5049 18.3379 -20.2861 32.2314 -20.2861h0.105469c19.5732 0 35.46 15.8857 35.46 35.46 -c0 0.0302734 0 0.0791016 -0.000976562 0.110352c0 21.4287 -17.8076 35.5693 -35.5645 35.5693z" /> +c13.3359 -6.66895 18.8936 -22.5088 12.2246 -35.8486c-6.38965 -13.0596 -22.5039 -18.6162 -35.5645 -12.2256zM263.318 189.489c-6.1123 12.5049 -18.3379 20.2861 -32.2314 20.2861h-0.107422c-19.5703 0 -35.46 -15.8896 -35.46 -35.46 +c0 -0.0380859 0.00195312 -0.0732422 0.00292969 -0.110352c0 -21.4277 17.8076 -35.5703 35.5645 -35.5703c13.8936 0 26.1191 7.78125 32.2314 20.2861c4.44531 9.44922 13.6133 15.0059 23.3389 15.2842c-9.72559 0.277344 -18.8936 5.83496 -23.3389 15.2842z +M638.139 226.726c4.16797 -8.61426 1.11133 -18.8965 -6.94531 -23.6201l-58.0713 -33.0693l-41.1221 -74.1963c-6.38965 -57.2451 -34.7314 -109.767 -79.7432 -146.726c-10.9316 -9.1123 -27.7988 -8.14453 -37.5098 3.6123 +c-9.44629 11.3945 -7.78027 28.0674 3.61328 37.5166c12.5029 10.5586 23.6162 22.5088 32.5078 35.5703c-21.6719 -14.7295 -46.6787 -24.7324 -74.1865 -28.0674c-10.0205 -2.50586 -27.5518 5.64258 -29.7295 23.0645c-1.94531 14.7285 8.33594 28.0674 23.0615 29.7344 +c16.1162 1.94629 31.1201 7.50293 44.1787 15.2842c-26.1143 -5.71289 -58.7119 -3.1377 -88.0791 11.1152c-13.3359 6.66895 -18.8936 22.5088 -12.2246 35.8477c6.38965 13.0605 22.5049 18.6191 35.5654 12.2266c20.2949 -10.1484 44.1465 -11.1982 64.7393 -3.88965 +c-42.6064 0 -71.208 20.4746 -85.5781 50.5762c-8.57617 17.8984 5.14746 38.0713 23.6172 38.0713c-18.4297 0 -32.2109 20.1357 -23.6172 38.0703c14.0332 29.3965 44.0391 50.8877 81.9658 50.8545l92.8027 -8.61523l66.4062 33.3467 +c9.4082 4.7041 19.8281 0.354492 23.8936 -7.78027zM408.912 245.344c-13.8936 0 -26.1191 -7.78027 -32.2314 -20.2861c-4.44531 -9.44824 -13.6133 -15.0059 -23.3389 -15.2832c9.72559 -0.27832 18.8936 -5.83594 23.3389 -15.2842 +c6.1123 -12.5049 18.3379 -20.2861 32.2314 -20.2861h0.107422c19.5703 0 35.46 15.8887 35.46 35.46c0 0.0371094 -0.00195312 0.0722656 -0.00292969 0.110352c0 21.4287 -17.8076 35.5693 -35.5645 35.5693z" /> +d="M569.344 216.369c4.20996 -7.13086 6.62598 -15.5469 6.62598 -24.4199c0 -8.87402 -2.41699 -17.1875 -6.62695 -24.3193c-31.9746 -54.2607 -79.6484 -98.3232 -136.81 -126.301l0.00683594 -0.00878906l43.1201 -58.377 +c7.60156 -10.8594 4.95996 -25.8252 -5.90039 -33.4268l-13.1133 -9.17773c-10.8594 -7.59863 -25.8223 -4.95801 -33.4238 5.90039l-251.836 356.544c-13.5234 -6.16211 -26.5166 -13.3994 -38.7764 -21.5635l189.979 -271.399 +c-11.4863 -1.21191 -22.4707 -1.83301 -34.2754 -1.83301c-15.1465 0 -30.0566 1.02344 -44.6641 3.00293l-40.6309 58.04h-0.00976562l-119.399 170.58c-10.457 -11.1943 -19.8271 -23.0791 -28.2939 -35.9121l124.19 -177.417 +c-73.1172 25.4863 -134.358 76.0166 -172.858 141.349c-8.96484 15.2109 -8.76562 33.8643 0 48.7393c0.0107422 0.0166016 0.0234375 0.0332031 0.0332031 0.0498047c33.5459 56.8984 82.7676 99.8506 136.79 126.242l-43.1309 58.3945 +c-7.60156 10.8604 -4.95996 25.8252 5.90039 33.4268l13.1143 9.17773c10.8584 7.59961 25.8213 4.95801 33.4229 -5.90039l52.7705 -72.1689c26.3496 6.79004 53.9834 10.4092 82.4512 10.4092c119.81 0 224.96 -63.9492 281.344 -159.631zM390.026 102.06 +c21.1406 23.9658 33.9736 55.4365 33.9736 89.9404c0 75.1738 -60.8379 136 -136 136c-17.5117 0 -34.2422 -3.30566 -49.6084 -9.32324l19.0684 -27.2363c25.9883 7.96289 54.7598 5.56836 79.5098 -7.68066h-0.0292969c-23.6504 0 -42.8203 -19.1699 -42.8203 -42.8193 +c0 -23.4717 18.9922 -42.8203 42.8203 -42.8203c23.6494 0 42.8193 19.1699 42.8193 42.8203v0.0292969c18.9111 -35.3271 15.8818 -79.1123 -8.7998 -111.68z" /> +c-3.63867 2.68848 -8.77637 1.82129 -11.3389 -1.90625l-9.07227 -13.1963c-0.884766 -1.28711 -1.40332 -2.8457 -1.40332 -4.52539c0 -2.63867 1.26953 -4.98438 3.24219 -6.44141c22.8877 -16.8994 55.4541 -40.6904 105.304 -76.8682 +c20.2734 -14.7812 56.5234 -47.8135 92.2637 -47.5732c35.7236 -0.242188 71.9609 32.7715 92.2627 47.5732c49.8506 36.1787 82.418 59.9697 105.304 76.8682c1.97266 1.45703 3.25391 3.79883 3.25391 6.4375c0 1.67969 -0.530273 3.24219 -1.41504 4.5293z" /> +d="M304 128c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM336 224c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM368 160c-8.83105 0 -16 7.16895 -16 16s7.16895 16 16 16 +s16 -7.16895 16 -16s-7.16895 -16 -16 -16zM336 128c-8.83105 0 -16 7.16895 -16 16s7.16895 16 16 16s16 -7.16895 16 -16s-7.16895 -16 -16 -16zM304 192c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM432 224 +c-8.83105 0 -16 7.16895 -16 16s7.16895 16 16 16s16 -7.16895 16 -16s-7.16895 -16 -16 -16zM384 208c0 8.83105 7.16895 16 16 16s16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16zM368 256c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16 +s-16 7.16895 -16 16s7.16895 16 16 16zM464 224c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM496 256c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM432 192 +c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM400 160c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM336 96c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16 +s-16 7.16895 -16 16s7.16895 16 16 16zM304 64c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM368 128c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM389.65 346.35 +c2.89648 -2.89551 4.68945 -6.90039 4.68945 -11.3164s-1.79297 -8.41699 -4.68945 -11.3135l-169.381 -169.37c-2.89551 -2.89648 -6.90039 -4.68945 -11.3164 -4.68945s-8.41699 1.79297 -11.3135 4.68945l-11.2998 11.3105 +c-2.89355 2.89551 -4.68457 6.89844 -4.68457 11.3125c0 4.41309 1.79102 8.41113 4.68457 11.3076l5.66016 5.66992c-19.7871 20.0811 -31.9951 47.6602 -32 78.0498c0 19.2402 5.2998 37.0801 13.9297 52.8604l-10 10c-10.5723 10.6055 -25.1416 17.167 -41.2861 17.167 +c-2.58984 0 -5.1416 -0.169922 -7.64355 -0.49707c-30 -3.73047 -51 -31.7803 -51 -61.9307v-305.6c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v303.15c0 67.9395 55.4902 129.35 123.44 128.85 +c33.4453 -0.166992 63.7471 -13.835 85.6592 -35.8496l10 -10c15.8203 8.5498 33.6602 13.8496 52.9004 13.8496c30.3916 -0.000976562 57.9707 -12.21 78.0498 -32l5.66992 5.66016c2.89648 2.89648 6.90137 4.68945 11.3174 4.68945s8.41699 -1.79297 11.3125 -4.68945z +" /> +d="M32 64v48h448v-48c-0.0576172 -28.2656 -12.3916 -53.6514 -32 -71.0898v-40.9102c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v16h-256v-16c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v40.9102 +c-19.6084 17.4385 -31.9424 42.8242 -32 71.0898zM496 192c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-480c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h16v186.75c0 38.2197 31.0391 69.2656 69.2598 69.2656 +c19.1113 0 36.4248 -7.75879 48.96 -20.2959l19.2607 -19.2695c29.8994 13.1299 59.1094 7.60938 79.7295 -8.62012l0.169922 0.169922c2.89551 2.89355 6.89941 4.68457 11.3125 4.68457s8.41211 -1.79102 11.3076 -4.68457l11.3096 -11.3096 +c2.89746 -2.89648 4.69043 -6.90137 4.69043 -11.3174s-1.79297 -8.41699 -4.69043 -11.3135l-105.369 -105.369c-2.89648 -2.89746 -6.90137 -4.69043 -11.3174 -4.69043s-8.41699 1.79297 -11.3135 4.69043l-11.3096 11.3096 +c-2.88477 2.89453 -4.66992 6.8916 -4.66992 11.2969c0 4.40625 1.78516 8.39844 4.66992 11.293l0.169922 0.169922c-16.2295 20.6201 -21.75 49.8506 -8.62012 79.7305l-19.2695 19.2598c-3.84766 3.84082 -9.16016 6.21289 -15.0205 6.21289 +c-11.7178 0 -21.2344 -9.50098 -21.2598 -21.2129v-186.75h416z" /> +d="M32 -16v336h384v-336c0 -26.4922 -21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48zM304 240v-224c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16v224c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM208 240v-224c0 -8.83105 7.16895 -16 16 -16 +s16 7.16895 16 16v224c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM112 240v-224c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16v224c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM432 416c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375 +c9.41113 0 17.5645 -5.42871 21.4961 -13.3232l9.40039 -18.7002h120z" /> d="M88 281.941h-46.0576c-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37207 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-301.941c0 -6.62695 -5.37305 -12 -12 -12h-56 c-6.62695 0 -12 5.37305 -12 12v301.941z" /> +d="M448 104v-112v-0.0615234c0 -13.2129 -10.7275 -23.9395 -23.9395 -23.9395c-0.0205078 0 -0.0400391 0.000976562 -0.0605469 0.000976562h-112c-21.3896 0 -32.0898 25.9004 -17 41l36.2002 36.2002l-107.2 107.2l-107.23 -107.301l36.2305 -36.0996 +c15.0898 -15.0996 4.38965 -41 -17 -41h-112h-0.0615234c-13.2129 0 -23.9395 10.7275 -23.9395 23.9395c0 0.0205078 0.000976562 0.0400391 0.000976562 0.0605469v112c0 21.4004 25.8896 32.0996 41 17l36.1904 -36.2002l107.27 107.2l-107.28 107.3l-36.1797 -36.2998 +c-15.0996 -15.0996 -41 -4.40039 -41 17v112v0.0615234c0 13.2129 10.7275 23.9395 23.9395 23.9395c0.0205078 0 0.0400391 -0.000976562 0.0605469 -0.000976562h112c21.3896 0 32.0898 -25.9004 17 -41l-36.2002 -36.2002l107.2 -107.2l107.23 107.301l-36.2305 36.0996 +c-15.0898 15.0996 -4.38965 41 17 41h112h0.0615234c13.2129 0 23.9395 -10.7275 23.9395 -23.9395c0 -0.0205078 -0.000976562 -0.0400391 -0.000976562 -0.0605469v-112c0 -21.4004 -25.8896 -32.0996 -41 -17l-36.1904 36.2002l-107.27 -107.2l107.28 -107.3 +l36.1797 36.2002c15.0996 15.1992 41 4.5 41 -16.9004z" /> @@ -1994,9 +2297,9 @@ v-70.9004h-116c-6.59961 0 -12 -5.40039 -12 -12v-64c0 -6.59961 5.40039 -12 12 -12 d="M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM300 76v116h70.9004c10.6992 0 16.0996 13 8.5 20.5l-114.9 114.3c-4.7002 4.7002 -12.2002 4.7002 -16.9004 0l-115 -114.3c-7.59961 -7.59961 -2.19922 -20.5 8.5 -20.5 h70.9004v-116c0 -6.59961 5.40039 -12 12 -12h64c6.59961 0 12 5.40039 12 12z" /> +d="M432 128c8.83105 0 16 -7.16895 16 -16v-128c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h160c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-144v-320h320v112 +c0 8.83105 7.16895 16 16 16h32zM488 448c13.2461 0 24 -10.7539 24 -24v-128c0 -21.5 -26 -32 -41 -17l-35.7197 35.6797l-243.61 -243.68c-4.34668 -4.36133 -10.3652 -7.0625 -17.0029 -7.0625s-12.6504 2.70117 -16.9971 7.0625l-22.6699 22.6299 +c-4.36133 4.34668 -7.0625 10.3652 -7.0625 17.0029c0 6.63867 2.70117 12.6504 7.0625 16.9971l243.73 243.64l-35.7305 35.7305c-15.0498 15.0898 -4.37012 41 17 41h128z" /> @@ -2015,11 +2318,11 @@ c-6.2002 6.2002 -16.3994 6.2002 -22.5996 0l-105.4 -105.4c-10.0996 -10.0996 -3 -2 d="M485.5 448l90.5 -160h-101.1l-69.2002 160h79.7998zM357.5 448l69.2002 -160h-277.4l69.2002 160h139zM90.5 448h79.7998l-69.2002 -160h-101.1zM0 256h100.7l123 -251.7c1.5 -3.09961 -2.7002 -5.89941 -5 -3.2998zM148.2 256h279.6l-137 -318.2 c-1 -2.39941 -4.5 -2.39941 -5.5 0zM352.3 4.2998l123 251.7h100.7l-218.7 -254.9c-2.2998 -2.69922 -6.5 0.100586 -5 3.2002z" /> +d="M313.553 328.331c14.2646 -15.3623 3.29102 -40.3311 -17.5869 -40.3311h-63.9658v-328c0 -13.2549 -10.7451 -24 -24 -24h-195.976c-10.6914 0 -16.0459 12.9258 -8.48535 20.4854l56 56c2.17188 2.17188 5.17383 3.51465 8.48535 3.51465h83.9756v272h-63.9746 +c-20.9639 0 -31.793 25.0312 -17.5869 40.3311l103.975 112.003c9.49805 10.2295 25.6885 10.2139 35.1738 0z" /> @@ -2035,8 +2338,8 @@ c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58 d="M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM272 76v312 c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12z" /> +c5.67578 2.35449 11.96 3.6543 18.4824 3.6543c6.52148 0 12.7432 -1.2998 18.418 -3.6543zM256.1 1.7002c93.7002 46.5996 172.5 156.3 175.801 307.7l-175.9 73.2998z" /> @@ -2096,47 +2399,48 @@ l46.2998 -46.2998l-157.9 -157.9c-35 42.4004 -53.5 93.6006 -56.0996 145.5c63.9004 d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM120 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM184 352c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32 s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM232 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" /> +d="M74 240l-33.9102 90.3799c-0.655273 1.74707 -1.01953 3.64551 -1.01953 5.62012c0 8.83105 7.16895 16 16 16h0.0195312h56.9102v32h-24c-4.41504 0 -8 3.58496 -8 8v16c0 4.41504 3.58496 8 8 8h24v24c0 4.41504 3.58496 8 8 8h16c4.41504 0 8 -3.58496 8 -8v-24h24 +c4.41504 0 8 -3.58496 8 -8v-16c0 -4.41504 -3.58496 -8 -8 -8h-24v-32h56.8896c0.00683594 0 0.0078125 -0.00683594 0.0146484 -0.00683594c8.83008 0 16 -7.16992 16 -16c0 -1.97461 -0.359375 -3.86621 -1.01465 -5.61328l-33.8896 -90.3799h10 +c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-15.9404c0.142578 -44.1934 5.69141 -86.9287 15.9404 -128h-128c10.249 41.0713 15.7979 83.8066 15.9404 128h-15.9404c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h10z +M247.16 -11.5801c5.24805 -2.62598 8.83984 -8.0459 8.83984 -14.3096v-22.1104c0 -8.83105 -7.16895 -16 -16 -16h-224c-8.83105 0 -16 7.16895 -16 16v22.1104c0.000976562 6.26562 3.59668 11.6855 8.84961 14.3096l23.1504 11.5801v16c0 8.83105 7.16895 16 16 16h160 +c8.83105 0 16 -7.16895 16 -16v-16zM339.93 146.2l-24.5693 20.7998c-6.94434 5.86133 -11.3438 14.6143 -11.3604 24.4004v58.5996c0 3.31152 2.68848 6 6 6h26.3896c3.31152 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.68848 6 6 6h53.8105c3.31152 0 6 -2.68848 6 -6 +v-26h24.71v26c0 3.31152 2.68848 6 6 6h26.3799c3.31152 0 6 -2.68848 6 -6v-58.54c0 -0.0107422 0.0185547 -0.0126953 0.0185547 -0.0234375c0 -9.79297 -4.40918 -18.5645 -11.3486 -24.4365l-24.5996 -20.79l3.29004 -82.21h-126.721zM384 144v-32h32v32 +c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16zM503.16 -11.5801c5.24805 -2.62598 8.83984 -8.0459 8.83984 -14.3096v-22.1104c0 -8.83105 -7.16895 -16 -16 -16h-192c-8.83105 0 -16 7.16895 -16 16v22.1104c0.000976562 6.26562 3.59668 11.6855 8.84961 14.3096 +l23.1504 11.5801v16c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-16z" /> +d="M8 160.12c0 73.3799 59.8096 181.08 112.6 225.37c-14 3.41992 -24.5996 15.5098 -24.5996 30.5098c0 17.6611 14.3389 32 32 32h64c17.6611 0 32 -14.3389 32 -32c0 -15.0498 -10.5996 -27.0898 -24.5996 -30.5098c24.3994 -20.4902 50.0693 -54.6807 70.8691 -92.5898 +l-107.89 -107.931c-1.44727 -1.44727 -2.3418 -3.44922 -2.3418 -5.65625c0 -2.20605 0.894531 -4.20508 2.3418 -5.65332l11.3105 -11.3105c1.44727 -1.44629 3.44922 -2.3418 5.65527 -2.3418c2.20703 0 4.20605 0.895508 5.6543 2.3418l100.31 100.33 +c15.96 -35.46 26.6904 -71.9492 26.6904 -102.56c0 -51.6006 -22.1396 -73.8301 -56 -84.6006v-43.5195h-192v43.5195c-33.8604 10.7705 -56 32.9609 -56 84.6006zM304 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288z" /> +d="M400 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h352zM416 288c17.6494 -0.0136719 31.9688 -14.3477 31.9688 -32.001c0 -3.32129 -0.507812 -6.52539 -1.44922 -9.53906 +l-73.0791 -214.46h-298.881l-73.0791 214.46c-0.941406 3.01367 -1.45508 6.21875 -1.45508 9.54004c0 17.6533 14.3252 31.9863 31.9746 32h160v48h-40c-4.41504 0 -8 3.58496 -8 8v48c0 4.41504 3.58496 8 8 8h40v40c0 4.41504 3.58496 8 8 8h48 +c4.41504 0 8 -3.58496 8 -8v-40h40c4.41504 0 8 -3.58496 8 -8v-48c0 -4.41504 -3.58496 -8 -8 -8h-40v-48h160z" /> +d="M19 175.53c-11.2041 4.98145 -19 16.1963 -19 29.2393v0.0205078v137.21c0 0.0195312 -0.00292969 0.0419922 -0.00292969 0.0625c0 6.60742 2.67578 12.5957 7.00293 16.9375l9 9l-14.21 28.4199c-1.13867 2.27344 -1.79004 4.85547 -1.79004 7.56934v0.0107422 +c0 6.62305 5.37695 12 12 12h147.94c106 0 191.92 -86 191.92 -192v-192h-319.86v14.5195c0 0.0078125 -0.078125 -0.03125 -0.078125 -0.0244141c0 31.3145 18.0312 58.4512 44.2686 71.585l57.2197 28.6504c15.751 7.87695 26.5303 24.1348 26.5303 42.9297v0.00976562 +v50.3301l-22.1201 -11.0801c-6.19238 -3.09668 -10.8369 -8.78906 -12.5508 -15.6504l-9.21973 -30.6494c-2.81152 -9.35645 -9.77051 -16.9043 -18.7598 -20.5l-12.7803 -5.12012c-3.66895 -1.46777 -7.7168 -2.27246 -11.9082 -2.27246 +c-4.61621 0 -9.00586 0.979492 -12.9717 2.74219zM52 320c-11.0381 0 -20 -8.96191 -20 -20s8.96191 -20 20 -20s20 8.96191 20 20s-8.96191 20 -20 20zM368 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h352z" /> +d="M105.1 224c-29.3896 18.3799 -49.0996 50.7803 -49.0996 88c0 57.3994 46.6006 104 104 104s104 -46.6006 104 -104c0 -37.2197 -19.71 -69.6201 -49.0996 -88h25.0996c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-16v-5.49023 +c0 -44 4.11035 -86.5996 24 -122.51h-176c19.8604 35.9102 24 78.5098 24 122.51v5.49023h-16c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h25.0996zM304 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-288 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h288z" /> +d="M256 336c-30.9072 0 -56 25.0928 -56 56s25.0928 56 56 56s56 -25.0928 56 -56s-25.0928 -56 -56 -56zM432 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h352zM504.87 263.84 +c4.30566 -2.86816 7.11914 -7.77344 7.11914 -13.3311c0 -2.56445 -0.604492 -4.98926 -1.67969 -7.13867l-102.55 -211.37h-303.52l-102.55 211.33c-1.0752 2.14941 -1.70508 4.58008 -1.70508 7.14453c0 5.55762 2.83887 10.457 7.14453 13.3252l28.5703 16 +c7.35938 4.91016 16.8096 2.5498 22.0898 -4.54004c8.6543 -11.709 22.4922 -19.2686 38.1572 -19.2686c1.13672 0 2.26562 0.0400391 3.38281 0.119141c25.6699 1.73926 44.6699 24.7998 44.6699 50.4893c0 7.39648 6.00391 13.4004 13.4004 13.4004h38.7695 +c6.04004 0 11.6104 -3.99023 12.8604 -9.91016c4.57715 -21.7363 23.8789 -38.0752 46.9688 -38.0752s42.3936 16.3389 46.9707 38.0752c1.25 5.91016 6.86035 9.91016 12.8604 9.91016h38.7695c7.39648 0 13.4004 -6.00391 13.4004 -13.4004 +c0 -23.5293 15.7002 -45.46 38.8398 -49.75c2.95898 -0.576172 5.9541 -0.918945 9.08105 -0.918945c15.6064 0 29.4688 7.5293 38.1494 19.1494c5.37988 7.13965 14.8496 9.67969 22.29 4.67969z" /> +d="M368 416c8.83105 0 16 -7.16895 16 -16v-176l-64 -32c0 -47.7197 1.54004 -95 13.21 -160h-282.42c11.6699 65 13.21 111.67 13.21 160l-64 32v176c0 8.83105 7.16895 16 16 16h56.0996c8.83105 0 16 -7.16895 16 -16v-48h47.9004v48c0 8.83105 7.16895 16 16 16h80 +c8.83105 0 16 -7.16895 16 -16v-48h48v48c0 8.83105 7.16895 16 16 16h56zM224 128v64c0 17.6611 -14.3389 32 -32 32s-32 -14.3389 -32 -32v-64h64zM368 0c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-352c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h352z" /> +l272 113.3c5.6748 2.35449 11.959 3.6543 18.4814 3.6543s12.7432 -1.2998 18.4189 -3.6543z" /> +d="M271.06 303.7c-24.0596 6.39941 -43.4297 24.7002 -46.5693 47.7002c-4.33984 32 20.6201 59.3994 53.5098 63v17.5996c0 8.7998 7.82031 16 17.3701 16h17.3701c9.5498 0 17.3701 -7.2002 17.3701 -16v-17.7197c12.457 -1.28516 24.2842 -5.35938 34.5195 -11.5 +c3.32227 -2.00098 5.52734 -5.64746 5.52734 -9.80469c0 -2.18945 -0.617188 -4.23633 -1.6875 -5.97559c-0.592773 -0.978516 -1.31836 -1.8457 -2.16992 -2.59961l-19 -17.5c-4.01953 -3.7002 -10.0693 -4.2002 -15.2998 -2 +c-3.46289 1.4043 -7.2666 2.19336 -11.2305 2.19922h-35.5996c-5.03027 0 -9.12012 -3.7998 -9.12012 -8.39941c0.12207 -3.94727 2.91699 -7.23145 6.62988 -8.10059l54.2705 -14.2998c24.0996 -6.39941 43.4102 -24.7002 46.5596 -47.7002 +c4.33984 -32 -20.5693 -59.3994 -53.5 -63v-17.5996c0 -8.7998 -7.83008 -16 -17.3799 -16h-17.3701c-9.54004 0 -17.3701 7.2002 -17.3701 16v17.7002c-12.4541 1.28516 -24.2773 5.35938 -34.5098 11.5c-3.33008 1.99609 -5.54199 5.64551 -5.54199 9.80762 +c0 2.17188 0.607422 4.20312 1.66211 5.93262c0.617188 1.00098 1.36914 1.88867 2.25 2.65918l19 17.5c4.01953 3.7002 10.0596 4.2002 15.2998 2c3.45117 -1.39941 7.24121 -2.18848 11.1904 -2.19922h35.5996c5.03027 0 9.12012 3.7998 9.12012 8.39941 +c-0.121094 3.94727 -2.91602 7.23145 -6.62988 8.10059zM565.27 119.9c6.5918 -5.86328 10.7656 -14.3916 10.7656 -23.8984c0 -10.1123 -4.70117 -19.1357 -12.0352 -25.002l-151.23 -121c-10.9443 -8.74512 -24.8633 -14 -39.9482 -14h-0.0517578h-356.77 +c-8.83105 0 -16 7.16895 -16 16v96c0 8.83105 7.16895 16 16 16h55.4004l46.5 37.71c20.2197 16.4053 46.0596 26.2822 74.0996 26.29h160c17.6406 0 31.9668 -14.3066 32 -31.9404c0 -0.0410156 0.000976562 -0.0507812 0.000976562 -0.0917969 +c0 -1.83008 -0.158203 -3.62402 -0.460938 -5.36816c-2.54004 -15.6992 -17.3496 -26.5996 -33.25 -26.5996h-78.29c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16h118.27c0.0605469 0 0.161133 0.0234375 0.22168 0.0234375 +c15.0459 0 28.8799 5.23242 39.7783 13.9766l92.4004 73.9004c12.4004 10 30.7998 10.6992 42.5996 0z" /> +d="M224 192c-70.6455 0 -128 57.3545 -128 128s57.3545 128 128 128s128 -57.3545 128 -128s-57.3545 -128 -128 -128zM320 128v-160c0.0791016 -11.6504 3.3418 -22.6367 8.90039 -32h-280.9c-26.4922 0 -48 21.5078 -48 48v41.5996 +c0.0166016 74.1699 60.2305 134.384 134.4 134.4h16.6992c22.1426 -10.2109 47.085 -15.9072 73.0498 -15.9072c25.9639 0 50.6084 5.69629 72.751 15.9072h16.6992c5 0 9.7002 -1 14.5 -1.5c-5.06641 -9.00684 -8.02539 -19.4561 -8.09961 -30.5zM608 160 +c17.6611 0 32 -14.3389 32 -32v-160c0 -17.6611 -14.3389 -32 -32 -32h-224c-17.6611 0 -32 14.3389 -32 32v160c0 17.6611 14.3389 32 32 32h32v80c0 44.1533 35.8467 80 80 80s80 -35.8467 80 -80v-80h32zM496 16c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32 +s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM528 160v80c0 17.6611 -14.3389 32 -32 32s-32 -14.3389 -32 -32v-80h64z" /> @@ -2571,8 +2876,8 @@ c12.9697 -4.20996 26.6006 -6.91016 40.9502 -6.91016s27.9805 2.7002 40.9404 6.910 c26.4697 0 48 -22.25 48 -49.5898v-316.82c0 -27.3398 -21.5303 -49.5898 -48 -49.5898h-244.55c-6.57031 25.2695 -20.5898 47.3096 -39.6904 64h76.2402v64h128v-64h64v288h-352v-49.7998c-18.9004 11.0195 -40.5801 17.7998 -64 17.7998v46.4102 c0 27.3398 21.5303 49.5898 48 49.5898h384z" /> +d="M446.53 350.57c0 0 58.4297 -19.0605 98.9893 -41.2803c18.7607 -10.2803 30.4805 -29.8301 30.4805 -51.2305c0 -21.793 -11.9512 -40.7695 -29.71 -50.7295l-154.44 -86.6504l98.5205 -104.68h53.6299c17.6699 0 32 -14.3301 32 -32c0 -8.83984 -7.16016 -16 -16 -16 +h-90.3799l-118.53 125.94c5.07031 54.1494 -29.9297 85.0596 -40.7998 93.21c-36.8496 27.6191 -88.29 27.6592 -125.13 0l-34.7803 -26.0908c-7.07031 -5.2998 -8.49023 -15.3291 -3.18945 -22.4092c5.31934 -7.10059 15.3496 -8.5 22.4092 -3.19043l32.7607 24.5898 +c20.6895 15.5303 48.3496 20.8105 72.2393 10.8799c44.0605 -18.3193 57.8506 -70.3701 33.71 -106.6l-35.7998 -48.3301h79.4902c17.6699 0 32 -14.3301 32 -32c0 -8.83984 -7.16016 -16 -16 -16h-304c-34.9199 0 -63.8896 28.0996 -64 63.0195 +c-0.5 166.86 126.75 304.021 289.46 319.44c6.82031 37.25 39.3096 65.54 78.54 65.54c39.1904 0 71.6699 -28.2305 78.5303 -65.4297zM368 312c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24c-13.2598 0 -24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z" /> @@ -2675,7 +2979,7 @@ c-5.32031 -0.449219 -10.5605 -1.17969 -16 -1.17969c-16.6006 0 -32.6406 2.2998 -4 c-0.0800781 145.76 129.3 182.88 147.31 186.94c57.1709 12.9199 111.221 0.259766 153.21 -28.7002c43.4902 -29.9902 94.9209 -46.2402 147.74 -46.2402h9.37012c60.6504 0 115.01 -45.4102 118.18 -105.98zM463.97 200c13.25 0 24 10.75 24 24 c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM543.97 46.75v99.0596c-11.1299 -11.3799 -24.7393 -20.1494 -39.8594 -25.9795z" /> +d="M358.4 444.8c10.5996 7.90039 25.5996 0.400391 25.5996 -12.7998v-480c0 -13.2002 -15.0996 -20.7002 -25.5996 -12.7998l-38.4004 44.7998l-54.4004 -44.7998c-2.66602 -2.01953 -6.01367 -3.21777 -9.6123 -3.21777c-3.59961 0 -6.9209 1.19824 -9.58691 3.21777 +l-54.4004 44.7998l-54.4004 -44.7998c-2.66602 -2.01953 -6.01367 -3.21777 -9.6123 -3.21777c-3.59961 0 -6.9209 1.19824 -9.58691 3.21777l-54.4004 44.7998l-38.4004 -44.7998c-10.5996 -7.90039 -25.5996 -0.400391 -25.5996 12.7998v480 +c0 13.2002 15 20.7002 25.5996 12.7998l38.4004 -44.7998l54.4004 44.7998c2.66602 2.01953 6.01367 3.21777 9.6123 3.21777c3.59961 0 6.9209 -1.19824 9.58691 -3.21777l54.4004 -44.7998l54.4004 44.7998c2.66602 2.01953 6.01367 3.21777 9.6123 3.21777 +c3.59961 0 6.9209 -1.19824 9.58691 -3.21777l54.4004 -44.7998zM320 88v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 184v16c0 4.40039 -3.59961 8 -8 8h-240 +c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 280v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8z" /> +d="M32 224h32v-192h-32h-0.0390625c-17.6406 0 -31.9619 14.3213 -31.9619 31.9619c0 0.0126953 0.000976562 0.0253906 0.000976562 0.0380859v128v0.0390625c0 17.6406 14.3213 31.9619 31.9619 31.9619c0.0126953 0 0.0253906 -0.000976562 0.0380859 -0.000976562z +M544 272v-272c-0.0351562 -35.3066 -28.6934 -63.9648 -64 -64h-320c-35.3066 0.0351562 -63.9648 28.6934 -64 64v272v0.0263672c0 44.1387 35.835 79.9746 79.9736 79.9746c0.00878906 0 0.0175781 -0.000976562 0.0263672 -0.000976562h112v64 +c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32v-64h112h0.0263672c44.1387 0 79.9746 -35.835 79.9746 -79.9736c0 -0.00878906 -0.000976562 -0.0175781 -0.000976562 -0.0263672zM264 192c0 22.0762 -17.9238 40 -40 40s-40 -17.9238 -40 -40s17.9238 -40 40 -40 +c22.0752 0 40 17.9248 40 40zM256 64h-64v-32h64v32zM352 64h-64v-32h64v32zM456 192c0 22.0762 -17.9238 40 -40 40s-40 -17.9238 -40 -40s17.9238 -40 40 -40c22.0752 0 40 17.9248 40 40zM448 64h-64v-32h64v32zM640 192v-128v-0.0390625 +c0 -17.6406 -14.3213 -31.9619 -31.9619 -31.9619c-0.0126953 0 -0.0253906 0.000976562 -0.0380859 0.000976562h-32v192h32h0.0390625c17.6406 0 31.9619 -14.3213 31.9619 -31.9619c0 -0.0126953 -0.000976562 -0.0253906 -0.000976562 -0.0380859z" /> +c9.50977 2.5498 17.8701 7.44043 25.4297 13.3203zM263 108c-13.2305 -13.4697 -33.8398 -15.8799 -49.7305 -5.82031c-6.13867 3.89746 -13.5029 6.15527 -21.3066 6.15527s-15.084 -2.25781 -21.2227 -6.15527c-15.9004 -10.0596 -36.5098 -7.64941 -49.7402 5.82031 +c-14.7305 15 -16.4004 14.04 -38.7803 20.1396c-13.8896 3.79004 -24.75 14.8408 -28.4697 28.9805c-7.48047 28.3994 -5.54004 24.9697 -25.9502 45.75c-10.1699 10.3604 -14.1396 25.4502 -10.4199 39.5898c7.48047 28.4199 7.46973 24.46 0 52.8203 +c-3.72949 14.1396 0.25 29.2295 10.4199 39.5801c20.4102 20.7793 18.4805 17.3594 25.9502 45.75c3.71973 14.1396 14.5801 25.1895 28.4697 28.9795c27.8906 7.61035 24.5303 5.62988 44.9404 26.4102c10.1699 10.3604 25 14.4004 38.8896 10.6104 +c27.9199 -7.61035 24.0303 -7.60059 51.9004 0c13.8896 3.79004 28.7197 -0.260742 38.8896 -10.6104c20.4297 -20.79 17.0703 -18.7998 44.9502 -26.4102c13.8896 -3.79004 24.75 -14.8398 28.4697 -28.9795c7.48047 -28.3906 5.54004 -24.9707 25.9502 -45.75 +c10.1699 -10.3506 14.1396 -25.4404 10.4199 -39.5801c-7.47949 -28.4102 -7.46973 -24.4502 0 -52.8301c3.71973 -14.1406 -0.25 -29.2305 -10.4199 -39.5801c-20.4102 -20.7803 -18.4697 -17.3506 -25.9502 -45.75c-3.71973 -14.1396 -14.5801 -25.1904 -28.4697 -28.9805 +c-21.7598 -5.92969 -23.5098 -4.58984 -38.79 -20.1396zM97.6602 272.04c0 -53.0303 42.2402 -96.0205 94.3398 -96.0205s94.3398 42.9902 94.3398 96.0205s-42.2402 96.0195 -94.3398 96.0195s-94.3398 -42.9893 -94.3398 -96.0195z" /> @@ -2884,12 +3187,12 @@ v16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM112 48c17.6699 h112c17.6699 0 32 14.3301 32 32v96c0 17.6699 -14.3301 32 -32 32h-112v-160zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z" /> +d="M431.34 325.95c44.9004 -16.3398 80.6602 -42.7803 80.6602 -86.1006v-160.229c0 -30.2705 -27.5 -57.6797 -72 -77.8604v101.9c0 13.2461 -10.7539 24 -24 24s-24 -10.7539 -24 -24v-118.93c-33.0498 -9.11035 -71.0703 -15.0605 -112 -16.7305v103.61 +c0 13.2461 -10.7539 24 -24 24s-24 -10.7539 -24 -24v-103.61c-40.9297 1.66992 -78.9502 7.62012 -112 16.7305v118.93c0 13.2461 -10.7539 24 -24 24s-24 -10.7539 -24 -24v-101.9c-44.5 20.1807 -72 47.5898 -72 77.8604v160.229c0 107.601 219.55 112.15 256 112.15 +c15.2197 0 62.4297 -0.910156 112.19 -9.69043l110.06 71c2.53711 1.69238 5.59082 2.7041 8.86621 2.7041c5.55664 0 10.4551 -2.83887 13.3242 -7.14355l8.86914 -13.3105c1.69238 -2.53711 2.7041 -5.58984 2.7041 -8.86523 +c0 -5.55664 -2.83887 -10.4561 -7.14355 -13.3242zM256 175.76c114.87 0 208 28.6904 208 64.0898c0 21.3105 -33.9102 40.1504 -85.8604 51.75l-118.64 -76.5195c-2.53711 -1.69141 -5.59082 -2.7041 -8.86621 -2.7041c-5.55664 0 -10.4551 2.83887 -13.3242 7.14355 +l-8.86914 13.3105c-1.69434 2.53809 -2.70703 5.59277 -2.70703 8.87012c0 5.55371 2.83594 10.4502 7.13672 13.3193l72.8096 47c-15.9492 1.2002 -32.5293 1.91016 -49.6797 1.91016c-114.88 0 -208 -28.6797 -208 -64.0801c0 -35.3994 93.1201 -64.0898 208 -64.0898z +" /> +c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.46c2.03027 -6.14062 7.58008 -10.4404 14.0303 -10.8906c0.389648 -0.0292969 0.759766 -0.0498047 1.13965 -0.0498047 +c0.00390625 0 -0.00292969 -0.015625 0.000976562 -0.015625c6.26074 0 11.6865 3.60742 14.3086 8.85547l7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953c7.37012 -14.7207 22.1904 -23.8604 38.6396 -23.8604 +h47.1904c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16h-47.1904zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z" /> +l0.00488281 0.00195312c4.27637 0 8.15039 -1.73633 10.9551 -4.54199l6.91992 -6.91992c2.91016 -2.91016 6.85059 -4.54004 10.96 -4.54004h10.0908c8.55957 0 15.5 -6.93945 15.5 -15.5c0 -6.66992 -4.27051 -12.5898 -10.6006 -14.7002l-47.3096 -15.7695 +c-3.90039 -1.2998 -8.15039 -1 -11.8301 0.839844l-14.7207 7.36035c-7.5791 3.7998 -15.9492 5.76953 -24.4297 5.76953h-0.889648c-12.2734 -0.00292969 -23.6533 -4.08594 -32.7803 -10.9297l-27.5801 -20.6904c-13.75 -10.3193 -21.8496 -26.5098 -21.8496 -43.6992 +v-14.0605c0.00292969 -15.0742 6.11328 -28.7393 16 -38.6299c10.25 -10.2402 24.1396 -16 38.6299 -16h25.8799c8.55957 0 15.5 -6.94043 15.5 -15.5v-29.8896c0 -12.6504 3.0293 -24.6885 8.33008 -35.29c4.7002 -9.40039 14.3096 -15.3398 24.8203 -15.3398 +c9.63477 0.000976562 18.1133 4.89551 23.0898 12.3594l13.0293 19.5498c7.18359 10.7715 15.4854 20.4473 25 29.1602c2.4707 2.27051 4.14062 5.27051 4.76074 8.56055l4.2998 22.8301c0.439453 2.3291 1.41016 4.5293 2.83008 6.42969l18.7402 24.9795 +c2.00977 2.68066 3.09961 5.9502 3.09961 9.30078v11.3398c0 8.55957 -6.94043 15.5 -15.5 15.5h-8.20996c-5.17969 0 -10.0205 2.58984 -12.8896 6.89941l-13.2402 19.8604c-5.66992 8.50977 -1.70996 20.0703 7.99023 23.2998l2.64941 0.879883 +c1.53906 0.511719 3.20312 0.78418 4.91309 0.78418c3.17383 0 6.12695 -0.955078 8.58691 -2.59375l18.21 -12.1396c2.45801 -1.6416 5.44043 -2.59863 8.61523 -2.59863c2.48438 0 4.83301 0.585938 6.91504 1.62793l15.3896 7.7002 +c5.25 2.62012 8.57031 7.99023 8.57031 13.8604v6.92969z" /> +c1.08008 8.37988 1.82031 16.8701 1.82031 25.54c0 32.1299 -7.7998 62.4102 -21.3203 89.3301l-12.9795 -6.49023c-3.74023 -1.85938 -6.91992 -4.67969 -9.24023 -8.14941l-19.5898 -29.3809c-2.54004 -3.80371 -4.02051 -8.4209 -4.02051 -13.334 +c0 -4.91211 1.48047 -9.48145 4.02051 -13.2852l17.9795 -26.9707c3.31055 -4.96973 8.36035 -8.51953 14.1504 -9.96973z" /> +c-0.490234 -1.7002 -2.06055 -2.87988 -3.83984 -2.87988h-3.80078c-1.66211 0.000976562 -3.08691 1.01465 -3.68945 2.45996l-5.35059 12.8496c-1.23926 2.99023 -4.15918 4.93066 -7.38965 4.93066h-12.0898 +c-0.00390625 0 -0.0146484 -0.00488281 -0.0185547 -0.00488281c-1.72168 0 -3.31738 -0.545898 -4.62109 -1.47559l-23.71 -16.8896c-1.73047 -1.23047 -3.61035 -2.25977 -5.59082 -3.0498l-39.3398 -15.7402c-3.04004 -1.21973 -5.0293 -4.16016 -5.0293 -7.42969 +v-10.2002l-0.00195312 -0.00390625c0 -2.20703 0.895508 -4.20703 2.3418 -5.65625l11.9102 -11.9102c3 -3 7.06934 -4.68945 11.3096 -4.68945h10.3398c1.31055 0 2.61035 0.15918 3.87988 0.479492l21.2705 5.32031c2.08203 0.520508 4.25391 0.802734 6.49707 0.802734 +c7.38574 0 14.0771 -2.99805 18.9229 -7.84277l13.0098 -13.0098c3 -3 7.07031 -4.69043 11.3096 -4.69043h15.1602c4.24023 0 8.31055 1.69043 11.3105 4.69043l9.56934 9.56934c3 3 4.69043 7.07031 4.69043 11.3105z" /> +c-18.4697 11.9805 -28.6396 33.3701 -28.6396 55.3906v62.3096c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -6.82031 3.61035 -12.9805 9.28027 -16.7803zM360.89 95.9502c0.0371094 0 0.0556641 0.0351562 0.0927734 0.0351562 +c19.4336 0 36.8535 -8.68652 48.5879 -22.3857l117.949 -137.6h-88.4492c-19.4385 0 -36.8506 8.65137 -48.5898 22.3496l-117.801 137.431c1.40039 0.0195312 53.8105 0.109375 88.21 0.169922zM616 96c13.25 0 24 -10.7402 24 -24v-112c0 -13.25 -10.75 -24 -24 -24 +h-17.4199c-19.4375 0 -36.8506 8.65137 -48.5898 22.3496l-117.99 137.65h184z" /> +c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-139.88 -55.9502v288z" /> +c0.00292969 13.4697 8.32617 24.9932 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502c19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197 +c9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-139.88 -55.9502v288z" /> @@ -3263,11 +3567,11 @@ c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1. c0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56c0 -35.2998 28.7002 -64 64 -64z " /> +c-26.4404 -7.36035 -54.5205 -5.85059 -81 1.35938l-287.601 78.3506c-9.58496 2.61621 -18.2998 7.45605 -25.4697 13.9297z" /> +c2.41504 1.22461 5.18066 1.91504 8.07227 1.91504c2.875 0 5.59277 -0.682617 7.99805 -1.89551l72.3496 -36.4697l103.21 52.3799l-156.22 98.0996c-8.08008 8.87988 -5.5 23.1201 5.16992 28.5303l65.75 33.3701c2.41504 1.22559 5.18164 1.91699 8.07324 1.91699 +c3.67383 0 7.08984 -1.11621 9.92676 -3.02734l218.7 -82.0596l98.5098 49.9902c26.7402 13.5596 56.4297 21.4199 86.2803 19.4795c33.5098 -2.17969 51.04 -12.8799 58.25 -27.4502c7.22949 -14.5596 5.23926 -35.1699 -13.0703 -63.6494 +c-16.3096 -25.3701 -40.2803 -44.7402 -67.0205 -58.3105l-290.96 -147.649c-8.88574 -4.51562 -19.001 -7.10645 -29.6396 -7.12012l-130.54 -0.180664c-9.22949 -0.00976562 -18.0498 3.87012 -24.3301 10.7109z" /> +d="M434.66 280.29c5.77344 -5.79004 9.34473 -13.7861 9.34473 -22.5996c0 -8.81445 -3.57129 -16.8008 -9.34473 -22.5908l-210.66 -211.1v271.12l75.4297 75.5195l0.0703125 0.0703125v0c5.75781 5.73633 13.707 9.28516 22.4688 9.28516 +c8.79883 0 16.7676 -3.57715 22.5312 -9.35547l90.1602 -90.3496v0zM480 128c17.6611 0 32 -14.3389 32 -32v-128c0 -17.6611 -14.3389 -32 -32 -32h-300c2.17969 1.91016 4.62012 3.41992 6.67969 5.49023l186.41 186.51h106.91zM192 416v-384 +c0 -52.9834 -43.0166 -96 -96 -96s-96 43.0166 -96 96v384c0 17.6611 14.3389 32 32 32h128c17.6611 0 32 -14.3389 32 -32zM96 8c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24s-24 -10.7539 -24 -24s10.7539 -24 24 -24zM128 192v64h-64v-64h64zM128 320v64h-64v-64h64z +" /> +c38.6895 0 70.0498 -29.4199 70.0498 -65.71v-60.1104l32.8799 21.9199c4.4502 2.9707 7.12012 7.95996 7.12012 13.3105v170.59c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-170.59c0 -5.55273 2.81934 -10.4414 7.12012 -13.3105l32.8799 -21.9199 +v60.1104c0 36.29 31.3604 65.71 70.0498 65.71c43.9805 0 57.9307 -28.5596 80.0498 -63.1299c45.9707 -71.8701 80.3408 -149.72 102.011 -231.021z" /> +d="M128 192c70.6455 0 128 -57.3545 128 -128s-57.3545 -128 -128 -128s-128 57.3545 -128 128s57.3545 128 128 128zM507 246.86c14.2402 -24.3799 -3.58008 -54.8604 -32.0898 -54.8604h-213.82c-28.5098 0 -46.3301 30.4805 -32.0898 54.8604l106.93 182.85 +c6.48828 10.9688 18.3906 18.3311 32.0469 18.3311c13.6553 0 25.6055 -7.3623 32.0938 -18.3311zM480 160c17.6611 0 32 -14.3389 32 -32v-160c0 -17.6611 -14.3389 -32 -32 -32h-160c-17.6611 0 -32 14.3389 -32 32v160c0 17.6611 14.3389 32 32 32h160z" /> +c0 26.5 21.5 48 48 48h416zM250.58 96c11 0 18.7197 10.8496 15.1104 21.25l-53.6904 154.62c-3.25586 9.3877 -12.1758 16.1299 -22.666 16.1299h-0.00390625h-26.6602l0.00292969 0.00585938c-10.4873 0 -19.4131 -6.74219 -22.6729 -16.126l-53.7002 -154.63 +c-3.60938 -10.4004 4.11035 -21.25 15.1201 -21.25h16.9404c0.00195312 0 -0.000976562 -0.00390625 0.000976562 -0.00390625c6.99316 0 12.9453 4.49609 15.1191 10.7539l7.37988 21.25h70.29l7.36914 -21.25c2.24023 -6.42969 8.31055 -10.75 15.1201 -10.75h16.9404z +M424 112v160c0 8.83984 -7.16016 16 -16 16h-16c-8.83984 0 -16 -7.16016 -16 -16v-36.4199c-7.54004 2.68945 -15.54 4.41992 -24 4.41992c-39.7002 0 -72 -32.2998 -72 -72s32.2998 -72 72 -72c9.92969 0 19.4004 2.01953 28.0195 5.67969 +c2.94043 -3.41016 7.13086 -5.67969 11.9805 -5.67969h16c8.83984 0 16 7.16016 16 16z" /> @@ -3611,19 +3916,19 @@ c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM576 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40 c6.62988 0 12 5.37012 12 12zM576 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z" /> +d="M256 416c141.38 0 256 -93.1201 256 -208s-114.62 -208 -256 -208c-38.4102 0 -74.71 7.07031 -107.4 19.3799c-24.6094 -19.6299 -74.3398 -51.3799 -140.6 -51.3799l-0.00195312 0.00195312c-4.41309 0 -7.99512 3.58301 -7.99512 7.99512 +c0 2.13184 0.835938 4.06934 2.19727 5.50293c0.5 0.530273 42.2598 45.4502 54.8193 95.7598c-35.6094 35.7305 -57.0195 81.1807 -57.0195 130.74c0 114.88 114.62 208 256 208zM280 113.56c30.29 3.62012 53.3701 30.9805 49.3203 63.04 +c-2.90039 22.96 -20.6602 41.3105 -42.9102 47.6699l-50.0703 14.3008c-3.59961 1.0293 -6.12012 4.35938 -6.12012 8.10938c0 4.64062 3.78027 8.41992 8.44043 8.41992h32.7803c0.0214844 0 0.0634766 -0.0126953 0.0859375 -0.0126953 +c3.62891 0 7.07422 -0.790039 10.1738 -2.20703c4.7998 -2.20996 10.3701 -1.70996 14.1094 2.03027l17.5205 17.5195c5.26953 5.27051 4.66992 14.2705 -1.5498 18.3799c-9.5 6.27051 -20.3604 10.1104 -31.7803 11.46v17.7305c0 8.83984 -7.16016 16 -16 16h-16 +c-8.83984 0 -16 -7.16016 -16 -16v-17.5498c-30.29 -3.62012 -53.3701 -30.9805 -49.3203 -63.0498c2.90039 -22.96 20.6602 -41.3203 42.9102 -47.6699l50.0703 -14.3008c3.59961 -1.0293 6.12012 -4.35938 6.12012 -8.10938 +c0 -4.64062 -3.78027 -8.41992 -8.44043 -8.41992h-32.7803c-3.59961 0 -7.0791 0.759766 -10.2598 2.21973c-4.7998 2.20996 -10.3701 1.70996 -14.1094 -2.03027l-17.5205 -17.5195c-5.26953 -5.27051 -4.66992 -14.2705 1.5498 -18.3799 +c9.5 -6.27051 20.3604 -10.1104 31.7803 -11.46v-17.7305c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v17.5596z" /> +d="M464 320c26.4922 0 48 -21.5078 48 -48v-224c0 -26.4922 -21.5078 -48 -48 -48h-416c-26.4922 0 -48 21.5078 -48 48v288c0 26.4922 21.5078 48 48 48h160l64 -64h192zM359.5 152v16c0 8.83105 -7.16895 16 -16 16h-64v64c0 8.83105 -7.16895 16 -16 16h-16 +c-8.83105 0 -16 -7.16895 -16 -16v-64h-64c-8.83105 0 -16 -7.16895 -16 -16v-16c0 -8.83105 7.16895 -16 16 -16h64v-64c0 -8.83105 7.16895 -16 16 -16h16c8.83105 0 16 7.16895 16 16v64h64c8.83105 0 16 7.16895 16 16z" /> +d="M535.953 96c-42.6406 -94.1719 -137.641 -160 -247.984 -160c-4.26562 0 -8.54688 0.0986328 -12.8447 0.296875c-103.969 4.76562 -193.859 69.4688 -235.109 159.703h39.9219l-58.6094 58.5938c-2.65332 12.8242 -4.38672 25.9951 -5.10938 39.4219 +c-0.133789 3.5166 -0.202148 7.05078 -0.202148 10.5996c0 6.65527 0.234375 12.8477 0.702148 19.3848h47.2188l-41.3906 41.375c14.7842 66.6123 53.959 124.015 107.969 162.078c2.61426 1.87109 5.82812 2.98535 9.28125 3 +c5.62793 -0.03125 10.5791 -2.89355 13.5 -7.25c1.76367 -2.57422 2.7959 -5.68848 2.7959 -9.04199c0 -2.13086 -0.414062 -4.19141 -1.1709 -6.05176c-6.31445 -15.834 -9.84375 -33.1904 -9.84375 -51.2656c0 -45.1094 21.0469 -86.5781 57.7188 -113.734 +c4.07324 -2.96484 6.72266 -7.76855 6.72266 -13.1865c0 -4.86133 -2.13965 -9.2168 -5.51953 -12.2041c-26.5469 -23.9844 -41.1719 -56.5 -41.1719 -91.5781c0 -60.0312 42.9531 -110.281 99.8906 -121.922l2.5 65.2656l-27.1562 -18.4844 +c-1.29688 -0.832031 -2.83887 -1.31445 -4.49219 -1.31445c-2.10352 0 -4.04004 0.777344 -5.50781 2.06445c-1.55078 1.46387 -2.51953 3.53809 -2.51953 5.83691c0 1.49414 0.416992 2.90234 1.12891 4.10059l20.125 33.7656l-42.0625 8.73438 +c-3.64062 0.744141 -6.38379 3.96777 -6.38379 7.82812s2.74316 7.08398 6.38379 7.82812l42.0625 8.71875l-20.1094 33.7344c-0.724609 1.20312 -1.1416 2.61133 -1.1416 4.11719c0 4.41016 3.58105 7.99121 7.99121 7.99121c1.67188 0 3.22656 -0.510742 4.50977 -1.38965 +l30.3906 -20.6562l11.5166 287.969c0.15918 4.25879 3.66797 7.66699 7.96484 7.66699c0.0117188 0 0.0234375 0.00488281 0.0351562 0.00488281h0.046875c4.29004 -0.0332031 7.78418 -3.44629 7.95312 -7.70312l11.5312 -287.922l30.3906 20.6719 +c1.28223 0.855469 2.82227 1.35449 4.47852 1.35449c2.12793 0 4.07715 -0.820312 5.52148 -2.16699c1.54785 -1.45898 2.51465 -3.52832 2.51465 -5.82129c0 -1.48828 -0.415039 -2.89062 -1.12402 -4.08496l-20.1406 -33.7656l42.0781 -8.73438 +c3.63379 -0.750977 6.36914 -3.97266 6.36914 -7.82812s-2.73535 -7.07715 -6.36914 -7.82812l-42.0781 -8.71875l20.1094 -33.7344c0.730469 -1.20508 1.15039 -2.61719 1.15039 -4.12793c0 -2.27637 -0.947266 -4.33984 -2.47852 -5.79395 +c-1.46484 -1.32227 -3.4043 -2.12793 -5.53125 -2.12793c-1.6543 0 -3.20801 0.492188 -4.5 1.33105l-27.1719 18.4688l2.5 -65.3438c48.4844 9.40625 87.5781 48.1562 97.3125 96.5c1.68066 8.11816 2.56445 16.5254 2.56445 25.1387 +c0 36.5547 -15.8574 69.3145 -41.127 91.9395c-3.38867 2.98926 -5.52734 7.3623 -5.52734 12.2314c0 5.42578 2.64844 10.2256 6.73047 13.1904c36.6562 27.1719 57.6875 68.6094 57.6875 113.734v0.0859375c0 18.0664 -3.53613 35.4062 -9.85938 51.2266 +c-0.763672 1.86523 -1.18555 3.90625 -1.18555 6.0459c0 3.34668 1.0332 6.47949 2.79492 9.04785c2.9248 4.35059 7.875 7.20605 13.5 7.23438c3.44043 -0.0136719 6.64355 -1.12305 9.25 -2.98438c53.9287 -38.2227 93.0518 -95.6611 107.906 -162.281l-41.25 -41.2344 +h46.9531c0.359375 -5.76562 1.04688 -11.4531 1.04688 -17.2656c-0.0332031 -17.8086 -1.7959 -35.0137 -5.125 -51.8594l-58.8906 -58.875h39.9688z" /> +c1.67383 -1.4668 2.73047 -3.62012 2.73047 -6.01758c0 -4.41309 -3.58398 -7.99414 -7.99609 -7.99805h-0.015625c-1.97363 0.0996094 -3.79785 0.828125 -5.25 1.98438l-23.5938 20.6406c11.5469 -49.5781 55.7656 -86.625 108.859 -86.625 +s97.3125 37.0469 108.875 86.625l-23.5938 -20.6406c-1.40918 -1.22461 -3.25391 -1.96875 -5.26562 -1.96875h-0.015625c-2.34766 0.129883 -4.46777 1.14551 -6.01562 2.71875c-1.1543 1.45996 -1.88184 3.28809 -1.98438 5.26562 +c0.128906 2.35059 1.15137 4.47266 2.73438 6.01562l37.1094 32.4688c0.015625 0.53125 0.15625 1 0.15625 1.51562c0 11.0469 -2.09375 21.5156 -5.0625 31.5938l-21.2656 -21.25c-1.44922 -1.4502 -3.45117 -2.34863 -5.66211 -2.34863 +c-4.41797 0 -8.00488 3.58691 -8.00488 8.00488c0 2.20605 0.892578 4.20801 2.33887 5.65625l26.4219 26.4062c-10.0342 20.8945 -26.1904 38.0244 -46.3594 49.2656c6.05371 -9.67676 9.55469 -21.1123 9.55469 -33.3584c0 -19.916 -9.17383 -37.7295 -23.6172 -49.2822 +c9.69336 -10.0459 15.6592 -23.7119 15.6592 -38.7598c0 -26.875 -19.0703 -49.3535 -44.3779 -54.6621l-1.42188 34.2812l12.6719 -8.625c0.635742 -0.432617 1.40234 -0.685547 2.22852 -0.685547c0.00585938 0 0.015625 -0.00195312 0.0214844 -0.00195312h0.0263672 +c2.19727 0 3.98047 1.7832 3.98047 3.98047c0 0.748047 -0.209961 1.45215 -0.569336 2.05078l-8.53125 14.3125l17.9062 3.71875c1.81738 0.379883 3.18457 1.99219 3.18457 3.92188s-1.36719 3.54199 -3.18457 3.92188l-17.9062 3.71875l8.53125 14.3125 +c0.359375 0.598633 0.566406 1.29883 0.566406 2.04688c0 2.19629 -1.7832 3.98047 -3.98047 3.98047c-0.00878906 0 -0.0146484 0.00390625 -0.0234375 0.00390625c-0.817383 -0.0322266 -1.58984 -0.275391 -2.25 -0.671875l-14.1875 -9.65625l-4.6875 112.297 +c-0.09375 2.12695 -1.84961 3.8252 -4 3.8252s-3.90625 -1.69824 -4 -3.8252l-4.625 -110.812l-12 8.15625c-0.639648 0.43457 -1.41211 0.688477 -2.24316 0.688477c-2.20996 0 -4.00293 -1.79395 -4.00293 -4.00391c0 -0.745117 0.203125 -1.44629 0.558594 -2.04395 +l8.53125 -14.3125l-17.9062 -3.71875c-1.81738 -0.375977 -3.18457 -1.98633 -3.18457 -3.91406s1.36719 -3.53809 3.18457 -3.91406l17.9062 -3.73438l-8.53125 -14.2969c-0.330078 -0.611328 -0.532227 -1.31152 -0.5625 -2.04688 +c0.0615234 -1.12109 0.525391 -2.14062 1.25 -2.90625c0.717773 -0.677734 1.68652 -1.09277 2.75 -1.09375c0.830078 0.00390625 1.60645 0.257812 2.25 0.6875l10.3594 7.04688l-1.35938 -32.7188c-25.3086 5.31836 -44.335 27.79 -44.335 54.6709 +c0 15.0518 5.92285 28.7324 15.6162 38.7822c-14.4434 11.5508 -23.7012 29.3193 -23.7012 49.2334c0 12.2559 3.59082 23.7412 9.6543 33.4229c-20.1709 -11.2451 -36.3311 -28.374 -46.375 -49.2656l26.4219 -26.4219c1.43945 -1.44727 2.33008 -3.44043 2.33008 -5.64062 +c0 -4.41504 -3.58496 -8 -7.99902 -8c-2.2002 0 -4.19629 0.888672 -5.64355 2.32812l-21.2656 21.2656c-2.98438 -10.0938 -5.07812 -20.5625 -5.0625 -31.625z" /> +c-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.28027 5.01953 -9.11035 10.1104 -7.7207l96 26.1807c3.47949 0.950195 5.88965 4.10938 5.88965 7.71973zM448 234.47v-16.5801c0 -0.00195312 0.00195312 -0.00195312 0.00195312 -0.00390625 +c0 -3.68359 2.49609 -6.78906 5.8877 -7.71582l80 -21.8203c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5801c0 3.60938 -2.41016 6.76953 -5.88965 7.71973l-80 21.8203c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.7207zM304 273.74v-16.5801 +c0 -0.00195312 0.00195312 -0.00292969 0.00195312 -0.00488281c0 -3.68359 2.49609 -6.78906 5.8877 -7.71484l96 -26.1807c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5791c0 3.61035 -2.41016 6.77051 -5.88965 7.7207l-96 26.1797 +c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.71973z" /> +d="M501.62 355.89c6.24023 -2.33984 10.3799 -8.30957 10.3799 -14.9795v-36.9102c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v36.9102c0.000976562 6.85547 4.31445 12.7041 10.3799 14.9795l234.39 90.0703 +c3.49219 1.31152 7.30176 2.02832 11.25 2.02832c3.94727 0 7.72852 -0.716797 11.2207 -2.02832zM64 256h64v-160h96v160h64v-160h96v160h64v-160h16c8.83984 0 16 -7.16016 16 -16v-48h-448v48c0 8.83984 7.16016 16 16 16h16v160zM496 0c8.83984 0 16 -7.16016 16 -16 +v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z" /> +d="M272 256.09c17.5996 0 32 -14.3994 32 -32v-128c0 -51.8896 -34.8398 -98.0801 -84.75 -112.35l-179.19 -46.6201c-2.64941 -0.69043 -5.36914 -1.03027 -8.05957 -1.03027c-23.4805 0 -32 21.1797 -32 32v96 +c0 0.00390625 -0.00488281 -0.000976562 -0.00488281 0.00292969c0 14.1221 9.1748 26.1182 21.8848 30.3477l90.1201 30.04v80.2295c0 18.9805 5.55957 37.3896 16.1201 53.2305l117.26 175.899c0.169922 0.270508 0.589844 0.25 0.790039 0.480469 +c9.58008 13.5098 27.8496 17.8799 42.2998 9.20996c15.1602 -9.10059 20.0605 -28.75 10.9707 -43.9102l-77.75 -129.59c-8.9707 -14.9199 -13.6904 -32 -13.6904 -49.3906v-76.5498c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v80c0 17.6006 14.4004 32 32 32z +M618.12 94.3604c13.0703 -4.36035 21.8799 -16.5801 21.8799 -30.3506v-96c0 -10.8193 -8.51953 -32 -32 -32c-2.67969 0 -5.40039 0.339844 -8.05957 1.03027l-179.19 46.6201c-49.9102 14.2598 -84.75 60.4502 -84.75 112.34v128c0 17.5996 14.4004 32 32 32 +s32 -14.4004 32 -32v-80c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v76.5498c0 17.3906 -4.71973 34.4697 -13.6904 49.3906l-77.75 129.59c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102c14.4502 8.66992 32.7197 4.2998 42.2998 -9.20996 +c0.200195 -0.240234 0.610352 -0.210938 0.790039 -0.480469l117.26 -175.89c10.5605 -15.8408 16.1201 -34.25 16.1201 -53.2305v-80.2295z" /> +c-52.3096 0 -94.8594 42.5596 -94.8594 94.8594c0 52.3105 42.5498 94.8604 94.8594 94.8604c1.04004 0 3.45996 -0.209961 4.13086 -0.209961c0.738281 -0.276367 1.54004 -0.429688 2.375 -0.429688c3.73926 0 6.77441 3.03516 6.77441 6.77441 +c0 3.7373 -3.0332 6.77246 -6.76953 6.77539c-13.1201 4.91992 -26.71 7.41016 -40.3799 7.41016zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z" /> +v-208c0 -41.8877 -20.0566 -79.043 -51.2002 -102.4l-115.2 -86.3994c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.1699 16.75 -83.4199 48.3301c-24.6504 42.6396 -10.1904 97.5 29.21 127.06z" /> +c0 13.2598 10.75 24 24 24h81.4697c12.0801 -0.00292969 22.584 -6.67871 28.0303 -16.5703l58.4102 -106.1l84.79 322.8c3.68945 14.0703 16.4102 23.8701 30.9502 23.8701h244.35z" /> +l18.46 -30.8203h-36.8496zM382.45 136.5l18.4102 30.7998l18.4492 -30.7998h-36.8594zM128 -16v416h384v-416h-384zM194.77 262.13c-1.7627 -3.04492 -2.77148 -6.62402 -2.77148 -10.3936c0 -3.92969 1.09668 -7.60547 3.00195 -10.7363l29.3604 -49l-29.21 -48.8398 +c-1.91211 -3.17578 -3.02637 -6.91699 -3.02637 -10.8906c0 -11.6504 9.45898 -21.1094 21.1104 -21.1094h0.015625h59.5l29.25 -48.8799c3.61816 -6.12793 10.2754 -10.2207 17.9004 -10.2207h0.0996094c7.7373 0.0166016 14.4912 4.17676 18.1602 10.4004l29.1299 48.7002 +h59.4697c0.0078125 0 0.00195312 -0.0224609 0.00878906 -0.0224609c7.90723 0 14.8115 4.32812 18.4717 10.7422c1.75879 3.04199 2.76562 6.61621 2.76562 10.3799c0 3.93164 -1.09863 7.6084 -3.00586 10.7402l-29.3701 49l29.2402 48.8496 +c1.90723 3.17383 3.01758 6.91113 3.01758 10.8809c0 11.6553 -9.46191 21.1182 -21.1182 21.1191h-59.5195l-29.25 48.8604c-3.6123 6.12207 -10.2617 10.21 -17.8779 10.21h-0.0722656c-0.0117188 0 -0.00976562 0.0224609 -0.0214844 0.0224609 +c-7.74316 0 -14.5186 -4.17383 -18.1982 -10.3926l-29.1299 -48.71h-59.4502c-0.015625 0 -0.0166016 0.0224609 -0.0322266 0.0224609c-7.89844 0 -14.7939 -4.32422 -18.4482 -10.7324zM592 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32 +s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM320 302.47l17.6797 -29.6201h-35.46zM257.55 247.47l-18.3701 -30.7998l-18.4395 30.7998h36.8096zM287.13 136.47l-33.2295 55.5303l33.1699 55.5195h65.79l33.2295 -55.5195l-33.1699 -55.5303h-65.79z" /> +d="M298.06 224l149.94 -53.5498v-218.45c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v112h-160v-112c0 -8.83105 -7.16895 -16 -16 -16h-64c-8.83105 0 -16 7.16895 -16 16v213.91c-37.1602 13.25 -64 48.4297 -64 90.0898 +c0 17.6611 14.3389 32 32 32s32 -14.3389 32 -32c0.0332031 -17.6455 14.3545 -31.9668 32 -32h170.06zM544 336v-32c0 -35.3223 -28.6777 -64 -64 -64h-32v-35.5801l-128 45.71v149.87c0 14.25 17.2197 21.3896 27.3096 11.3096l27.2803 -27.3096h53.6299 +c10.9102 0 23.75 -7.91992 28.6201 -17.6904l7.16016 -14.3096h64c8.83105 0 16 -7.16895 16 -16zM432 336c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16s7.16895 -16 16 -16s16 7.16895 16 16z" /> +c10.0703 0 19.5498 -4.7002 25.6006 -12.7598l74.5293 -99.3799c4.00781 -5.3457 6.37988 -12.042 6.37988 -19.2305c0 -5.12988 -1.20996 -9.98047 -3.35938 -14.2803l-14.3105 -28.6191c-5.25 -10.502 -16.0889 -17.6895 -28.6191 -17.6904h-30.9707 +c-8.48926 0 -16.6299 3.37012 -22.6299 9.37012l-28.0898 22.6299h-64v-36.6904c0.00195312 -18.791 10.7812 -35.0459 26.5303 -42.9199zM489.18 381.75c-4.33008 -17.1396 8.56055 -28.96 21.5205 -29.6699c11.6602 -0.629883 21.3799 7.34961 24.1299 18.2598z" /> +d="M462.8 398.43c34.3203 -34.2793 50.4307 -79.5996 49.1299 -124.56c-41.9795 22.6602 -94.3594 17.5596 -128.739 -16.7998c-40.8809 -40.8398 -40.6904 -107.181 -1.05078 -151.07c-18.9736 -6.45312 -39.3203 -10.0049 -60.4648 -10.0049 +c-0.475586 0 -0.950195 0.000976562 -1.4248 0.00488281h-85.8896l-40.6104 -40.5596c-9.71973 -9.75 -11.0898 -24.0205 -6 -36.75c2.77051 -6.92383 4.3125 -14.5234 4.3125 -22.4316c0 -33.3086 -27.042 -60.3506 -60.3496 -60.3506 +c-16.7041 0 -31.8311 6.80078 -42.7627 17.7822c-15.2803 15.2695 -19.6006 36.5 -15.1006 56.0996c-19.6094 -4.49023 -40.8496 -0.179688 -56.1191 15.0703c-10.9395 10.9229 -17.668 26.002 -17.668 42.666c0 33.2979 27.0332 60.3301 60.3301 60.3301 +c7.88965 0 15.4277 -1.51758 22.3379 -4.27637c12.7793 -5.07031 27.0791 -3.69043 36.7793 6l40.6201 40.5898v85.8301c0 64 27.6904 107 63.1699 142.43c30.666 30.6338 73.0479 49.5889 119.774 49.5889s89.0605 -18.9551 119.726 -49.5889z" /> @@ -3957,10 +4264,10 @@ c0 -4.41992 3.58008 -8 8 -8h12.2695zM256 184c0 4.41992 -3.58008 8 -8 8h-16c-4.41 c23.4004 25.1992 36.2803 58.6094 36.2803 94.0898v20.7998c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -20.2705 -5.7002 -40.1807 -16 -56.8799c-10.2998 16.71 -16 36.6094 -16 56.8799v20.7998zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004 v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z" /> @@ -3984,14 +4291,14 @@ M176 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 - c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM400 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM464 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301 s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM528 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z" /> +d="M496 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480zM192 64l16 -32h-144l110.96 249.66c11.1211 25.0264 29.8379 45.6514 53.46 59.1494l187.58 107.19l-56.2998 -168.92 +c-2.12207 -6.35938 -3.25781 -13.2188 -3.25781 -20.2881c0 -8.93164 1.83496 -17.4375 5.14746 -25.1621l86.4102 -201.63h-208l16 32l64 32l-64 32l-32 64l-32 -64l-64 -32zM256 288l-32 -16l32 -16l16 -32l16 32l32 16l-32 16l-16 32z" /> +d="M575.92 371.4l0.0605469 -77.71c0 -0.0107422 0.0185547 -0.00683594 0.0185547 -0.0166016c0 -13.4707 -8.34277 -25.0088 -20.1387 -29.7236l-32.5508 -13.0205c-15.4395 -6.17969 -33.04 0.5 -40.4893 15.3701l-18.9004 37.7002l-16 7.11035v-102.471 +c0.00976562 -0.219727 0.0800781 -0.419922 0.0800781 -0.639648c0 -30.4697 -12.2598 -58.0303 -32 -78.2197v-177.78c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v150.4l-133.97 22.3301l-23.8398 -63.5908l26.3096 -105.26 +c2.53027 -10.0996 -5.11035 -19.8799 -15.5195 -19.8799h-65.9609c-7.48633 0 -13.7783 5.16602 -15.5098 12.1201l-24.8496 99.4102c-1.24707 4.98047 -1.8916 10.1924 -1.8916 15.5576c0 7.8916 1.43262 15.4502 4.05176 22.4316l25.7197 68.6006 +c-18.7002 17.5195 -30.54 42.2402 -30.54 69.8799c0 2.62988 0.570312 5.09961 0.780273 7.67969c-9.91016 -7.29004 -16.7803 -18.46 -16.7803 -31.6797v-56c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v56c0 48.5303 39.4697 88 88 88v-1.11035 +c17.5996 20.1299 43.1602 33.1104 72 33.1104h159.92c0 70.6904 57.3105 128 128 128h119.98c5.05957 0 8.94922 -4.67969 7.92969 -9.63965c-2.67969 -13.1699 -11.1201 -23.8203 -22.1797 -30.6602c5.10938 -5.37988 9.90918 -10.4697 13.6895 -14.5 +c5.56055 -5.93066 8.57031 -13.6699 8.58008 -21.7998zM511.92 352c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z" /> +d="M634.92 -14.7002c3.2041 -4.98145 5.06348 -10.9756 5.06348 -17.334c0 -5.53906 -1.41113 -10.751 -3.89355 -15.2959c-5.60938 -10.2803 -16.3799 -16.6699 -28.0898 -16.6699h-576c-12.1191 0 -22.6582 6.7168 -28.0898 16.6602 +c-2.48242 4.5459 -3.89355 9.82715 -3.89355 15.3672c0 6.36035 1.85938 12.2891 5.06348 17.2725l288 448c5.88965 9.16016 16.0303 14.7002 26.9199 14.7002s21.0303 -5.54004 26.9199 -14.7002zM320 356.82l-102.06 -158.761l38.0596 -38.0596l64 64h85.3896z" /> +c-4.91016 28.1201 5 54.2197 23.1904 71.7998c23.5596 22.75 39.5596 52.1396 39.5596 84.8896v1.61035c0 106.04 85.96 192 192 192h56l153.25 87.5703c9.66992 5.51953 20.6104 8.42969 31.75 8.42969h20.4902c0.00390625 0 0.0166016 0.00878906 0.0214844 0.00878906 +c17.6602 0 33.6582 -7.17188 45.2383 -18.7588l13.25 -13.25h32zM512 400c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16s16 7.16016 16 16s-7.16016 16 -16 16zM544 304c20.8301 0 38.4297 13.4199 45.0498 32h-77.0498l-118.57 -59.29l13.7705 -27.5498 +l101.84 54.8398h34.96z" /> +c0 0.00292969 0.0205078 0.0400391 0.0205078 0.0439453c0 6.20898 1.77246 12.0078 4.83984 16.916l60.8301 97.3301h-47.0605l-48 -72c-4.89941 -7.35059 -14.8398 -9.33984 -22.1895 -4.44043l-13.3105 8.87988c-7.36035 4.90039 -9.33984 14.8398 -4.43945 22.1904 +l52.7393 79.1299c5.74121 8.60547 15.5186 14.248 26.6299 14.25h77.9404l-68.9902 24.3496c-6.81738 2.27441 -12.5947 6.74023 -16.5098 12.6104l-53.5996 80.4102c-4.90039 7.36035 -2.91016 17.29 4.43945 22.1895l13.3105 8.88086 +c7.35938 4.89941 17.29 2.90918 22.1895 -4.44043l50.5703 -75.8301l60.4902 -20.1699h36.0996l10.3701 51.8496c2.18945 10.9707 17.3701 60.1504 69.6299 60.1504s67.4404 -49.1797 69.6299 -60.1504l10.3701 -51.8496h36.0996l60.5 20.1699l50.5605 75.8301 +c4.89941 7.34961 14.8398 9.33984 22.1895 4.44043l13.3105 -8.88086c7.34961 -4.89941 9.33984 -14.8398 4.43945 -22.1895l-53.5996 -80.4102c-3.91504 -5.87012 -9.69238 -10.3359 -16.5098 -12.6104l-68.9902 -24.3594h77.9404 +c11.1084 -0.00292969 20.8828 -5.64453 26.6191 -14.25zM406.09 350.49l-23.7998 71.3896c-2.79004 8.37988 1.74023 17.4404 10.1201 20.2402l15.1699 5.05957c8.37988 2.80078 17.4502 -1.73926 20.2402 -10.1201l25.8896 -77.6797 +c1.06152 -3.18164 1.62598 -6.62109 1.62598 -10.1582c0 -5.12695 -1.20801 -9.97461 -3.35547 -14.2715l-27.1504 -54.2998l-25.9297 -8.65039h-4.66992l-5.2207 26.1201c-0.719727 3.58008 -1.7998 7.58008 -3.20996 11.79z" /> +c-8.58984 8.58984 -8.58984 22.5195 0 31.1104l31.1104 31.1094c7.92969 7.93066 20.2598 8.2002 28.8896 1.4707v146.52c0 26.4697 21.5303 48 48 48h133.45c0.015625 0 0.00878906 0.0341797 0.0244141 0.0341797c19.7969 0 36.8047 -12.0312 44.1055 -29.1738 +l56.0898 -130.86h102.33v40.2002c0 29.9902 10.5801 58.8994 29.5 81.7197c6.37988 7.7002 18.04 8.23047 24.7002 0.780273l21.6299 -24.1699c4.87012 -5.43066 5.74023 -13.6904 1.32031 -19.4902c-8.4502 -11.0801 -13.1504 -24.7197 -13.1504 -38.8398v-40.2002h64z +M176 32c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM198 288h110.04l-41.1504 96h-106.89v-96h38z" /> +d="M511.328 427.197c-11.6074 -38.7021 -34.3076 -111.702 -61.3037 -187.701c6.99902 -2.09375 13.4043 -4 18.6074 -5.59277c6.58301 -2.00684 11.3779 -8.13184 11.3779 -15.3672c0 -2.71875 -0.685547 -5.29395 -1.87988 -7.53906 +c-22.1055 -42.2969 -82.6904 -152.795 -142.479 -214.403c-0.999023 -1.09375 -1.99902 -2.5 -2.99902 -3.5c-35.2676 -35.2773 -83.9824 -57.1094 -137.757 -57.1094c-107.53 0 -194.83 87.2998 -194.83 194.83c0 53.7559 21.7637 102.511 57.0195 137.775 +c1 1 2.40625 2 3.49902 3c61.6006 59.9053 171.975 120.405 214.374 142.498c2.24512 1.19434 4.80664 1.87109 7.52441 1.87109c7.23535 0 13.374 -4.78711 15.3779 -11.3711c1.59375 -5.09375 3.5 -11.5928 5.59277 -18.5928 +c75.8955 26.999 148.978 49.7021 187.675 61.2959c1.4834 0.448242 3.05664 0.689453 4.68652 0.689453c8.93164 0 16.1826 -7.25098 16.1826 -16.1826c0 -1.59961 -0.236328 -3.14062 -0.668945 -4.60059zM319.951 127.998 +c-0.00976562 70.626 -57.3525 127.962 -127.98 127.962c-70.6348 0 -127.98 -57.3457 -127.98 -127.98c0 -70.6338 57.3457 -127.979 127.98 -127.979c70.6318 0 127.976 57.3438 127.976 127.976c0 0.0078125 0.00488281 0.0146484 0.00488281 0.0224609zM191.971 159.997 +c-0.00292969 -17.6562 -14.3379 -31.9902 -31.9951 -31.9902c-17.6582 0 -31.9951 14.3369 -31.9951 31.9951c0 17.6592 14.3369 31.9951 31.9951 31.9951h0.0371094c17.6387 0 31.959 -14.3203 31.959 -31.959 +c0 -0.0136719 -0.000976562 -0.0263672 -0.000976562 -0.0410156v0zM223.966 79.998c-0.000976562 -8.82812 -7.16895 -15.9951 -15.998 -15.9951s-15.9971 7.16895 -15.9971 15.998s7.16797 15.9971 15.9971 15.9971c8.81738 -0.0283203 15.9707 -7.18262 15.998 -16v0z +" /> d="M96 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-480zM224 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32 c8.7998 0 16 -7.2002 16 -16v-480z" /> +d="M502.63 409c5.77344 -5.79004 9.34473 -13.7852 9.34473 -22.5996c0 -8.8291 -3.58398 -16.8281 -9.375 -22.6201l-46.3301 -46.3203c-3.82617 -3.83691 -8.53223 -6.78125 -13.7891 -8.53027l-36.4805 -12.1602l-76.2402 -76.2393 +c8.79004 -12.2002 15.7705 -25.5605 19.1602 -40.2002c7.74023 -33.3896 0.870117 -66.8701 -22 -89.75c-9.26367 -9.2207 -20.71 -16.2314 -33.4795 -20.25c-18.54 -6.00977 -32.6709 -23.29 -34.4307 -42.1396c-2.29004 -23.8105 -11.4502 -45.8301 -28.4502 -62.71 +c-45.5596 -45.4805 -127.5 -37.3809 -182.979 18.0693c-55.4805 55.4502 -63.6904 137.45 -18.0498 182.96c16.8799 16.9902 38.9102 26.1699 62.6094 28.4404c18.9404 1.76953 36.1504 15.8994 42.1504 34.46c4.01172 12.7686 11.0195 24.2119 20.2402 33.4697 +c22.8799 22.8799 56.4297 29.7803 89.8799 22c14.5996 -3.39941 27.9395 -10.3799 40.0996 -19.1396l76.2598 76.2598l12.1602 36.5098c1.74902 5.25781 4.69336 9.96387 8.53027 13.79l46.2803 46.3301c5.79199 5.79395 13.8018 9.37988 22.6338 9.37988 +s16.833 -3.58594 22.626 -9.37988zM208 96c26.4922 0 48 21.5078 48 48s-21.5078 48 -48 48s-48 -21.5078 -48 -48s21.5078 -48 48 -48z" /> @@ -4387,20 +4696,21 @@ c14.2998 -1.2002 26.5 -10.7002 29.7998 -24.2002zM336 448c8.7998 0 16 -7.2002 16 c0 -13.2998 -10.7002 -24 -24 -24h-8v-136c0 -13.2998 -10.7002 -24 -24 -24h-80c-13.2998 0 -24 10.7002 -24 24v136h-8c-13.2998 0 -24 10.7002 -24 24v136c0 25.0996 19.2998 45.5 43.9004 47.5996c15 -9.7998 32.8994 -15.5996 52.0996 -15.5996 s37.0996 5.7998 52.0996 15.5996z" /> +d="M502.609 137.958l-96.7041 -96.7168c-5.76758 -5.74707 -13.7207 -9.30176 -22.499 -9.30176c-8.77734 0 -16.7402 3.55469 -22.5078 9.30176l-80.3262 80.418l-9.89258 -9.9082c10.8848 -23.9746 16.9482 -50.5957 16.9482 -78.6221 +c0 -32.3584 -8.10156 -63.1982 -22.3555 -89.9004c-4.50098 -8.50098 -16.3936 -9.59473 -23.207 -2.79785l-107.519 107.515l-17.7998 -17.7988c0.703125 -2.60938 1.60938 -5.00098 1.60938 -7.79785c0 -17.6641 -14.3408 -32.0059 -32.0049 -32.0059 +s-32.0059 14.3418 -32.0059 32.0059s14.3418 32.0039 32.0059 32.0039c2.79688 0 5.18848 -0.90625 7.79785 -1.60938l17.7998 17.7998l-107.518 107.515c-6.79883 6.8125 -5.7041 18.6113 2.79688 23.2061c26.7031 14.2539 57.1895 22.3359 89.5479 22.3359 +c28.0273 0 55.0049 -6.04395 78.9805 -16.9297l9.79883 9.79883l-80.3105 80.417c-5.74609 5.78613 -9.29785 13.7539 -9.29785 22.5449s3.55176 16.7686 9.29785 22.5547l96.7197 96.7168c5.72754 5.74512 13.6484 9.30273 22.3945 9.30273 +c0.0351562 0 0.0732422 -0.00488281 0.109375 -0.00488281h0.0458984c8.79199 0 16.7656 -3.5498 22.5518 -9.29785l80.3262 -80.3076l47.8047 47.8965c6.08301 6.07715 14.4805 9.83789 23.749 9.83789c9.26953 0 17.6768 -3.76074 23.7588 -9.83789l47.5088 -47.5059 +c6.07031 -6.08594 9.82617 -14.4824 9.82617 -23.749s-3.75586 -17.6719 -9.82617 -23.7578l-47.8057 -47.8975l80.3105 -80.417c5.73633 -5.75195 9.28516 -13.6865 9.28516 -22.4434c0 -8.81348 -3.59277 -16.8018 -9.39453 -22.5625zM219.562 250.567l73.8252 73.8223 +l-68.918 68.8994l-73.8096 -73.8066zM457.305 160.461l-68.9023 68.916l-73.8242 -73.8232l68.918 -68.8994z" /> +c-0.6875 2.60938 -1.59375 5.00098 -1.59375 7.81348c0 17.6631 14.3398 32.0039 32.0039 32.0039c17.6631 0 32.0039 -14.3408 32.0039 -32.0039c0 -17.6641 -14.3408 -32.0039 -32.0039 -32.0039c-2.79785 0 -5.2041 0.890625 -7.79785 1.59375l-27.4102 -27.4102z +M511.976 144.933c0.0175781 -0.301758 0.0253906 -0.605469 0.0253906 -0.912109c0 -8.86133 -7.1748 -16.0488 -16.0273 -16.0898h-32.1133c-8.46289 0.0244141 -15.3867 6.65918 -15.8926 15.002c-7.50098 129.519 -111.515 234.533 -240.937 241.534 +c-8.34863 0.444336 -14.9902 7.36426 -14.9902 15.8223c0 0.0292969 -0.0126953 0.0566406 -0.0117188 0.0859375v31.5986c0.0361328 8.85156 7.2334 16.0264 16.0938 16.0264c0.308594 0 0.603516 -0.00683594 0.908203 -0.0244141 +c163.224 -8.59473 294.443 -139.816 302.944 -303.043zM415.964 145.229c0.0244141 -0.364258 0.0371094 -0.732422 0.0371094 -1.10254c0 -8.92578 -7.23145 -16.1621 -16.1484 -16.1963h-32.208c-8.34961 0.0605469 -15.1953 6.51953 -15.8926 14.7051 +c-6.90625 77.0107 -68.1172 138.91 -144.924 145.224c-8.25781 0.592773 -14.7959 7.48633 -14.7988 15.8926v32.1143v0.00390625c0 8.9043 7.22949 16.1338 16.1338 16.1338c0.396484 0 0.775391 -0.0136719 1.16504 -0.0419922 +c110.123 -8.50098 198.229 -96.6074 206.636 -206.732z" /> +c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 280v-48c0 -4.41504 3.58496 -8 8 -8h56v-56c0 -4.41504 3.58496 -8 8 -8h48c4.41504 0 8 3.58496 8 8v56h56c4.41504 0 8 3.58496 8 8v48c0 4.41504 -3.58496 8 -8 8h-56v56 +c0 4.41504 -3.58496 8 -8 8h-48c-4.41504 0 -8 -3.58496 -8 -8v-56h-56c-4.41504 0 -8 -3.58496 -8 -8zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z" /> +d="M0 160h512v-160c0 -17.6611 -14.3389 -32 -32 -32h-448c-17.6611 0 -32 14.3389 -32 32v160zM299.83 416c118.17 -6.2002 212.17 -104.11 212.17 -224h-512l278.7 217c5.47656 4.38477 12.4277 7.02051 19.9814 7.02051 +c0.384766 0 0.767578 -0.00683594 1.14844 -0.0205078z" /> +d="M288 333l218.74 -192.9c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM384 72v48c0 4.41504 -3.58496 8 -8 8h-56v56 +c0 4.41504 -3.58496 8 -8 8h-48c-4.41504 0 -8 -3.58496 -8 -8v-56h-56c-4.41504 0 -8 -3.58496 -8 -8v-48c0 -4.41504 3.58496 -8 8 -8h56v-56c0 -4.41504 3.58496 -8 8 -8h48c4.41504 0 8 3.58496 8 8v56h56c4.41504 0 8 3.58496 8 8zM570.69 211.72 +c3.2627 -2.92969 5.30762 -7.18555 5.30762 -11.9121c0 -4.10156 -1.54688 -7.84473 -4.08789 -10.6777l-21.4004 -23.8203c-2.92969 -3.2627 -7.18457 -5.30762 -11.9111 -5.30762c-4.10742 0 -7.85449 1.55078 -10.6885 4.09766l-229.32 202.271 +c-2.82031 2.48828 -6.53906 3.99902 -10.5928 3.99902c-4.05273 0 -7.75684 -1.51074 -10.5771 -3.99902l-229.32 -202.28c-2.83398 -2.54688 -6.58594 -4.10645 -10.6924 -4.10645c-4.72656 0 -8.97754 2.05371 -11.9072 5.31641l-21.4102 23.8203 +c-2.54688 2.83398 -4.10645 6.58594 -4.10645 10.6934c0 4.72559 2.05371 8.97656 5.31641 11.9062l256 226c7.06934 6.3916 16.4707 10.2852 26.7412 10.2852c10.2715 0 19.6396 -3.89355 26.709 -10.2852z" /> +d="M256 416c141.39 0 256 -93.1201 256 -208s-114.61 -208 -256 -208c-0.161133 0 -0.446289 0.107422 -0.606445 0.107422c-37.5674 0 -73.5547 6.81445 -106.794 19.2725c-24.5996 -19.6299 -74.3398 -51.3799 -140.6 -51.3799 +c-4.41113 0.00488281 -7.99023 3.58984 -7.99023 8.00195c0 2.12891 0.833008 4.06445 2.19043 5.49805c0.5 0.5 42.2598 45.4502 54.7998 95.7598c-35.5898 35.7402 -57 81.1807 -57 130.74c0 114.88 114.62 208 256 208zM352 184v48c0 4.41504 -3.58496 8 -8 8h-56v56 +c0 4.41504 -3.58496 8 -8 8h-48c-4.41504 0 -8 -3.58496 -8 -8v-56h-56c-4.41504 0 -8 -3.58496 -8 -8v-48c0 -4.41504 3.58496 -8 8 -8h56v-56c0 -4.41504 3.58496 -8 8 -8h48c4.41504 0 8 3.58496 8 8v56h56c4.41504 0 8 3.58496 8 8z" /> +d="M507.31 262.29c2.87109 -2.89258 4.64551 -6.87891 4.64551 -11.2725c0 -4.42285 -1.79883 -8.42969 -4.70508 -11.3271l-22.6201 -22.6309c-2.89648 -2.89648 -6.90137 -4.68945 -11.3174 -4.68945s-8.41602 1.79297 -11.3125 4.68945l-181 181 +c-2.89648 2.89648 -4.68945 6.90137 -4.68945 11.3174s1.79297 8.41699 4.68945 11.3135l22.6904 22.5996c2.89551 2.89355 6.89844 4.68457 11.3115 4.68457c4.41406 0 8.41211 -1.79102 11.3076 -4.68457zM327.77 195.88l55.1006 55.1201l45.25 -45.2695l-109.68 -109.681 +c-12.4922 -12.4961 -28.4805 -21.5479 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.89648 -2.89746 -6.90137 -4.69043 -11.3174 -4.69043s-8.41699 1.79297 -11.3135 4.69043l-22.6191 22.6191c-2.89746 2.89648 -4.69043 6.90137 -4.69043 11.3174 +s1.79297 8.41699 4.69043 11.3135l102 102l27.7393 120.26c4.11816 17.8066 13.1738 33.7939 25.6699 46.29l109.671 109.67l45.25 -45.25l-55.1006 -55.1006zM273.2 141.31l9.30957 9.31055l-67.8896 67.8896l-9.31055 -9.30957 +c-4.16113 -4.17676 -7.17969 -9.51074 -8.55957 -15.4502l-18.2998 -79.2998l79.2998 18.3193c5.94238 1.36328 11.2783 4.37695 15.4502 8.54004z" /> +c20.6602 -1.62012 40.9404 5.59961 54.2002 19.3096l46.0898 47.7207c33.4297 34.5098 98.4199 21.1494 110 -22.6201l16 -60.4502c4.60059 -17.3906 18.8604 -31.71 38.1406 -38.3105zM160 192c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32 +s14.3389 -32 32 -32zM288 96c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM304 224c8.83105 0 16 7.16895 16 16s-7.16895 16 -16 16s-16 -7.16895 -16 -16s7.16895 -16 16 -16z" /> +d="M464 192c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48h-416c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48h416zM480 64c8.83105 0 16 -7.16895 16 -16v-16c0 -35.3223 -28.6777 -64 -64 -64h-352c-35.3223 0 -64 28.6777 -64 64v16 +c0 8.83105 7.16895 16 16 16h448zM58.6396 224c-34.5693 0 -54.6396 43.9102 -34.8193 75.8896c40.1797 64.9102 128.64 116.011 232.18 116.11c103.55 -0.0996094 192 -51.2002 232.18 -116.12c19.8008 -31.9795 -0.25 -75.8799 -34.8193 -75.8799h-394.721zM384 336 +c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16s16 7.16895 16 16s-7.16895 16 -16 16zM256 368c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16s16 7.16895 16 16s-7.16895 16 -16 16zM128 336c-8.83105 0 -16 -7.16895 -16 -16s7.16895 -16 16 -16 +s16 7.16895 16 16s-7.16895 16 -16 16z" /> +d="M479.93 130.88l0.0703125 -82.8799c0 -61.7979 -50.1592 -111.973 -111.95 -112h-215c-30.9053 0.00292969 -58.9189 12.5361 -79.1895 32.8096l-30.9307 30.9307c-6.75488 6.75391 -10.9297 16.0928 -10.9297 26.3896v73.4697 +c0 14.6221 8.38574 27.2734 20.6396 33.4004l27.3604 15v-76c0 -4.41504 3.58496 -8 8 -8s8 3.58496 8 8v147.04c0 15.2598 12.8701 28.3799 30.8701 31.3799l30.6797 5.12012c17.8203 2.96973 34.4502 -8.38965 34.4502 -23.54v-32c0 -4.41504 3.58496 -8 8 -8 +s8 3.58496 8 8v200c0 0.0078125 -0.0244141 0.015625 -0.0244141 0.0234375c0 26.4912 21.5078 48 48 48c0.50293 0 1.00488 -0.0078125 1.50488 -0.0234375c26.2695 -0.799805 46.5195 -23.7197 46.5195 -50v-198c0 -4.41504 3.58496 -8 8 -8s8 3.58496 8 8v32 +c0 15.1396 16.6299 26.5 34.4502 23.5303l38.3994 -6.40039c13.46 -2.25 23.1504 -12.0996 23.1504 -23.54v-49.5898l35.6504 -8.92969c16.2188 -4.05371 28.2676 -18.7256 28.2793 -36.1904z" /> +d="M480 160v-64h-448v64c0 80.25 49.2803 148.92 119.19 177.62l40.8096 -81.6201v112c0 8.83105 7.16895 16 16 16h96c8.83105 0 16 -7.16895 16 -16v-112l40.8096 81.6201c69.9102 -28.7002 119.19 -97.3701 119.19 -177.62zM496 64c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-480c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h480z" /> +d="M480 128c-52.9834 0 -96 43.0166 -96 96s43.0166 96 96 96s96 -43.0166 96 -96s-43.0166 -96 -96 -96zM528 96c61.8145 0 112.002 -50.1738 112.002 -111.988c0 -0.210938 -0.000976562 -0.420898 -0.00195312 -0.631836 +c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.000976562 0.210938 0 0.40918 0 0.620117c0 61.8145 50.1855 112 112 112c0.0273438 0 0.0556641 -0.00488281 0.0830078 -0.00488281 +c2.42871 0 4.77051 -0.380859 6.9668 -1.08496c12.8193 -4.4541 26.6504 -6.87402 40.9775 -6.87402s28.0938 2.41992 40.9131 6.87402c2.19922 0.704102 4.54395 1.08984 6.97656 1.08984h0.0830078zM329.91 85.5498c-25.9033 -25.8965 -41.915 -61.665 -41.915 -101.15 +c0 -0.396484 0.00195312 -0.792969 0.00488281 -1.18945c0.166016 -17.7246 6.24512 -34.1309 16.3096 -47.21h-288.31c-8.83105 0 -16 7.16895 -16 16v368c0 17.6611 14.3389 32 32 32h32v64c0 17.6611 14.3389 32 32 32h160c17.6611 0 32 -14.3389 32 -32v-64h32 +c17.6611 0 32 -14.3389 32 -32v-216.62c-7.98633 -5.24609 -15.3037 -11.1562 -22.0898 -17.8301zM144 44v40c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12zM144 172v40 +c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12zM192 294v26h26c3.31152 0 6 2.68848 6 6v20c0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20 +c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6zM272 44v40c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40 +c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12zM272 172v40c0 6.62305 -5.37695 12 -12 12h-40c-6.62305 0 -12 -5.37695 -12 -12v-40c0 -6.62305 5.37695 -12 12 -12h40c6.62305 0 12 5.37695 12 12z" /> +d="M368 288c26.4922 0 48 -21.5078 48 -48s-21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48h0.94043c-0.625 5.43945 -0.93457 10.9707 -0.93457 16.5762c0 79.4756 64.5234 144 144 144c79.4756 0 144 -64.5244 144 -144 +c0 -5.60547 -0.321289 -11.1367 -0.946289 -16.5762h0.94043zM195.38 -45.6904l-99.3799 205.69h256l-99.3799 -205.69c-4.99414 -10.8223 -15.9111 -18.3398 -28.6035 -18.3398s-23.6426 7.51758 -28.6367 18.3398z" /> +d="M232 224c-4.41504 0 -8 3.58496 -8 8v48c0 4.41504 3.58496 8 8 8h56v56c0 4.41504 3.58496 8 8 8h48c4.41504 0 8 -3.58496 8 -8v-56h56c4.41504 0 8 -3.58496 8 -8v-48c0 -4.41504 -3.58496 -8 -8 -8h-56v-56c0 -4.41504 -3.58496 -8 -8 -8h-48 +c-4.41504 0 -8 3.58496 -8 8v56h-56zM576 400v-336h-512v336c0.0771484 26.4561 21.5439 47.9229 48 48h416c26.4561 -0.0771484 47.9229 -21.5439 48 -48zM512 128v256h-384v-256h384zM624 32c8.83105 0 16 -7.16895 16 -16v-16 +c-0.104492 -35.2744 -28.7256 -63.8955 -64 -64h-512c-35.2744 0.104492 -63.8955 28.7256 -64 64v16c0 8.83105 7.16895 16 16 16h239.23c-0.230469 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46z" /> +d="M448 384c35.3223 0 64 -28.6777 64 -64v-256c0 -35.3223 -28.6777 -64 -64 -64h-384c-35.3223 0 -64 28.6777 -64 64v256c0 35.3223 28.6777 64 64 64h384zM160 80v48h-80c-8.83105 0 -16 -7.16895 -16 -16v-16c0 -8.83105 7.16895 -16 16 -16h80zM288 96v16 +c0 8.83105 -7.16895 16 -16 16h-80v-48h80c8.83105 0 16 7.16895 16 16zM448 224v64c0 17.6611 -14.3389 32 -32 32h-320c-17.6611 0 -32 -14.3389 -32 -32v-64c0 -17.6611 14.3389 -32 32 -32h320c17.6611 0 32 14.3389 32 32z" /> +d="M330.67 184.88h107.46l37.0498 -38.54c-48.5293 -87.4697 -206.54 -210.34 -419.18 -210.34c-30.9072 0 -56 25.0928 -56 56s25.0928 56 56 56c141.58 0 163.44 181.24 221.92 250.82l52.75 -24.2207v-89.7197zM461.76 313.25 +c30.8984 -28.1729 50.2402 -68.7275 50.2402 -113.795v-0.145508c0 -13.6797 -2.2998 -26.6895 -5.55957 -39.3096l-54.6807 56.8799h-89.0898v78.2402l-74.6699 34.29c22.3398 14.0498 48.3398 22.5898 76.3398 22.5898 +c20.2783 -0.0078125 39.6836 -4.32031 57.1602 -11.96c18.4502 37.2197 8.25977 61.96 1.40039 72.3203c-0.896484 1.29883 -1.42676 2.88184 -1.42676 4.57715c0 2.20117 0.884766 4.19727 2.31641 5.65234l22.9004 23c1.45117 1.47559 3.46777 2.39453 5.69922 2.39453 +c2.5166 0 4.76367 -1.16504 6.23047 -2.98438c18.5596 -23.4805 35.2998 -71.9102 3.13965 -131.75z" /> +M100.4 335.85c176.069 -1.95996 294.88 -119.25 299.149 -294.14l-379 -105.1c-1.37793 -0.381836 -2.82324 -0.59375 -4.32227 -0.59375c-8.94629 0 -16.21 7.26367 -16.21 16.21c0 1.42871 0.18457 2.81348 0.532227 4.13379zM128 32c17.6611 0 32 14.3389 32 32 +s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM176 184c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32zM280 80c17.6611 0 32 14.3389 32 32s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32z" /> +d="M53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.57031 -25.0762 -22.4316 -44.9971 -47.8994 -45h-245.801c-25.4678 0.00292969 -46.3291 19.9238 -47.8994 45zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112 +c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16v112h57.3701c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.81543 3.04297 -6.83984 4.94922 -11.3086 4.94922s-8.49512 -1.90625 -11.3105 -4.94922zM432 416 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3 +c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375c9.41113 0 17.5645 -5.42871 21.4961 -13.3232l9.40039 -18.7002h120z" /> +d="M32 -16v336h384v-336c0 -26.4922 -21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112c0 -8.83105 7.16895 -16 16 -16h32c8.83105 0 16 7.16895 16 16v112h57.3701 +c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.81543 3.04297 -6.83984 4.94922 -11.3086 4.94922s-8.49512 -1.90625 -11.3105 -4.94922zM432 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-416 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h120l9.40039 18.7002c3.85547 7.88574 11.9434 13.2998 21.3066 13.2998h0.0927734h114.3c0.00585938 0 -0.00195312 0.0234375 0.00390625 0.0234375c9.41113 0 17.5645 -5.42871 21.4961 -13.3232 +l9.40039 -18.7002h120z" /> +d="M319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79c0 -32.127 -26.083 -58.21 -58.21 -58.21h-331.58c-32.127 0 -58.21 26.083 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896zM224 144c-70.6455 0 -128 57.3545 -128 128v110.18 +c0 13.7119 8.62988 25.4092 20.7598 29.96l84.7705 31.79c6.98438 2.61914 14.6035 4.05176 22.498 4.05176s15.457 -1.43262 22.4414 -4.05176l84.7705 -31.75c12.1309 -4.55078 20.7598 -16.248 20.7598 -29.96v-0.0400391v-110.18c0 -70.6455 -57.3545 -128 -128 -128z +M184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699c0 2.75977 -2.24023 5 -5 5h-16.6602 +c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-16c0 -44.1533 35.8467 -80 80 -80s80 35.8467 80 80v16h-160z" /> +d="M476 -32h-152c-19.8691 0 -36 16.1309 -36 36v348h-96v-156c0 -19.8691 -16.1309 -36 -36 -36h-140c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h112v156c0 19.8691 16.1309 36 36 36h152c19.8691 0 36 -16.1309 36 -36v-348h96v156 +c0 19.8691 16.1309 36 36 36h140c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-112v-156c0 -19.8691 -16.1309 -36 -36 -36z" /> +d="M400 352c-26.4922 0 -48 21.5078 -48 48s21.5078 48 48 48s48 -21.5078 48 -48s-21.5078 -48 -48 -48zM396 231l-41.3604 33.1104l-58.25 -49.9199l41.3604 -27.5703c8.60547 -5.7373 14.248 -15.5117 14.25 -26.6201v-128c0 -17.6611 -14.3389 -32 -32 -32 +s-32 14.3389 -32 32v110.88l-81.7305 54.5205c-8.60742 5.7373 -14.2686 15.5068 -14.2686 26.6191c0 9.71777 4.3418 18.4297 11.1895 24.3008l112 96c5.58887 4.80176 12.8965 7.70117 20.8359 7.70117c7.55566 0 14.502 -2.62891 19.9736 -7.02148l71.2197 -57h52.7803 +c17.6611 0 32 -14.3389 32 -32s-14.3389 -32 -32 -32h-64c-0.0205078 0 -0.0625 0.0117188 -0.0830078 0.0117188c-7.53125 0 -14.457 2.61621 -19.917 6.98828zM512 192c70.6455 0 128 -57.3545 128 -128s-57.3545 -128 -128 -128s-128 57.3545 -128 128 +s57.3545 128 128 128zM512 0c35.3223 0 64 28.6777 64 64s-28.6777 64 -64 64s-64 -28.6777 -64 -64s28.6777 -64 64 -64zM128 192c70.6455 0 128 -57.3545 128 -128s-57.3545 -128 -128 -128s-128 57.3545 -128 128s57.3545 128 128 128zM128 0c35.3223 0 64 28.6777 64 64 +s-28.6777 64 -64 64s-64 -28.6777 -64 -64s28.6777 -64 64 -64z" /> +d="M240 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM336 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h32zM432 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM240 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM336 32c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 128 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h32zM240 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM240 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM240 416c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM336 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 416 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h32zM48 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM48 416c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 416c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32z" /> +d="M240 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM144 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32 +c0 8.83105 7.16895 16 16 16h32zM336 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 224c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32 +c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 32c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 320c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32zM432 416 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-368v-368c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v400c0 17.6611 14.3389 32 32 32h400z" /> +c-8.34082 22.9707 -12.8604 48.9707 -12.8604 77.0605c0 81.79 61.6299 149.3 141.33 159.3c10.4795 1.30957 19.6699 -7.17969 18.5898 -17.6201l-12.4102 -123.11c22.9707 8.34082 48.9707 12.8604 77.0605 12.8604zM256 160c17.6611 0 32 14.3389 32 32 +s-14.3389 32 -32 32s-32 -14.3389 -32 -32s14.3389 -32 32 -32z" /> +l-96.75 -99.8301c-2.85449 -2.98242 -6.875 -4.83984 -11.3252 -4.83984s-8.46973 1.85742 -11.3242 4.83984zM260.57 128.16c15.1406 -0.0107422 27.4297 -12.3066 27.4297 -27.4502v-0.00976562v-137.25c0 -15.1436 -12.2891 -27.4395 -27.4297 -27.4502h-233.141 +c-15.1396 0.00585938 -27.4297 12.2988 -27.4297 27.4395v0.0107422v137.25v0.00976562c0 15.1504 12.2998 27.4502 27.4502 27.4502h0.00976562h48l7 14.2402c3.89258 10.3887 13.9082 17.7793 25.6484 17.7793h0.0117188h71.71 +c0.00390625 0 -0.00195312 0.0126953 0.000976562 0.0126953c11.7412 0 21.7666 -7.40332 25.6592 -17.792l7.08008 -14.2402h48zM144 -20c28.6992 0 52 23.3008 52 52s-23.3008 52 -52 52s-52 -23.3008 -52 -52s23.3008 -52 52 -52zM499.4 95.9004 +c9.70996 0 15.75 -8.79004 10.8691 -15.7002l-92.3994 -138.91c-2.42188 -3.19824 -6.24805 -5.25488 -10.5654 -5.25488c-0.118164 0 -0.236328 0.00195312 -0.354492 0.00488281c-8.03027 0 -14.1201 6.25 -12.2305 12.9004l24.2002 83h-62.3096 +c-7.62012 0 -13.5 5.58984 -12.5 11.8896l16.7998 106.93c0.839844 5.2002 6.2002 9.10059 12.5 9.10059h75.5898c8.25 0 14.2803 -6.56055 12.1797 -13.21l-22.3594 -50.75h60.5801zM478.08 447.67c17.9199 2.75 33.9199 -12.1895 33.9199 -31.6699v-144.26 +c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602c-35.3496 0 -64 21.4795 -64 48c0 26.5195 28.6504 48 64 48c5.49219 -0.0498047 10.8096 -0.633789 16 -1.7002v47.1797l-112 -17.2197v-108.58c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602 +c-35.3496 0 -64 21.4805 -64 48c0 26.5205 28.6504 48 64 48c5.49219 -0.0498047 10.8096 -0.632812 16 -1.69922v106.77c0 15.9102 10.8701 29.4102 25.5098 31.6602z" /> +d="M497.39 86.2002c8.60059 -3.74121 14.6006 -12.2891 14.6006 -22.2588c0 -1.83496 -0.204102 -3.62305 -0.589844 -5.3418l-24 -104c-2.45801 -10.6416 -12 -18.5996 -23.3848 -18.5996h-0.015625c-256.1 0 -464 207.5 -464 464l0.0136719 0.00390625 +c0 11.3848 7.94434 20.9287 18.5859 23.3857l104 24c1.72754 0.392578 3.49805 0.619141 5.34375 0.619141c9.9082 0 18.4307 -5.97656 22.1562 -14.5186l48 -112c1.23828 -2.88965 1.95117 -6.0791 1.95117 -9.41895c0 -7.49512 -3.45215 -14.1904 -8.85059 -18.5811 +l-60.6006 -49.6006c36.7334 -77.9072 99.2822 -140.457 177.19 -177.189l49.5996 60.5996c4.40332 5.39258 11.1113 8.81055 18.6084 8.81055c3.33203 0 6.50684 -0.680664 9.3916 -1.91016z" /> +d="M400 416c26.4922 0 48 -21.5078 48 -48v-352c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352zM383.61 108.63c0.235352 1.09082 0.369141 2.21387 0.389648 3.37012 +c-0.301758 6.06445 -3.91992 11.2607 -9.08984 13.79l-70 30c-1.83594 0.71582 -3.83789 1.14355 -5.91016 1.20996c-4.58496 -0.251953 -8.69922 -2.31836 -11.6104 -5.5l-31 -37.8896c-48.7002 22.9775 -87.8018 62.0791 -110.779 110.779l37.8896 31 +c3.18164 2.91113 5.24805 7.02539 5.5 11.6104c-0.0673828 2.07129 -0.495117 4.07324 -1.20996 5.91016l-30 70c-2.53223 5.16797 -7.72754 8.78418 -13.79 9.08984c-1.15527 -0.0253906 -2.27734 -0.15918 -3.37012 -0.389648l-65 -15 +c-6.52246 -1.74707 -11.3818 -7.59961 -11.6299 -14.6104c0 -160.29 130 -290 290 -290c7.11426 0.00292969 13.0762 4.97852 14.6104 11.6299z" /> +d="M608 448c17.6611 0 32 -14.3389 32 -32v-320c0 -17.6611 -14.3389 -32 -32 -32h-128v320h-192v-64h-160v96c0 17.6611 14.3389 32 32 32h448zM232 345v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30 +c4.9668 0 9 4.0332 9 9zM584 137v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30c4.9668 0 9 4.0332 9 9zM584 241v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30 +c4.9668 0 9 4.0332 9 9zM584 345v30c0 4.9668 -4.0332 9 -9 9h-30c-4.9668 0 -9 -4.0332 -9 -9v-30c0 -4.9668 4.0332 -9 9 -9h30c4.9668 0 9 4.0332 9 9zM416 288c17.6611 0 32 -14.3389 32 -32v-288c0 -17.6611 -14.3389 -32 -32 -32h-384c-17.6611 0 -32 14.3389 -32 32 +v288c0 17.6611 14.3389 32 32 32h384zM96 224c-17.6611 0 -32 -14.3389 -32 -32s14.3389 -32 32 -32s32 14.3389 32 32s-14.3389 32 -32 32zM384 0v96l-96 96l-128 -128l-32 32l-64 -64v-32h320z" /> +d="M336 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h32.4902l26.5098 79.5996l67.0898 -51.8301l-9.25977 -27.7695h11.1699zM633.82 -10.0996 +c3.76855 -2.92871 6.17676 -7.50977 6.17676 -12.6475c0 -3.69238 -1.25293 -7.09375 -3.35742 -9.80273l-19.6396 -25.2705c-2.92871 -3.76855 -7.50879 -6.17578 -12.6465 -6.17578c-3.69727 0 -7.10254 1.25684 -9.81348 3.36621l-588.36 454.72 +c-3.76562 2.92871 -6.1709 7.50781 -6.1709 12.6426c0 3.69434 1.25488 7.09766 3.36133 9.80762l19.6299 25.2695c2.92871 3.76855 7.50879 6.17676 12.6465 6.17676c3.69727 0 7.10254 -1.25684 9.81348 -3.36621l114.54 -88.5205v43.9004c0 8.83105 7.16895 16 16 16h416 +c8.83105 0 16 -7.16895 16 -16v-96c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v32h-117.83l-49.1699 -147.59zM309.91 240.24l31.9199 95.7598h-117.83v-29.3604z" /> +d="M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32 +c8.83105 0 16 -7.16895 16 -16v-304h48zM288 224c-8.83105 0 -16 7.16895 -16 16v17.6299c0 9.51074 4.14355 18.0566 10.7402 23.9199l61.2598 70.4502h-56c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-17.6299 +c0 -9.51074 -4.14355 -18.0566 -10.7402 -23.9199l-61.2598 -70.4502h56c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128zM447.06 -10.6201c0.600586 -1.67969 0.931641 -3.49512 0.931641 -5.37988c0 -8.82812 -7.16406 -15.9951 -15.9912 -16 +h-24.8398c-0.015625 0 -0.0263672 -0.00195312 -0.0419922 -0.00195312c-7.11426 0 -13.1514 4.6543 -15.2285 11.082l-4.40918 12.9199h-71l-4.4209 -12.9199c-2.07617 -6.42773 -8.10938 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301 +c-8.82715 0.00488281 -15.9863 7.17773 -15.9863 16.0049c0 1.88574 0.326172 3.69531 0.926758 5.375l59.2695 160c2.20996 6.19043 8.125 10.6201 15.0703 10.6201h41.4395c6.94531 0 12.8604 -4.42969 15.0703 -10.6201zM335.61 48h32.7793l-16.3896 48z" /> +d="M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16 +h-32c-8.83105 0 -16 7.16895 -16 16v304h-48zM288 224c-8.83105 0 -16 7.16895 -16 16v17.6299c0 9.51074 4.14355 18.0566 10.7402 23.9199l61.2598 70.4502h-56c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-17.6299 +c0 -9.51074 -4.14355 -18.0566 -10.7402 -23.9199l-61.2598 -70.4502h56c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-128zM447.06 -10.6201c0.600586 -1.67969 0.931641 -3.49512 0.931641 -5.37988c0 -8.82812 -7.16406 -15.9951 -15.9912 -16 +h-24.8398c-0.015625 0 -0.0263672 -0.00195312 -0.0419922 -0.00195312c-7.11426 0 -13.1514 4.6543 -15.2285 11.082l-4.40918 12.9199h-71l-4.4209 -12.9199c-2.07617 -6.42773 -8.10938 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301 +c-8.82715 0.00488281 -15.9863 7.17773 -15.9863 16.0049c0 1.88574 0.326172 3.69531 0.926758 5.375l59.2695 160c2.20996 6.19043 8.125 10.6201 15.0703 10.6201h41.4395c6.94531 0 12.8604 -4.42969 15.0703 -10.6201zM335.61 48h32.7793l-16.3896 48z" /> +d="M240 352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64zM240 224c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-128zM496 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256zM240 96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96 +c-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32c8.83105 0 16 -7.16895 16 -16v-304h48z" /> +d="M240 352c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h64c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-64zM240 224c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h128c8.83105 0 16 -7.16895 16 -16v-32 +c0 -8.83105 -7.16895 -16 -16 -16h-128zM496 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-256c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h256zM240 96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h192 +c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-192zM16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555l80 -96 +c10.0801 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48z" /> +d="M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.89551 -2.89453 -6.89844 -4.68555 -11.3125 -4.68555c-4.41309 0 -8.41211 1.79102 -11.3076 4.68555l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83105 7.16895 16 16 16h32 +c8.83105 0 16 -7.16895 16 -16v-304h48zM400 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156 +c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.23 -86.25 -132 +c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c7.62891 26.2793 28.5596 46.9287 55 54.1699 +zM352 316c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20z" /> +d="M107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83105 -7.16895 -16 -16 -16h-32c-8.83105 0 -16 7.16895 -16 16v304h-48c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96 +c2.89551 2.89453 6.89844 4.68555 11.3115 4.68555c4.41406 0 8.41211 -1.79102 11.3076 -4.68555zM400 32c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-96c-8.83105 0 -16 7.16895 -16 16v32c0 8.83105 7.16895 16 16 16h16v64h-16 +c-8.82422 0.0078125 -15.9775 7.18945 -15.9775 16.0156c0 2.57129 0.608398 5.00098 1.6875 7.1543l16 32c2.62598 5.23926 8.03613 8.8252 14.29 8.83008h48c8.83105 0 16 -7.16895 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898 +v-10.7695c0 -70.3906 -28.25 -107.23 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c7.59961 3.28516 14.6064 7.64258 20.8496 12.9092 +c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c7.62891 26.2793 28.5596 46.9287 55 54.1699zM352 316c11.0381 0 20 8.96191 20 20s-8.96191 20 -20 20s-20 -8.96191 -20 -20s8.96191 -20 20 -20z" /> +d="M272 192c-8.83105 0 -16 7.16895 -16 16v224c0 8.83105 7.16895 16 16 16h75c42.2998 0 80.9004 -30.5703 84.6699 -72.6797c0.225586 -2.44238 0.289062 -4.91895 0.289062 -7.41895c0 -13.5479 -3.38281 -26.3115 -9.34863 -37.4912 +c15.6377 -14.5762 25.3984 -35.2832 25.3984 -58.3262c0 -1.59277 -0.046875 -3.1748 -0.138672 -4.74414c-2.50977 -43.1396 -41.3105 -75.3398 -84.5098 -75.3398h-91.3604zM312 392v-48h40c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24h-40zM312 296v-48h56 +c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24h-56zM155.12 425.75l68.2998 -213.48c0.376953 -1.36035 0.580078 -2.79004 0.580078 -4.26953c0 -8.83105 -7.16895 -16 -16 -16h-24.9297c-7.35059 0 -13.5488 4.97168 -15.4199 11.7305l-11.9404 36.2695h-87.4199 +l-11.9404 -36.2695c-1.87109 -6.75879 -8.06934 -11.7305 -15.4199 -11.7305h-24.9297c-8.82617 0.00488281 -15.9883 7.16895 -15.9883 15.9961c0 1.47949 0.201172 2.91309 0.578125 4.27344l68.29 213.48c4.12695 12.9004 16.2168 22.25 30.4805 22.25h25.2793 +c14.2637 0 26.3535 -9.34961 30.4805 -22.25zM89.3701 304h45.2598l-22.6299 68.7002zM571.37 171.52c2.8916 -2.89453 4.65918 -6.89648 4.65918 -11.3066c0 -4.40137 -1.78027 -8.38867 -4.65918 -11.2832l-208 -208.21 +c-2.88086 -2.91406 -6.88379 -4.7207 -11.3018 -4.7207s-8.41699 1.80664 -11.2988 4.7207l-112 112.21c-2.88477 2.89453 -4.66895 6.8916 -4.66895 11.2979c0 4.40527 1.78418 8.39746 4.66895 11.292l45.3008 45.3008c2.87891 2.91309 6.87988 4.71973 11.2969 4.71973 +c4.41602 0 8.41309 -1.80664 11.293 -4.71973l55.4102 -55.5l151.5 151.5c2.87891 2.91309 6.87988 4.71973 11.2969 4.71973c4.41602 0 8.41309 -1.80664 11.293 -4.71973z" /> +d="M496 320c79.4756 0 144 -64.5244 144 -144s-64.5244 -144 -144 -144h-352c-79.4727 0.00390625 -144.079 64.3818 -144.079 143.854c0 79.4766 64.5244 144 144 144c79.4766 0 144 -64.5234 144 -144c0 -29.5293 -8.90723 -56.9961 -24.1807 -79.8545h112.52 +c-15.2734 22.8584 -24.2598 50.4697 -24.2598 80c0 79.4756 64.5244 144 144 144zM64 176c0 -44.1533 35.8467 -80 80 -80s80 35.8467 80 80s-35.8467 80 -80 80s-80 -35.8467 -80 -80zM496 96c44.1533 0 80 35.8467 80 80s-35.8467 80 -80 80s-80 -35.8467 -80 -80 +s35.8467 -80 80 -80z" /> +d="M490 151.1c-38.7695 -12.5898 -93.7305 -23.0996 -170 -23.0996s-131.19 10.5303 -169.99 23.1201c9.50977 57.4102 39.5098 232.88 97.71 232.88c14 0 26.4902 -6 37 -14c9.78516 -7.45996 22.0947 -11.8906 35.3369 -11.8906c13.2432 0 25.458 4.43066 35.2432 11.8906 +c10.5098 8.07031 23 14 37 14c58.21 0 88.21 -175.51 97.7002 -232.9zM632.9 188.28c4.27637 -2.87402 7.08008 -7.75195 7.08008 -13.2871c0 -1.94043 -0.34668 -3.80078 -0.980469 -5.52344c-0.730469 -2.01953 -77.3203 -201.47 -319 -201.47s-318.27 199.45 -319 201.47 +c-0.625977 1.71289 -0.966797 3.56543 -0.966797 5.49316c0 8.83105 7.16992 16 16 16c4.12012 0 7.87891 -1.56055 10.7168 -4.12305c1.01953 -0.899414 102.42 -90.8398 293.24 -90.8398c191.89 0 292.16 89.8799 293.16 90.7803 +c2.84863 2.61816 6.6709 4.20996 10.8428 4.20996c3.2959 0 6.36035 -0.999023 8.90723 -2.70996z" /> +c34.3994 0 67.7695 -12.1201 96.3994 -35.0596zM495.45 175.23c114.95 -7.90039 144.55 -101.841 144.55 -127.23c0 -26.4922 -21.5078 -48 -48 -48c-97.0996 0 -141.24 35.46 -212.31 96.7002l-98 84.4795c-35.29 28.2705 -75.5 42.8203 -117.29 42.8203 +c-7.09082 0 -13.8906 -1.16992 -20.79 -2l6.88965 65.21c2.96094 27.6465 23.6035 50.1143 50.3496 55.79l191.15 40.5898c4.31055 0.916992 8.73828 1.34277 13.3203 1.34277c31.6191 0 57.9131 -22.9785 63.0801 -53.1328z" /> +d="M0 96v128h384v-128c0 -88.3066 -71.6934 -160 -160 -160h-64c-88.3066 0 -160 71.6934 -160 160zM176 448v-192h-176v32c0 88.3066 71.6934 160 160 160h16zM224 448c88.3066 0 160 -71.6934 160 -160v-32h-176v192h16z" /> +d="M256 296c57.3994 0 104 -46.6006 104 -104s-46.6006 -104 -104 -104s-104 46.6006 -104 104s46.6006 104 104 104zM256 168c13.2461 0 24 10.7539 24 24s-10.7539 24 -24 24s-24 -10.7539 -24 -24s10.7539 -24 24 -24zM256 440c137 0 248 -111 248 -248 +s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 64c70.6455 0 128 57.3545 128 128s-57.3545 128 -128 128s-128 -57.3545 -128 -128s57.3545 -128 128 -128z" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - +d="M416 240c8.83105 0 16 -7.16895 16 -16s-7.16895 -16 -16 -16s-16 7.16895 -16 16s7.16895 16 16 16zM624 128c8.83105 0 16 -7.16895 16 -16v-32c0 -8.83105 -7.16895 -16 -16 -16h-336c0 -52.9834 -43.0166 -96 -96 -96s-96 43.0166 -96 96h-32 +c-35.3223 0 -64 28.6777 -64 64v256c0 35.3223 28.6777 64 64 64h352c88.3066 0 160 -71.6934 160 -160v-160h48zM192 16c26.4795 0.0273438 47.9727 21.5205 48 48c0 26.4922 -21.5078 48 -48 48s-48 -21.5078 -48 -48s21.5078 -48 48 -48zM256 256v64 +c0 17.6611 -14.3389 32 -32 32h-128c-17.6611 0 -32 -14.3389 -32 -32v-64c0 -17.6611 14.3389 -32 32 -32h128c17.6611 0 32 14.3389 32 32zM448 128v192c0 17.6611 -14.3389 32 -32 32h-64c-17.6611 0 -32 -14.3389 -32 -32v-192h128z" /> diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf index 5b979039ab28aaae305074541fe39258753ba624..e074608433ea79dea342cdbd7e0ab32dad0f7ed5 100644 GIT binary patch delta 17936 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%0APjLP8wq|(HtgE#Z{`xOc{``yzq*Gwv7_)dgPcH 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 delta 16054 zcmajG31C#!**E^2bJv->%|6Lwl1wJaB!Q4UnFIm^2z!KpVXG)XS;C@5L_|dslvYHl z$WSh=XyevWMa70TxJOGBEh=q!tyNT1wA5mymbTK`46m}uX>rp>;#p27C7Cst}5dR=bBn|Jp^6Isl@7uMT_$O0{Do#0rW7D~Q>(Xt~ zBCGK)q;WJOdi&ljpy#~#mh$Z^>H65IDSX0OQ%!8Xc$&_xOYLUEdS~#6B|A-ccj{Mc zD)XdbJXo7fJI&Mo1Uwx?(=$o#!$>)E8YR)a4=wkgy-Is}zvtb}&9lrNf1J;kNC#-$eM zWL#*>G%hfv8&i#H zqu3}i5=NoXm2bq2JR@f08aYO`5j8T5kP$QjhTrfSmZ2MN{h#{Z^i%q$`p5cl{eAt{ z`fK{D`b+vj{YAZBe@1^=e@Z`~@7JHu_vw%6kLr8%J^ByzALtM159s&nJ^BtkrQfM< z(QnhgrQf9ApkJr2*VpN*^;P;xeTCl9r7zc)=!^A5`X%~B`T~8nK1-jePt=?BvHBRj zUa!?F^in-f&(*W_h#u5Ex~XfrODAnmJFERk`&|2@_L=snc0&6|drv#2y`#OYy`}v| z`=$1V_L_EB`-S$Z_OkYp_H*r^*01$xKi2kXk7;|gN3a$!-WH)G_uFnXNef6~I?Sp83FG$ecD{8<9^0kni6>)D=L302&5kz%#%} zqR?idunM4Z2AIh}#mr`+2=XEah_X6xTERf{5K%Uevx_JfdAa>Wu^IsNWBZ8mP$v)N zaUDQ;9Q5O-iSk>4&A>70qJl=qF^r%9BPc8d)&p-5CD1sr12{!ggz};@M8(K2L7fsX zR)X}fHsAo!@F;MQsB|@O7}8S&_7jx_fFnfZQ-Hk?aP>r$$gAuosv@FlPZu8Gss;^e z_5oiJ)uM8p4(tHXI0**p!A$)rq6Um&6yA+%0n{H|3Y;Vwvx{hKGq9VesTe@paUP(D zXnX~5kZ8hYqUI*x4AI2BM3dTquA@YgrvPAL3Mx(k15-B;O#{JcZxKyz1->L|0f7tl z5zSBmbUrf*>?Ue$1P%bFiDs=Qnhho{JWSNKpJ>iP0PW_Yqj@^812_bHMKm9M%}0LM zd{kTjq6_MQ4x(>(fUQIqA$`#{qJ_x2xD)`r>k*M<-qN{*46#(j9jZs|PL$nrcuK}%V(BZmn0Pky&w>|*i`?@Ja z*Jl6+h;Bgn4PO#%*o*bQ5d}ByA-YKgIsg#u0>SQLU>k6pXd^n?c#P;~xnjju}!GE=_{gdwgLNyzSRjJed~Ur%}u~tM7PZ++OifnM0ERVqOGk&-$vUzx}rpP zVruR@O|%Ui+y!FW!NhhnN}+M;4AG7$z<#3dtObq`?bLyzL^jg90sx49w;lMB=x)&4 z-AHs#DX@p=UNCbnXnlVxQ4et64x;-pyZ4_VdH`*@9&96e2#p>B;UBCg`XQM4AsX!2 zOZ1~=qK8`nF!o3b@F3A%F!LztJi3JFF%W<3IML%9Aj4JzUlIKn?Rrtxi~Rl15d8%0 zf4Y{aF9vKSI#2r;ZXmjm)RP?K925gTP6m=RCk^qUZM$^|une&_wj2 z4jd->8SrxgQ1((Iu#f2F4B!aSq18mMv=hCG`oD+)=3i>90ZH*C2Kj#E

    $on7EdvhVtZz_OIz$v2N60j9^Q7LeM=$#ti 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 HrTqT@%COpq diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff index beec79178427adba9f767e1c1d2bd205044a85da..ef6b4474431a15db8519de810b24df3c55545d4e 100644 GIT binary patch literal 104280 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

    Us9V2G2D6Rs&Nq?2f`<8bgK6#V|7} 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
    Bi7ET==w0ED@om}nElpl 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 D#gX8w diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 index 978a681a10ff0478581436eaca5c5695c97445d4..120b3007e1e4b6a564fdf49d4883044fc57d3185 100644 GIT binary patch literal 80300 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

    `-`
    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Remove the inheritance of word-wrap in Safari.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24990\nselect {\n word-wrap: normal;\n}\n\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Opinionated: add \"hand\" cursor to non-disabled button elements.\n@if $enable-pointer-cursor-for-buttons {\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n &:not(:disabled) {\n cursor: pointer;\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `

    `s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n @include font-size(1.5rem);\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$grays: map-merge(\n (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n ),\n $grays\n);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: map-merge(\n (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n ),\n $colors\n);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$theme-colors: map-merge(\n (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n ),\n $theme-colors\n);\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\",\"%3c\"),\n (\">\",\"%3e\"),\n (\"#\",\"%23\"),\n) !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$spacers: map-merge(\n (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n ),\n $spacers\n);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$sizes: map-merge(\n (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n ),\n $sizes\n);\n\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n// Darken percentage for links with `.text-*` class (e.g. `.text-success`)\n$emphasized-link-hover-darken-percentage: 15% !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n$grid-row-columns: 6 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$rounded-pill: 50rem !default;\n\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n$embed-responsive-aspect-ratios: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$embed-responsive-aspect-ratios: join(\n (\n (21 9),\n (16 9),\n (4 3),\n (1 1),\n ),\n $embed-responsive-aspect-ratios\n);\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: $font-size-base * 1.25 !default;\n$font-size-sm: $font-size-base * .875 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-small-font-size: $small-font-size !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-color: $body-color !default;\n$table-bg: null !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-color: $table-color !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-color: $white !default;\n$table-dark-bg: $gray-800 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-color: $table-dark-color !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;\n\n$table-striped-order: odd !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-level: -9 !default;\n$table-border-level: -6 !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$label-margin-bottom: .5rem !default;\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-grid-gutter-width: 10px !default;\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$custom-control-gutter: .5rem !default;\n$custom-control-spacer-x: 1rem !default;\n$custom-control-cursor: null !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $input-bg !default;\n\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: $input-box-shadow !default;\n$custom-control-indicator-border-color: $gray-500 !default;\n$custom-control-indicator-border-width: $input-border-width !default;\n\n$custom-control-label-color: null !default;\n\n$custom-control-indicator-disabled-bg: $input-disabled-bg !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;\n\n$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-control-indicator-focus-border-color: $input-focus-border-color !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: url(\"data:image/svg+xml,\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: url(\"data:image/svg+xml,\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: url(\"data:image/svg+xml,\") !default;\n\n$custom-switch-width: $custom-control-indicator-size * 1.75 !default;\n$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;\n$custom-switch-indicator-size: subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;\n\n$custom-select-padding-y: $input-padding-y !default;\n$custom-select-padding-x: $input-padding-x !default;\n$custom-select-font-family: $input-font-family !default;\n$custom-select-font-size: $input-font-size !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-font-weight: $input-font-weight !default;\n$custom-select-line-height: $input-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $input-bg !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: url(\"data:image/svg+xml,\") !default;\n$custom-select-background: escape-svg($custom-select-indicator) no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)\n\n$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$custom-select-border-width: $input-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-width: $input-focus-width !default;\n$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;\n\n$custom-select-padding-y-sm: $input-padding-y-sm !default;\n$custom-select-padding-x-sm: $input-padding-x-sm !default;\n$custom-select-font-size-sm: $input-font-size-sm !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-padding-y-lg: $input-padding-y-lg !default;\n$custom-select-padding-x-lg: $input-padding-x-lg !default;\n$custom-select-font-size-lg: $input-font-size-lg !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-range-track-width: 100% !default;\n$custom-range-track-height: .5rem !default;\n$custom-range-track-cursor: pointer !default;\n$custom-range-track-bg: $gray-300 !default;\n$custom-range-track-border-radius: 1rem !default;\n$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-range-thumb-width: 1rem !default;\n$custom-range-thumb-height: $custom-range-thumb-width !default;\n$custom-range-thumb-bg: $component-active-bg !default;\n$custom-range-thumb-border: 0 !default;\n$custom-range-thumb-border-radius: 1rem !default;\n$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge\n$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-range-thumb-disabled-bg: $gray-500 !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-height-inner: $input-height-inner !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-file-disabled-bg: $input-disabled-bg !default;\n\n$custom-file-padding-y: $input-padding-y !default;\n$custom-file-padding-x: $input-padding-x !default;\n$custom-file-line-height: $input-line-height !default;\n$custom-file-font-family: $input-font-family !default;\n$custom-file-font-weight: $input-font-weight !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n\n$form-validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-validation-states: map-merge(\n (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n ),\n ),\n $form-validation-states\n);\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-divider-color: $gray-200 !default;\n$nav-divider-margin-y: $spacer / 2 !default;\n\n\n// Navbar\n\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-divider-margin-y: $nav-divider-margin-y !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-color: null !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: $grid-gutter-width / 2 !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Toasts\n\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .25rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: .25rem !default;\n$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-transition: $btn-transition !default;\n$badge-focus-width: $input-btn-focus-width !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: 1rem !default;\n$modal-header-padding-x: 1rem !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-xl: 1140px !default;\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n\n// List group\n\n$list-group-color: null !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-font-size: null !default;\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n\n$breadcrumb-border-radius: $border-radius !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n\n// Spinners\n\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Utilities\n\n$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;\n$overflows: auto, hidden !default;\n$positions: static, relative, absolute, fixed, sticky !default;\n\n\n// Printing\n\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n","// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover() {\n &:hover { @content; }\n}\n\n@mixin hover-focus() {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus() {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active() {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n","// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { @include font-size($h1-font-size); }\nh2, .h2 { @include font-size($h2-font-size); }\nh3, .h3 { @include font-size($h3-font-size); }\nh4, .h4 { @include font-size($h4-font-size); }\nh5, .h5 { @include font-size($h5-font-size); }\nh6, .h6 { @include font-size($h6-font-size); }\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n @include font-size($display1-size);\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n @include font-size($display2-size);\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n @include font-size($display3-size);\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n @include font-size($display4-size);\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n @include font-size($small-font-size);\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled();\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size(90%);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n @include font-size($blockquote-font-size);\n}\n\n.blockquote-footer {\n display: block;\n @include font-size($blockquote-small-font-size);\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled() {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all ``s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer / 2;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid() {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n","// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n","// Inline code\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n @include font-size(100%);\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n @each $name, $width in $grid-breakpoints {\n @if ($container-max-width > $width or $breakpoint == $name) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n }\n }\n }\n }\n}\n\n\n// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths(\n $max-widths: $container-max-widths,\n $breakpoints: $grid-breakpoints\n) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-right: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n & > * {\n flex: 0 0 100% / $count;\n max-width: 100% / $count;\n }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n margin-bottom: $spacer;\n color: $table-color;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: 2 * $table-border-width;\n }\n }\n}\n\n.table-borderless {\n th,\n td,\n thead th,\n tbody + tbody {\n border: 0;\n }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover() {\n color: $table-hover-color;\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover() {\n color: $table-dark-hover-color;\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover() {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n","// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" or unit($prev-num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// See https://codepen.io/kevinweber/pen/dXWoRw\n@function escape-svg($string) {\n @if str-index($string, \"data:image/svg+xml\") {\n @each $char, $encoded in $escaped-characters {\n $string: str-replace($string, $char, $encoded);\n }\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n\n// Return valid calc\n@function add($value1, $value2, $return-calc: true) {\n @if $value1 == null {\n @return $value2;\n }\n\n @if $value2 == null {\n @return $value1;\n }\n\n @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {\n @return $value1 + $value2;\n }\n\n @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(\" + \") + $value2);\n}\n\n@function subtract($value1, $value2, $return-calc: true) {\n @if $value1 == null and $value2 == null {\n @return null;\n }\n\n @if $value1 == null {\n @return -$value2;\n }\n\n @if $value2 == null {\n @return $value1;\n }\n\n @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {\n @return $value1 - $value2;\n }\n\n @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(\" - \") + $value2);\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on `s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on ` receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: add($input-padding-y, $input-border-width);\n padding-bottom: add($input-padding-y, $input-border-width);\n margin-bottom: 0; // Override the `` elements\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @include button-variant($value, $value);\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value);\n }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: $font-weight-normal;\n color: $link-color;\n text-decoration: $link-decoration;\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n\n &:focus,\n &.focus {\n text-decoration: $link-hover-decoration;\n box-shadow: none;\n }\n\n &:disabled,\n &.disabled {\n color: $btn-link-disabled-color;\n pointer-events: none;\n }\n\n // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n display: block;\n width: 100%;\n\n // Vertically space out multiple block buttons\n + .btn-block {\n margin-top: $btn-block-spacing-y;\n }\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover() {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover() {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n",".fade {\n @include transition($transition-fade);\n\n &:not(.show) {\n opacity: 0;\n }\n}\n\n.collapse {\n &:not(.show) {\n display: none;\n }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n}\n","// The dropdown wrapper (`
    `)\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n\n // Generate the caret automatically\n @include caret();\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: $dropdown-min-width;\n padding: $dropdown-padding-y 0;\n margin: $dropdown-spacer 0 0; // override default ul\n @include font-size($dropdown-font-size);\n color: $dropdown-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($dropdown-border-radius);\n @include box-shadow($dropdown-box-shadow);\n}\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .dropdown-menu#{$infix}-left {\n right: auto;\n left: 0;\n }\n\n .dropdown-menu#{$infix}-right {\n right: 0;\n left: auto;\n }\n }\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(up);\n }\n}\n\n.dropright {\n .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(right);\n &::after {\n vertical-align: 0;\n }\n }\n}\n\n.dropleft {\n .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(left);\n &::before {\n vertical-align: 0;\n }\n }\n}\n\n// When enabled Popper.js, reset basic dropdown position\n// stylelint-disable-next-line no-duplicate-selectors\n.dropdown-menu {\n &[x-placement^=\"top\"],\n &[x-placement^=\"right\"],\n &[x-placement^=\"bottom\"],\n &[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n }\n}\n\n// Dividers (basically an `
    `) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y, true);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Bt,popperConfig:null},$t={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Jt=function(){function t(t,e){if("undefined"==typeof kt)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var n=t.prototype;return n.enable=function(){this._isEnabled=!0},n.disable=function(){this._isEnabled=!1},n.toggleEnabled=function(){this._isEnabled=!this._isEnabled},n.toggle=function(t){if(this._isEnabled)if(t){var n=this.constructor.DATA_KEY,i=e(t.currentTarget).data(n);i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(e(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},n.dispose=function(){clearTimeout(this._timeout),e.removeData(this.element,this.constructor.DATA_KEY),e(this.element).off(this.constructor.EVENT_KEY),e(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&e(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},n.show=function(){var t=this;if("none"===e(this.element).css("display"))throw new Error("Please use show on visible elements");var n=e.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){e(this.element).trigger(n);var i=s.findShadowRoot(this.element),o=e.contains(null!==i?i:this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=s.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&e(r).addClass("fade");var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,c=this._getAttachment(l);this.addAttachmentClass(c);var h=this._getContainer();e(r).data(this.constructor.DATA_KEY,this),e.contains(this.element.ownerDocument.documentElement,this.tip)||e(r).appendTo(h),e(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new kt(this.element,r,this._getPopperConfig(c)),e(r).addClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().on("mouseover",null,e.noop);var u=function(){t.config.animation&&t._fixTransition();var n=t._hoverState;t._hoverState=null,e(t.element).trigger(t.constructor.Event.SHOWN),"out"===n&&t._leave(null,t)};if(e(this.tip).hasClass("fade")){var f=s.getTransitionDurationFromElement(this.tip);e(this.tip).one(s.TRANSITION_END,u).emulateTransitionEnd(f)}else u()}},n.hide=function(t){var n=this,i=this.getTipElement(),o=e.Event(this.constructor.Event.HIDE),r=function(){"show"!==n._hoverState&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),e(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t()};if(e(this.element).trigger(o),!o.isDefaultPrevented()){if(e(i).removeClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().off("mouseover",null,e.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,e(this.tip).hasClass("fade")){var a=s.getTransitionDurationFromElement(i);e(i).one(s.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},n.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},n.isWithContent=function(){return Boolean(this.getTitle())},n.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-tooltip-"+t)},n.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},n.setContent=function(){var t=this.getTipElement();this.setElementContent(e(t.querySelectorAll(".tooltip-inner")),this.getTitle()),e(t).removeClass("fade show")},n.setElementContent=function(t,n){"object"!=typeof n||!n.nodeType&&!n.jquery?this.config.html?(this.config.sanitize&&(n=Wt(n,this.config.whiteList,this.config.sanitizeFn)),t.html(n)):t.text(n):this.config.html?e(n).parent().is(t)||t.empty().append(n):t.text(e(n).text())},n.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},n._getPopperConfig=function(t){var e=this;return o({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},n._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=o({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},n._getContainer=function(){return!1===this.config.container?document.body:s.isElement(this.config.container)?e(this.config.container):e(document).find(this.config.container)},n._getAttachment=function(t){return Kt[t.toUpperCase()]},n._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(n){if("click"===n)e(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==n){var i="hover"===n?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===n?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;e(t.element).on(i,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},e(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=o({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},n._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},n._enter=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e(n.getTipElement()).hasClass("show")||"show"===n._hoverState?n._hoverState="show":(clearTimeout(n._timeout),n._hoverState="show",n.config.delay&&n.config.delay.show?n._timeout=setTimeout((function(){"show"===n._hoverState&&n.show()}),n.config.delay.show):n.show())},n._leave=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState="out",n.config.delay&&n.config.delay.hide?n._timeout=setTimeout((function(){"out"===n._hoverState&&n.hide()}),n.config.delay.hide):n.hide())},n._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},n._getConfig=function(t){var n=e(this.element).data();return Object.keys(n).forEach((function(t){-1!==zt.indexOf(t)&&delete n[t]})),"number"==typeof(t=o({},this.constructor.Default,n,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),s.typeCheckConfig(Ut,t,this.constructor.DefaultType),t.sanitize&&(t.template=Wt(t.template,t.whiteList,t.sanitizeFn)),t},n._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},n._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(Yt);null!==n&&n.length&&t.removeClass(n.join(""))},n._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},n._fixTransition=function(){var t=this.getTipElement(),n=this.config.animation;null===t.getAttribute("x-placement")&&(e(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},t._jQueryInterface=function(n){return this.each((function(){var i=e(this).data("bs.tooltip"),o="object"==typeof n&&n;if((i||!/dispose|hide/.test(n))&&(i||(i=new t(this,o),e(this).data("bs.tooltip",i)),"string"==typeof n)){if("undefined"==typeof i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},i(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return Gt}},{key:"NAME",get:function(){return Ut}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Xt}}]),t}();e.fn[Ut]=Jt._jQueryInterface,e.fn[Ut].Constructor=Jt,e.fn[Ut].noConflict=function(){return e.fn[Ut]=Vt,Jt._jQueryInterface};var Zt="popover",te=e.fn[Zt],ee=new RegExp("(^|\\s)bs-popover\\S+","g"),ne=o({},Jt.Default,{placement:"right",trigger:"click",content:"",template:''}),ie=o({},Jt.DefaultType,{content:"(string|element|function)"}),oe={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},re=function(t){var n,o;function r(){return t.apply(this,arguments)||this}o=t,(n=r).prototype=Object.create(o.prototype),n.prototype.constructor=n,n.__proto__=o;var s=r.prototype;return s.isWithContent=function(){return this.getTitle()||this._getContent()},s.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-popover-"+t)},s.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},s.setContent=function(){var t=e(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(t.find(".popover-body"),n),t.removeClass("fade show")},s._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},s._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(ee);null!==n&&n.length>0&&t.removeClass(n.join(""))},r._jQueryInterface=function(t){return this.each((function(){var n=e(this).data("bs.popover"),i="object"==typeof t?t:null;if((n||!/dispose|hide/.test(t))&&(n||(n=new r(this,i),e(this).data("bs.popover",n)),"string"==typeof t)){if("undefined"==typeof n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},i(r,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return ne}},{key:"NAME",get:function(){return Zt}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return oe}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return ie}}]),r}(Jt);e.fn[Zt]=re._jQueryInterface,e.fn[Zt].Constructor=re,e.fn[Zt].noConflict=function(){return e.fn[Zt]=te,re._jQueryInterface};var se="scrollspy",ae=e.fn[se],le={offset:10,method:"auto",target:""},ce={offset:"number",method:"string",target:"(string|element)"},he=function(){function t(t,n){var i=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(n),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,e(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return i._process(t)})),this.refresh(),this._process()}var n=t.prototype;return n.refresh=function(){var t=this,n=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?n:this._config.method,o="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var n,r=s.getSelectorFromElement(t);if(r&&(n=document.querySelector(r)),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[e(n)[i]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},n.dispose=function(){e.removeData(this._element,"bs.scrollspy"),e(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=o({},le,"object"==typeof t&&t?t:{})).target&&s.isElement(t.target)){var n=e(t.target).attr("id");n||(n=s.getUID(se),e(t.target).attr("id",n)),t.target="#"+n}return s.typeCheckConfig(se,t,ce),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";i=(i=e.makeArray(e(o).find(a)))[i.length-1]}var l=e.Event("hide.bs.tab",{relatedTarget:this._element}),c=e.Event("show.bs.tab",{relatedTarget:i});if(i&&e(i).trigger(l),e(this._element).trigger(c),!c.isDefaultPrevented()&&!l.isDefaultPrevented()){r&&(n=document.querySelector(r)),this._activate(this._element,o);var h=function(){var n=e.Event("hidden.bs.tab",{relatedTarget:t._element}),o=e.Event("shown.bs.tab",{relatedTarget:i});e(i).trigger(n),e(t._element).trigger(o)};n?this._activate(n,n.parentNode,h):h()}}},n.dispose=function(){e.removeData(this._element,"bs.tab"),this._element=null},n._activate=function(t,n,i){var o=this,r=(!n||"UL"!==n.nodeName&&"OL"!==n.nodeName?e(n).children(".active"):e(n).find("> li > .active"))[0],a=i&&r&&e(r).hasClass("fade"),l=function(){return o._transitionComplete(t,r,i)};if(r&&a){var c=s.getTransitionDurationFromElement(r);e(r).removeClass("show").one(s.TRANSITION_END,l).emulateTransitionEnd(c)}else l()},n._transitionComplete=function(t,n,i){if(n){e(n).removeClass("active");var o=e(n.parentNode).find("> .dropdown-menu .active")[0];o&&e(o).removeClass("active"),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(e(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),s.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&e(t.parentNode).hasClass("dropdown-menu")){var r=e(t).closest(".dropdown")[0];if(r){var a=[].slice.call(r.querySelectorAll(".dropdown-toggle"));e(a).addClass("active")}t.setAttribute("aria-expanded",!0)}i&&i()},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.tab");if(o||(o=new t(this),i.data("bs.tab",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n]()}}))},i(t,null,[{key:"VERSION",get:function(){return"4.5.2"}}]),t}();e(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),fe._jQueryInterface.call(e(this),"show")})),e.fn.tab=fe._jQueryInterface,e.fn.tab.Constructor=fe,e.fn.tab.noConflict=function(){return e.fn.tab=ue,fe._jQueryInterface};var de=e.fn.toast,pe={animation:"boolean",autohide:"boolean",delay:"number"},me={animation:!0,autohide:!0,delay:500},ge=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var n=t.prototype;return n.show=function(){var t=this,n=e.Event("show.bs.toast");if(e(this._element).trigger(n),!n.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var i=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),e(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),s.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=s.getTransitionDurationFromElement(this._element);e(this._element).one(s.TRANSITION_END,i).emulateTransitionEnd(o)}else i()}},n.hide=function(){if(this._element.classList.contains("show")){var t=e.Event("hide.bs.toast");e(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),e(this._element).off("click.dismiss.bs.toast"),e.removeData(this._element,"bs.toast"),this._element=null,this._config=null},n._getConfig=function(t){return t=o({},me,e(this._element).data(),"object"==typeof t&&t?t:{}),s.typeCheckConfig("toast",t,this.constructor.DefaultType),t},n._setListeners=function(){var t=this;e(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},n._close=function(){var t=this,n=function(){t._element.classList.add("hide"),e(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var i=s.getTransitionDurationFromElement(this._element);e(this._element).one(s.TRANSITION_END,n).emulateTransitionEnd(i)}else n()},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.toast");if(o||(o=new t(this,"object"==typeof n&&n),i.data("bs.toast",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n](this)}}))},i(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"DefaultType",get:function(){return pe}},{key:"Default",get:function(){return me}}]),t}();e.fn.toast=ge._jQueryInterface,e.fn.toast.Constructor=ge,e.fn.toast.noConflict=function(){return e.fn.toast=de,ge._jQueryInterface},t.Alert=c,t.Button=u,t.Carousel=v,t.Collapse=T,t.Dropdown=Lt,t.Modal=Ht,t.Popover=re,t.Scrollspy=he,t.Tab=fe,t.Toast=ge,t.Tooltip=Jt,t.Util=s,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map new file mode 100644 index 0000000000..6fd7db178f --- /dev/null +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["transitionEndEmulator","duration","_this","this","called","$","one","Util","TRANSITION_END","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","JQUERY_NO_CONFLICT","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","focus","hasAttribute","setAttribute","toggleClass","button","initialButton","inputBtn","tagName","window","buttons","slice","querySelectorAll","i","len","length","add","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_extends","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","e","move","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","CLASS_NAME_ACTIVE","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","side","undefined","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","classCallCheck","instance","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","assign","source","getClientRect","offsets","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","x-placement","applyStyle","onLoad","modifierOptions","Popper","requestAnimationFrame","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","boundary","display","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","defaultPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","appendChild","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE","content","text","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","initConfigAnimation","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","autohide","Toast","_clearTimeout","_close"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(EVENT_CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(CLASS_NAME_SHOW)\n\n if (!$(element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(EVENT_CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n EVENT_CLICK_DATA_API,\n SELECTOR_DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n SELECTOR_DATA_TOGGLES\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(SELECTOR_INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n }\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(CLASS_NAME_ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, (event) => {\n let button = event.target\n const initialButton = button\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n if (initialButton.tagName !== 'LABEL' || inputBtn && inputBtn.type !== 'checkbox') {\n Button._jQueryInterface.call($(button), 'toggle')\n }\n }\n })\n .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(SELECTOR_INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? DIRECTION_NEXT\n : DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(EVENT_MOUSEENTER, (event) => this.pause(event))\n .on(EVENT_MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n .on(EVENT_DRAG_START, (e) => e.preventDefault())\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, (event) => start(event))\n $(this._element).on(EVENT_POINTERUP, (event) => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n $(this._element).on(EVENT_TOUCHSTART, (event) => start(event))\n $(this._element).on(EVENT_TOUCHMOVE, (event) => move(event))\n $(this._element).on(EVENT_TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n const slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(CLASS_NAME_ACTIVE)\n\n $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(EVENT_SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSE)\n .addClass(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = $.Event(EVENT_HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(CLASS_NAME_COLLAPSING)\n .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(CLASS_NAME_COLLAPSE)\n .trigger(EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n const children = [].slice.call(parent.querySelectorAll(selector))\n\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
    \n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
    \n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
    \n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
    \n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
    \n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
    \n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
    \n * It will read the variation of the `placement` property.
    \n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
    \n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
    \n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
    \n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
    \n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
    \n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
    \n * These can be overridden using the `options` argument of Popper.js.
    \n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
    \n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic',\n popperConfig : null\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string',\n popperConfig : '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(EVENT_CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT)\n ? PLACEMENT_TOPEND\n : PLACEMENT_TOP\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n $(parent)\n .removeClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n .filter((item) => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(SELECTOR_DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n EVENT_CLICK_DISMISS,\n SELECTOR_DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n $(this._element).one(EVENT_MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(EVENT_FOCUSIN)\n\n $(this._element).removeClass(CLASS_NAME_SHOW)\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n $(document).off(EVENT_FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n if (this._config.backdrop === 'static') {\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n $(this._element).off(Util.TRANSITION_END)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n .emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n } else {\n this.hide()\n }\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, (event) => {\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(CLASS_NAME_FADE)\n ? CLASS_NAME_FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(EVENT_CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(EVENT_SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(EVENT_HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object',\n popperConfig : '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '
    ' +\n '
    ' +\n '
    ',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist,\n popperConfig : null\n}\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, (event) => this._enter(event))\n .on(eventOut, this.config.selector, (event) => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '
    ' +\n '
    ' +\n '

    ' +\n '
    '\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(EVENT_SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? METHOD_OFFSET : METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN)\n .find(SELECTOR_DROPDOWN_TOGGLE)\n .addClass(CLASS_NAME_ACTIVE)\n $link.addClass(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE)\n // Set triggered links parents as active\n // With both

    wQH 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 diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.css b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.css index ee3c5080a5..ddf9cae5b2 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.css +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.css @@ -1,56 +1,56 @@ -@keyframes spin { - 0% { - transform: translateZ(0) rotate(0deg); - } - - 100% { - transform: translateZ(0) rotate(360deg); - } -} - -.abp-block-area { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 102; - background-color: #fff; - opacity: .8; - transition: opacity .25s; -} - - .abp-block-area.abp-block-area-disappearing { - opacity: 0; - } - - .abp-block-area.abp-block-area-busy:after { - content: attr(data-text); - display: block; - max-width: 125px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - font-size: 20px; - font-family: sans-serif; - color: #343a40; - text-align: center; - text-transform: uppercase; - } - - .abp-block-area.abp-block-area-busy:before { - content: ""; - display: block; - width: 150px; - height: 150px; - border-radius: 50%; - border-width: 2px; - border-style: solid; - border-color: transparent #228ae6 #228ae6 #228ae6; - position: absolute; - top: calc(50% - 75px); - left: calc(50% - 75px); - will-change: transform; - animation: spin .75s infinite ease-in-out; - } +@keyframes spin { + 0% { + transform: translateZ(0) rotate(0deg); + } + + 100% { + transform: translateZ(0) rotate(360deg); + } +} + +.abp-block-area { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 102; + background-color: #fff; + opacity: .8; + transition: opacity .25s; +} + + .abp-block-area.abp-block-area-disappearing { + opacity: 0; + } + + .abp-block-area.abp-block-area-busy:after { + content: attr(data-text); + display: block; + max-width: 125px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 20px; + font-family: sans-serif; + color: #343a40; + text-align: center; + text-transform: uppercase; + } + + .abp-block-area.abp-block-area-busy:before { + content: ""; + display: block; + width: 150px; + height: 150px; + border-radius: 50%; + border-width: 2px; + border-style: solid; + border-color: transparent #228ae6 #228ae6 #228ae6; + position: absolute; + top: calc(50% - 75px); + left: calc(50% - 75px); + will-change: transform; + animation: spin .75s infinite ease-in-out; + } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js index 01df49a726..20bd92147a 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js @@ -1,666 +1,754 @@ -var abp = abp || {}; -(function () { - - /* Application paths *****************************************/ - - //Current application root path (including virtual directory if exists). - abp.appPath = abp.appPath || '/'; - - abp.pageLoadTime = new Date(); - - //Converts given path to absolute path using abp.appPath variable. - abp.toAbsAppPath = function (path) { - if (path.indexOf('/') == 0) { - path = path.substring(1); - } - - return abp.appPath + path; - }; - - /* LOGGING ***************************************************/ - //Implements Logging API that provides secure & controlled usage of console.log - - abp.log = abp.log || {}; - - abp.log.levels = { - DEBUG: 1, - INFO: 2, - WARN: 3, - ERROR: 4, - FATAL: 5 - }; - - abp.log.level = abp.log.levels.DEBUG; - - abp.log.log = function (logObject, logLevel) { - if (!window.console || !window.console.log) { - return; - } - - if (logLevel != undefined && logLevel < abp.log.level) { - return; - } - - console.log(logObject); - }; - - abp.log.debug = function (logObject) { - abp.log.log("DEBUG: ", abp.log.levels.DEBUG); - abp.log.log(logObject, abp.log.levels.DEBUG); - }; - - abp.log.info = function (logObject) { - abp.log.log("INFO: ", abp.log.levels.INFO); - abp.log.log(logObject, abp.log.levels.INFO); - }; - - abp.log.warn = function (logObject) { - abp.log.log("WARN: ", abp.log.levels.WARN); - abp.log.log(logObject, abp.log.levels.WARN); - }; - - abp.log.error = function (logObject) { - abp.log.log("ERROR: ", abp.log.levels.ERROR); - abp.log.log(logObject, abp.log.levels.ERROR); - }; - - abp.log.fatal = function (logObject) { - abp.log.log("FATAL: ", abp.log.levels.FATAL); - abp.log.log(logObject, abp.log.levels.FATAL); - }; - - /* LOCALIZATION ***********************************************/ - - abp.localization = abp.localization || {}; - - abp.localization.values = {}; - - abp.localization.localize = function (key, sourceName) { - if (sourceName === '_') { //A convention to suppress the localization - return key; - } - - sourceName = sourceName || abp.localization.defaultResourceName; - if (!sourceName) { - abp.log.warn('Localization source name is not specified and the defaultResourceName was not defined!'); - return key; - } - - var source = abp.localization.values[sourceName]; - if (!source) { - abp.log.warn('Could not find localization source: ' + sourceName); - return key; - } - - var value = source[key]; - if (value == undefined) { - return key; - } - - var copiedArguments = Array.prototype.slice.call(arguments, 0); - copiedArguments.splice(1, 1); - copiedArguments[0] = value; - - return abp.utils.formatString.apply(this, copiedArguments); - }; - - abp.localization.isLocalized = function (key, sourceName) { - if (sourceName === '_') { //A convention to suppress the localization - return true; - } - - sourceName = sourceName || abp.localization.defaultResourceName; - if (!sourceName) { - return false; - } - - var source = abp.localization.values[sourceName]; - if (!source) { - return false; - } - - var value = source[key]; - if (value === undefined) { - return false; - } - - return true; - }; - - abp.localization.getResource = function (name) { - return function () { - var copiedArguments = Array.prototype.slice.call(arguments, 0); - copiedArguments.splice(1, 0, name); - return abp.localization.localize.apply(this, copiedArguments); - }; - }; - - abp.localization.defaultResourceName = undefined; - - /* AUTHORIZATION **********************************************/ - - abp.auth = abp.auth || {}; - - abp.auth.policies = abp.auth.policies || {}; - - abp.auth.grantedPolicies = abp.auth.grantedPolicies || {}; - - abp.auth.isGranted = function (policyName) { - return abp.auth.policies[policyName] != undefined && abp.auth.grantedPolicies[policyName] != undefined; - }; - - abp.auth.isAnyGranted = function () { - if (!arguments || arguments.length <= 0) { - return true; - } - - for (var i = 0; i < arguments.length; i++) { - if (abp.auth.isGranted(arguments[i])) { - return true; - } - } - - return false; - }; - - abp.auth.areAllGranted = function () { - if (!arguments || arguments.length <= 0) { - return true; - } - - for (var i = 0; i < arguments.length; i++) { - if (!abp.auth.isGranted(arguments[i])) { - return false; - } - } - - return true; - }; - - abp.auth.tokenCookieName = 'Abp.AuthToken'; - - abp.auth.setToken = function (authToken, expireDate) { - abp.utils.setCookieValue(abp.auth.tokenCookieName, authToken, expireDate, abp.appPath, abp.domain); - }; - - abp.auth.getToken = function () { - return abp.utils.getCookieValue(abp.auth.tokenCookieName); - } - - abp.auth.clearToken = function () { - abp.auth.setToken(); - } - - /* SETTINGS *************************************************/ - - abp.setting = abp.setting || {}; - - abp.setting.values = abp.setting.values || {}; - - abp.setting.get = function (name) { - return abp.setting.values[name]; - }; - - abp.setting.getBoolean = function (name) { - var value = abp.setting.get(name); - return value == 'true' || value == 'True'; - }; - - abp.setting.getInt = function (name) { - return parseInt(abp.setting.values[name]); - }; - - /* NOTIFICATION *********************************************/ - //Defines Notification API, not implements it - - abp.notify = abp.notify || {}; - - abp.notify.success = function (message, title, options) { - abp.log.warn('abp.notify.success is not implemented!'); - }; - - abp.notify.info = function (message, title, options) { - abp.log.warn('abp.notify.info is not implemented!'); - }; - - abp.notify.warn = function (message, title, options) { - abp.log.warn('abp.notify.warn is not implemented!'); - }; - - abp.notify.error = function (message, title, options) { - abp.log.warn('abp.notify.error is not implemented!'); - }; - - /* MESSAGE **************************************************/ - //Defines Message API, not implements it - - abp.message = abp.message || {}; - - abp.message._showMessage = function (message, title) { - alert((title || '') + ' ' + message); - }; - - abp.message.info = function (message, title) { - abp.log.warn('abp.message.info is not implemented!'); - return abp.message._showMessage(message, title); - }; - - abp.message.success = function (message, title) { - abp.log.warn('abp.message.success is not implemented!'); - return abp.message._showMessage(message, title); - }; - - abp.message.warn = function (message, title) { - abp.log.warn('abp.message.warn is not implemented!'); - return abp.message._showMessage(message, title); - }; - - abp.message.error = function (message, title) { - abp.log.warn('abp.message.error is not implemented!'); - return abp.message._showMessage(message, title); - }; - - abp.message.confirm = function (message, titleOrCallback, callback) { - abp.log.warn('abp.message.confirm is not properly implemented!'); - - if (titleOrCallback && !(typeof titleOrCallback == 'string')) { - callback = titleOrCallback; - } - - var result = confirm(message); - callback && callback(result); - }; - - /* UI *******************************************************/ - - abp.ui = abp.ui || {}; - - /* UI BLOCK */ - //Defines UI Block API and implements basically - - var $abpBlockArea = document.createElement('div'); - $abpBlockArea.classList.add('abp-block-area'); - - /* opts: { //Can be an object with options or a string for query a selector - * elm: a query selector (optional - default: document.body) - * busy: boolean (optional - default: false) - * promise: A promise with always or finally handler (optional - auto unblocks the ui if provided) - * } - */ - abp.ui.block = function (opts) { - if (!opts) { - opts = {}; - } else if (typeof opts == 'string') { - opts = { - elm: opts - }; - } - - var $elm = document.querySelector(opts.elm) || document.body; - - if (opts.busy) { - $abpBlockArea.classList.add('abp-block-area-busy'); - } else { - $abpBlockArea.classList.remove('abp-block-area-busy'); - } - - if (document.querySelector(opts.elm)) { - $abpBlockArea.style.position = 'absolute'; - } else { - $abpBlockArea.style.position = 'fixed'; - } - - $elm.appendChild($abpBlockArea); - - if (opts.promise) { - if (opts.promise.always) { //jQuery.Deferred style - opts.promise.always(function () { - abp.ui.unblock({ - $elm: opts.elm - }); - }); - } else if (opts.promise['finally']) { //Q style - opts.promise['finally'](function () { - abp.ui.unblock({ - $elm: opts.elm - }); - }); - } - } - }; - - /* opts: { - * - * } - */ - abp.ui.unblock = function (opts) { - var element = document.querySelector('.abp-block-area'); - if (element) { - element.classList.add('abp-block-area-disappearing'); - setTimeout(function () { - if (element) { - element.classList.remove('abp-block-area-disappearing'); - element.parentElement.removeChild(element); - } - }, 250); - } - }; - - /* UI BUSY */ - //Defines UI Busy API, not implements it - - abp.ui.setBusy = function (opts) { - if (!opts) { - opts = { - busy: true - }; - } else if (typeof opts == 'string') { - opts = { - elm: opts, - busy: true - }; - } - - abp.ui.block(opts); - }; - - abp.ui.clearBusy = function (opts) { - abp.ui.unblock(opts); - }; - - /* SIMPLE EVENT BUS *****************************************/ - - abp.event = (function () { - - var _callbacks = {}; - - var on = function (eventName, callback) { - if (!_callbacks[eventName]) { - _callbacks[eventName] = []; - } - - _callbacks[eventName].push(callback); - }; - - var off = function (eventName, callback) { - var callbacks = _callbacks[eventName]; - if (!callbacks) { - return; - } - - var index = -1; - for (var i = 0; i < callbacks.length; i++) { - if (callbacks[i] === callback) { - index = i; - break; - } - } - - if (index < 0) { - return; - } - - _callbacks[eventName].splice(index, 1); - }; - - var trigger = function (eventName) { - var callbacks = _callbacks[eventName]; - if (!callbacks || !callbacks.length) { - return; - } - - var args = Array.prototype.slice.call(arguments, 1); - for (var i = 0; i < callbacks.length; i++) { - callbacks[i].apply(this, args); - } - }; - - // Public interface /////////////////////////////////////////////////// - - return { - on: on, - off: off, - trigger: trigger - }; - })(); - - - /* UTILS ***************************************************/ - - abp.utils = abp.utils || {}; - - /* Creates a name namespace. - * Example: - * var taskService = abp.utils.createNamespace(abp, 'services.task'); - * taskService will be equal to abp.services.task - * first argument (root) must be defined first - ************************************************************/ - abp.utils.createNamespace = function (root, ns) { - var parts = ns.split('.'); - for (var i = 0; i < parts.length; i++) { - if (typeof root[parts[i]] == 'undefined') { - root[parts[i]] = {}; - } - - root = root[parts[i]]; - } - - return root; - }; - - /* Find and replaces a string (search) to another string (replacement) in - * given string (str). - * Example: - * abp.utils.replaceAll('This is a test string', 'is', 'X') = 'ThX X a test string' - ************************************************************/ - abp.utils.replaceAll = function (str, search, replacement) { - var fix = search.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - return str.replace(new RegExp(fix, 'g'), replacement); - }; - - /* Formats a string just like string.format in C#. - * Example: - * abp.utils.formatString('Hello {0}','Tuana') = 'Hello Tuana' - ************************************************************/ - abp.utils.formatString = function () { - if (arguments.length < 1) { - return null; - } - - var str = arguments[0]; - - for (var i = 1; i < arguments.length; i++) { - var placeHolder = '{' + (i - 1) + '}'; - str = abp.utils.replaceAll(str, placeHolder, arguments[i]); - } - - return str; - }; - - abp.utils.toPascalCase = function (str) { - if (!str || !str.length) { - return str; - } - - if (str.length === 1) { - return str.charAt(0).toUpperCase(); - } - - return str.charAt(0).toUpperCase() + str.substr(1); - } - - abp.utils.toCamelCase = function (str) { - if (!str || !str.length) { - return str; - } - - if (str.length === 1) { - return str.charAt(0).toLowerCase(); - } - - return str.charAt(0).toLowerCase() + str.substr(1); - } - - abp.utils.truncateString = function (str, maxLength) { - if (!str || !str.length || str.length <= maxLength) { - return str; - } - - return str.substr(0, maxLength); - }; - - abp.utils.truncateStringWithPostfix = function (str, maxLength, postfix) { - postfix = postfix || '...'; - - if (!str || !str.length || str.length <= maxLength) { - return str; - } - - if (maxLength <= postfix.length) { - return postfix.substr(0, maxLength); - } - - return str.substr(0, maxLength - postfix.length) + postfix; - }; - - abp.utils.isFunction = function (obj) { - return !!(obj && obj.constructor && obj.call && obj.apply); - }; - - /** - * parameterInfos should be an array of { name, value } objects - * where name is query string parameter name and value is it's value. - * includeQuestionMark is true by default. - */ - abp.utils.buildQueryString = function (parameterInfos, includeQuestionMark) { - if (includeQuestionMark === undefined) { - includeQuestionMark = true; - } - - var qs = ''; - - function addSeperator() { - if (!qs.length) { - if (includeQuestionMark) { - qs = qs + '?'; - } - } else { - qs = qs + '&'; - } - } - - for (var i = 0; i < parameterInfos.length; ++i) { - var parameterInfo = parameterInfos[i]; - if (parameterInfo.value === undefined) { - continue; - } - - if (parameterInfo.value === null) { - parameterInfo.value = ''; - } - - addSeperator(); - - if (parameterInfo.value.toJSON && typeof parameterInfo.value.toJSON === "function") { - qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value.toJSON()); - } else if (Array.isArray(parameterInfo.value) && parameterInfo.value.length) { - for (var j = 0; j < parameterInfo.value.length; j++) { - if (j > 0) { - addSeperator(); - } - - qs = qs + parameterInfo.name + '[' + j + ']=' + encodeURIComponent(parameterInfo.value[j]); - } - } else { - qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value); - } - } - - return qs; - } - - /** - * Sets a cookie value for given key. - * This is a simple implementation created to be used by ABP. - * Please use a complete cookie library if you need. - * @param {string} key - * @param {string} value - * @param {Date} expireDate (optional). If not specified the cookie will expire at the end of session. - * @param {string} path (optional) - */ - abp.utils.setCookieValue = function (key, value, expireDate, path) { - var cookieValue = encodeURIComponent(key) + '='; - - if (value) { - cookieValue = cookieValue + encodeURIComponent(value); - } - - if (expireDate) { - cookieValue = cookieValue + "; expires=" + expireDate.toUTCString(); - } - - if (path) { - cookieValue = cookieValue + "; path=" + path; - } - - document.cookie = cookieValue; - }; - - /** - * Gets a cookie with given key. - * This is a simple implementation created to be used by ABP. - * Please use a complete cookie library if you need. - * @param {string} key - * @returns {string} Cookie value or null - */ - abp.utils.getCookieValue = function (key) { - var equalities = document.cookie.split('; '); - for (var i = 0; i < equalities.length; i++) { - if (!equalities[i]) { - continue; - } - - var splitted = equalities[i].split('='); - if (splitted.length != 2) { - continue; - } - - if (decodeURIComponent(splitted[0]) === key) { - return decodeURIComponent(splitted[1] || ''); - } - } - - return null; - }; - - /** - * Deletes cookie for given key. - * This is a simple implementation created to be used by ABP. - * Please use a complete cookie library if you need. - * @param {string} key - * @param {string} path (optional) - */ - abp.utils.deleteCookie = function (key, path) { - var cookieValue = encodeURIComponent(key) + '='; - - cookieValue = cookieValue + "; expires=" + (new Date(new Date().getTime() - 86400000)).toUTCString(); - - if (path) { - cookieValue = cookieValue + "; path=" + path; - } - - document.cookie = cookieValue; - } - - /* SECURITY ***************************************/ - abp.security = abp.security || {}; - abp.security.antiForgery = abp.security.antiForgery || {}; - - abp.security.antiForgery.tokenCookieName = 'XSRF-TOKEN'; - abp.security.antiForgery.tokenHeaderName = 'X-XSRF-TOKEN'; - - abp.security.antiForgery.getToken = function () { - return abp.utils.getCookieValue(abp.security.antiForgery.tokenCookieName); - }; - -})(); \ No newline at end of file +var abp = abp || {}; +(function () { + + /* Application paths *****************************************/ + + //Current application root path (including virtual directory if exists). + abp.appPath = abp.appPath || '/'; + + abp.pageLoadTime = new Date(); + + //Converts given path to absolute path using abp.appPath variable. + abp.toAbsAppPath = function (path) { + if (path.indexOf('/') == 0) { + path = path.substring(1); + } + + return abp.appPath + path; + }; + + /* LOGGING ***************************************************/ + //Implements Logging API that provides secure & controlled usage of console.log + + abp.log = abp.log || {}; + + abp.log.levels = { + DEBUG: 1, + INFO: 2, + WARN: 3, + ERROR: 4, + FATAL: 5 + }; + + abp.log.level = abp.log.levels.DEBUG; + + abp.log.log = function (logObject, logLevel) { + if (!window.console || !window.console.log) { + return; + } + + if (logLevel != undefined && logLevel < abp.log.level) { + return; + } + + console.log(logObject); + }; + + abp.log.debug = function (logObject) { + abp.log.log("DEBUG: ", abp.log.levels.DEBUG); + abp.log.log(logObject, abp.log.levels.DEBUG); + }; + + abp.log.info = function (logObject) { + abp.log.log("INFO: ", abp.log.levels.INFO); + abp.log.log(logObject, abp.log.levels.INFO); + }; + + abp.log.warn = function (logObject) { + abp.log.log("WARN: ", abp.log.levels.WARN); + abp.log.log(logObject, abp.log.levels.WARN); + }; + + abp.log.error = function (logObject) { + abp.log.log("ERROR: ", abp.log.levels.ERROR); + abp.log.log(logObject, abp.log.levels.ERROR); + }; + + abp.log.fatal = function (logObject) { + abp.log.log("FATAL: ", abp.log.levels.FATAL); + abp.log.log(logObject, abp.log.levels.FATAL); + }; + + /* LOCALIZATION ***********************************************/ + + abp.localization = abp.localization || {}; + + abp.localization.values = {}; + + abp.localization.localize = function (key, sourceName) { + if (sourceName === '_') { //A convention to suppress the localization + return key; + } + + sourceName = sourceName || abp.localization.defaultResourceName; + if (!sourceName) { + abp.log.warn('Localization source name is not specified and the defaultResourceName was not defined!'); + return key; + } + + var source = abp.localization.values[sourceName]; + if (!source) { + abp.log.warn('Could not find localization source: ' + sourceName); + return key; + } + + var value = source[key]; + if (value == undefined) { + return key; + } + + var copiedArguments = Array.prototype.slice.call(arguments, 0); + copiedArguments.splice(1, 1); + copiedArguments[0] = value; + + return abp.utils.formatString.apply(this, copiedArguments); + }; + + abp.localization.isLocalized = function (key, sourceName) { + if (sourceName === '_') { //A convention to suppress the localization + return true; + } + + sourceName = sourceName || abp.localization.defaultResourceName; + if (!sourceName) { + return false; + } + + var source = abp.localization.values[sourceName]; + if (!source) { + return false; + } + + var value = source[key]; + if (value === undefined) { + return false; + } + + return true; + }; + + abp.localization.getResource = function (name) { + return function () { + var copiedArguments = Array.prototype.slice.call(arguments, 0); + copiedArguments.splice(1, 0, name); + return abp.localization.localize.apply(this, copiedArguments); + }; + }; + + abp.localization.defaultResourceName = undefined; + abp.localization.currentCulture = { + cultureName: undefined + }; + + var getMapValue = function (packageMaps, packageName, language) { + language = language || abp.localization.currentCulture.name; + if (!packageMaps || !packageName || !language) { + return language; + } + + var packageMap = packageMaps[packageName]; + if (!packageMap) { + return language; + } + + for (var i = 0; i < packageMap.length; i++) { + var map = packageMap[i]; + if (map.name === language){ + return map.value; + } + } + + return language; + }; + + abp.localization.getLanguagesMap = function (packageName, language) { + return getMapValue(abp.localization.languagesMap, packageName, language); + }; + + abp.localization.getLanguageFilesMap = function (packageName, language) { + return getMapValue(abp.localization.languageFilesMap, packageName, language); + }; + + /* AUTHORIZATION **********************************************/ + + abp.auth = abp.auth || {}; + + abp.auth.policies = abp.auth.policies || {}; + + abp.auth.grantedPolicies = abp.auth.grantedPolicies || {}; + + abp.auth.isGranted = function (policyName) { + return abp.auth.policies[policyName] != undefined && abp.auth.grantedPolicies[policyName] != undefined; + }; + + abp.auth.isAnyGranted = function () { + if (!arguments || arguments.length <= 0) { + return true; + } + + for (var i = 0; i < arguments.length; i++) { + if (abp.auth.isGranted(arguments[i])) { + return true; + } + } + + return false; + }; + + abp.auth.areAllGranted = function () { + if (!arguments || arguments.length <= 0) { + return true; + } + + for (var i = 0; i < arguments.length; i++) { + if (!abp.auth.isGranted(arguments[i])) { + return false; + } + } + + return true; + }; + + abp.auth.tokenCookieName = 'Abp.AuthToken'; + + abp.auth.setToken = function (authToken, expireDate) { + abp.utils.setCookieValue(abp.auth.tokenCookieName, authToken, expireDate, abp.appPath, abp.domain); + }; + + abp.auth.getToken = function () { + return abp.utils.getCookieValue(abp.auth.tokenCookieName); + } + + abp.auth.clearToken = function () { + abp.auth.setToken(); + } + + /* SETTINGS *************************************************/ + + abp.setting = abp.setting || {}; + + abp.setting.values = abp.setting.values || {}; + + abp.setting.get = function (name) { + return abp.setting.values[name]; + }; + + abp.setting.getBoolean = function (name) { + var value = abp.setting.get(name); + return value == 'true' || value == 'True'; + }; + + abp.setting.getInt = function (name) { + return parseInt(abp.setting.values[name]); + }; + + /* NOTIFICATION *********************************************/ + //Defines Notification API, not implements it + + abp.notify = abp.notify || {}; + + abp.notify.success = function (message, title, options) { + abp.log.warn('abp.notify.success is not implemented!'); + }; + + abp.notify.info = function (message, title, options) { + abp.log.warn('abp.notify.info is not implemented!'); + }; + + abp.notify.warn = function (message, title, options) { + abp.log.warn('abp.notify.warn is not implemented!'); + }; + + abp.notify.error = function (message, title, options) { + abp.log.warn('abp.notify.error is not implemented!'); + }; + + /* MESSAGE **************************************************/ + //Defines Message API, not implements it + + abp.message = abp.message || {}; + + abp.message._showMessage = function (message, title) { + alert((title || '') + ' ' + message); + }; + + abp.message.info = function (message, title) { + abp.log.warn('abp.message.info is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.success = function (message, title) { + abp.log.warn('abp.message.success is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.warn = function (message, title) { + abp.log.warn('abp.message.warn is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.error = function (message, title) { + abp.log.warn('abp.message.error is not implemented!'); + return abp.message._showMessage(message, title); + }; + + abp.message.confirm = function (message, titleOrCallback, callback) { + abp.log.warn('abp.message.confirm is not properly implemented!'); + + if (titleOrCallback && !(typeof titleOrCallback == 'string')) { + callback = titleOrCallback; + } + + var result = confirm(message); + callback && callback(result); + }; + + /* UI *******************************************************/ + + abp.ui = abp.ui || {}; + + /* UI BLOCK */ + //Defines UI Block API and implements basically + + var $abpBlockArea = document.createElement('div'); + $abpBlockArea.classList.add('abp-block-area'); + + /* opts: { //Can be an object with options or a string for query a selector + * elm: a query selector (optional - default: document.body) + * busy: boolean (optional - default: false) + * promise: A promise with always or finally handler (optional - auto unblocks the ui if provided) + * } + */ + abp.ui.block = function (opts) { + if (!opts) { + opts = {}; + } else if (typeof opts == 'string') { + opts = { + elm: opts + }; + } + + var $elm = document.querySelector(opts.elm) || document.body; + + if (opts.busy) { + $abpBlockArea.classList.add('abp-block-area-busy'); + } else { + $abpBlockArea.classList.remove('abp-block-area-busy'); + } + + if (document.querySelector(opts.elm)) { + $abpBlockArea.style.position = 'absolute'; + } else { + $abpBlockArea.style.position = 'fixed'; + } + + $elm.appendChild($abpBlockArea); + + if (opts.promise) { + if (opts.promise.always) { //jQuery.Deferred style + opts.promise.always(function () { + abp.ui.unblock({ + $elm: opts.elm + }); + }); + } else if (opts.promise['finally']) { //Q style + opts.promise['finally'](function () { + abp.ui.unblock({ + $elm: opts.elm + }); + }); + } + } + }; + + /* opts: { + * + * } + */ + abp.ui.unblock = function (opts) { + var element = document.querySelector('.abp-block-area'); + if (element) { + element.classList.add('abp-block-area-disappearing'); + setTimeout(function () { + if (element) { + element.classList.remove('abp-block-area-disappearing'); + element.parentElement.removeChild(element); + } + }, 250); + } + }; + + /* UI BUSY */ + //Defines UI Busy API, not implements it + + abp.ui.setBusy = function (opts) { + if (!opts) { + opts = { + busy: true + }; + } else if (typeof opts == 'string') { + opts = { + elm: opts, + busy: true + }; + } + + abp.ui.block(opts); + }; + + abp.ui.clearBusy = function (opts) { + abp.ui.unblock(opts); + }; + + /* SIMPLE EVENT BUS *****************************************/ + + abp.event = (function () { + + var _callbacks = {}; + + var on = function (eventName, callback) { + if (!_callbacks[eventName]) { + _callbacks[eventName] = []; + } + + _callbacks[eventName].push(callback); + }; + + var off = function (eventName, callback) { + var callbacks = _callbacks[eventName]; + if (!callbacks) { + return; + } + + var index = -1; + for (var i = 0; i < callbacks.length; i++) { + if (callbacks[i] === callback) { + index = i; + break; + } + } + + if (index < 0) { + return; + } + + _callbacks[eventName].splice(index, 1); + }; + + var trigger = function (eventName) { + var callbacks = _callbacks[eventName]; + if (!callbacks || !callbacks.length) { + return; + } + + var args = Array.prototype.slice.call(arguments, 1); + for (var i = 0; i < callbacks.length; i++) { + callbacks[i].apply(this, args); + } + }; + + // Public interface /////////////////////////////////////////////////// + + return { + on: on, + off: off, + trigger: trigger + }; + })(); + + + /* UTILS ***************************************************/ + + abp.utils = abp.utils || {}; + + /* Creates a name namespace. + * Example: + * var taskService = abp.utils.createNamespace(abp, 'services.task'); + * taskService will be equal to abp.services.task + * first argument (root) must be defined first + ************************************************************/ + abp.utils.createNamespace = function (root, ns) { + var parts = ns.split('.'); + for (var i = 0; i < parts.length; i++) { + if (typeof root[parts[i]] == 'undefined') { + root[parts[i]] = {}; + } + + root = root[parts[i]]; + } + + return root; + }; + + /* Find and replaces a string (search) to another string (replacement) in + * given string (str). + * Example: + * abp.utils.replaceAll('This is a test string', 'is', 'X') = 'ThX X a test string' + ************************************************************/ + abp.utils.replaceAll = function (str, search, replacement) { + var fix = search.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + return str.replace(new RegExp(fix, 'g'), replacement); + }; + + /* Formats a string just like string.format in C#. + * Example: + * abp.utils.formatString('Hello {0}','Tuana') = 'Hello Tuana' + ************************************************************/ + abp.utils.formatString = function () { + if (arguments.length < 1) { + return null; + } + + var str = arguments[0]; + + for (var i = 1; i < arguments.length; i++) { + var placeHolder = '{' + (i - 1) + '}'; + str = abp.utils.replaceAll(str, placeHolder, arguments[i]); + } + + return str; + }; + + abp.utils.toPascalCase = function (str) { + if (!str || !str.length) { + return str; + } + + if (str.length === 1) { + return str.charAt(0).toUpperCase(); + } + + return str.charAt(0).toUpperCase() + str.substr(1); + } + + abp.utils.toCamelCase = function (str) { + if (!str || !str.length) { + return str; + } + + if (str.length === 1) { + return str.charAt(0).toLowerCase(); + } + + return str.charAt(0).toLowerCase() + str.substr(1); + } + + abp.utils.truncateString = function (str, maxLength) { + if (!str || !str.length || str.length <= maxLength) { + return str; + } + + return str.substr(0, maxLength); + }; + + abp.utils.truncateStringWithPostfix = function (str, maxLength, postfix) { + postfix = postfix || '...'; + + if (!str || !str.length || str.length <= maxLength) { + return str; + } + + if (maxLength <= postfix.length) { + return postfix.substr(0, maxLength); + } + + return str.substr(0, maxLength - postfix.length) + postfix; + }; + + abp.utils.isFunction = function (obj) { + return !!(obj && obj.constructor && obj.call && obj.apply); + }; + + /** + * parameterInfos should be an array of { name, value } objects + * where name is query string parameter name and value is it's value. + * includeQuestionMark is true by default. + */ + abp.utils.buildQueryString = function (parameterInfos, includeQuestionMark) { + if (includeQuestionMark === undefined) { + includeQuestionMark = true; + } + + var qs = ''; + + function addSeperator() { + if (!qs.length) { + if (includeQuestionMark) { + qs = qs + '?'; + } + } else { + qs = qs + '&'; + } + } + + for (var i = 0; i < parameterInfos.length; ++i) { + var parameterInfo = parameterInfos[i]; + if (parameterInfo.value === undefined) { + continue; + } + + if (parameterInfo.value === null) { + parameterInfo.value = ''; + } + + addSeperator(); + + if (parameterInfo.value.toJSON && typeof parameterInfo.value.toJSON === "function") { + qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value.toJSON()); + } else if (Array.isArray(parameterInfo.value) && parameterInfo.value.length) { + for (var j = 0; j < parameterInfo.value.length; j++) { + if (j > 0) { + addSeperator(); + } + + qs = qs + parameterInfo.name + '[' + j + ']=' + encodeURIComponent(parameterInfo.value[j]); + } + } else { + qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value); + } + } + + return qs; + } + + /** + * Sets a cookie value for given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @param {string} value + * @param {Date} expireDate (optional). If not specified the cookie will expire at the end of session. + * @param {string} path (optional) + */ + abp.utils.setCookieValue = function (key, value, expireDate, path) { + var cookieValue = encodeURIComponent(key) + '='; + + if (value) { + cookieValue = cookieValue + encodeURIComponent(value); + } + + if (expireDate) { + cookieValue = cookieValue + "; expires=" + expireDate.toUTCString(); + } + + if (path) { + cookieValue = cookieValue + "; path=" + path; + } + + document.cookie = cookieValue; + }; + + /** + * Gets a cookie with given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @returns {string} Cookie value or null + */ + abp.utils.getCookieValue = function (key) { + var equalities = document.cookie.split('; '); + for (var i = 0; i < equalities.length; i++) { + if (!equalities[i]) { + continue; + } + + var splitted = equalities[i].split('='); + if (splitted.length != 2) { + continue; + } + + if (decodeURIComponent(splitted[0]) === key) { + return decodeURIComponent(splitted[1] || ''); + } + } + + return null; + }; + + /** + * Deletes cookie for given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @param {string} path (optional) + */ + abp.utils.deleteCookie = function (key, path) { + var cookieValue = encodeURIComponent(key) + '='; + + cookieValue = cookieValue + "; expires=" + (new Date(new Date().getTime() - 86400000)).toUTCString(); + + if (path) { + cookieValue = cookieValue + "; path=" + path; + } + + document.cookie = cookieValue; + } + + /* SECURITY ***************************************/ + abp.security = abp.security || {}; + abp.security.antiForgery = abp.security.antiForgery || {}; + + abp.security.antiForgery.tokenCookieName = 'XSRF-TOKEN'; + abp.security.antiForgery.tokenHeaderName = 'X-XSRF-TOKEN'; + + abp.security.antiForgery.getToken = function () { + return abp.utils.getCookieValue(abp.security.antiForgery.tokenCookieName); + }; + + /* CLOCK *****************************************/ + abp.clock = abp.clock || {}; + + abp.clock.kind = 'Unspecified'; + + abp.clock.supportsMultipleTimezone = function () { + return abp.clock.kind === 'Utc'; + }; + + var toLocal = function (date) { + return new Date( + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() + ); + }; + + var toUtc = function (date) { + return Date.UTC( + date.getUTCFullYear(), + date.getUTCMonth(), + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds(), + date.getUTCMilliseconds() + ); + }; + + abp.clock.now = function () { + if (abp.clock.kind === 'Utc') { + return toUtc(new Date()); + } + return new Date(); + }; + + abp.clock.normalize = function (date) { + var kind = abp.clock.kind; + + if (kind === 'Unspecified') { + return date; + } + + if (kind === 'Local') { + return toLocal(date); + } + + if (kind === 'Utc') { + return toUtc(date); + } + }; + +})(); diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js index 6e2ee001b8..3087635e7d 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js @@ -1,393 +1,395 @@ -var abp = abp || {}; -(function($) { - - if (!$) { - throw "abp/jquery library requires the jquery library included to the page!"; - } - - // ABP CORE OVERRIDES ///////////////////////////////////////////////////// - - abp.message._showMessage = function (message, title) { - alert((title || '') + ' ' + message); - - return $.Deferred(function ($dfd) { - $dfd.resolve(); - }); - }; - - abp.message.confirm = function (message, titleOrCallback, callback) { - if (titleOrCallback && !(typeof titleOrCallback == 'string')) { - callback = titleOrCallback; - } - - var result = confirm(message); - callback && callback(result); - - return $.Deferred(function ($dfd) { - $dfd.resolve(result); - }); - }; - - abp.utils.isFunction = function (obj) { - return $.isFunction(obj); - }; - - // JQUERY EXTENSIONS ////////////////////////////////////////////////////// - - $.fn.findWithSelf = function (selector) { - return this.filter(selector).add(this.find(selector)); - }; - - // DOM //////////////////////////////////////////////////////////////////// - - abp.dom = abp.dom || {}; - - abp.dom.onNodeAdded = function (callback) { - abp.event.on('abp.dom.nodeAdded', callback); - }; - - abp.dom.onNodeRemoved = function (callback) { - abp.event.on('abp.dom.nodeRemoved', callback); - }; - - var mutationObserverCallback = function (mutationsList) { - for (var i = 0; i < mutationsList.length; i++) { - var mutation = mutationsList[i]; - if (mutation.type === 'childList') { - if (mutation.addedNodes && mutation.removedNodes.length) { - for (var k = 0; k < mutation.removedNodes.length; k++) { - abp.event.trigger( - 'abp.dom.nodeRemoved', - { - $el: $(mutation.removedNodes[k]) - } - ); - } - } - - if (mutation.addedNodes && mutation.addedNodes.length) { - for (var j = 0; j < mutation.addedNodes.length; j++) { - abp.event.trigger( - 'abp.dom.nodeAdded', - { - $el: $(mutation.addedNodes[j]) - } - ); - } - } - } - } - }; - - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); - - // AJAX /////////////////////////////////////////////////////////////////// - - abp.ajax = function (userOptions) { - userOptions = userOptions || {}; - - var options = $.extend(true, {}, abp.ajax.defaultOpts, userOptions); - - options.success = undefined; - options.error = undefined; - - return $.Deferred(function ($dfd) { - $.ajax(options) - .done(function (data, textStatus, jqXHR) { - $dfd.resolve(data); - userOptions.success && userOptions.success(data); - }).fail(function (jqXHR) { - if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') { - abp.ajax.handleAbpErrorResponse(jqXHR, userOptions, $dfd); - } else { - abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd); - } - }); - }); - }; - - $.extend(abp.ajax, { - defaultOpts: { - dataType: 'json', - type: 'POST', - contentType: 'application/json', - headers: { - 'X-Requested-With': 'XMLHttpRequest' - } - }, - - defaultError: { - message: 'An error has occurred!', - details: 'Error detail not sent by server.' - }, - - defaultError401: { - message: 'You are not authenticated!', - details: 'You should be authenticated (sign in) in order to perform this operation.' - }, - - defaultError403: { - message: 'You are not authorized!', - details: 'You are not allowed to perform this operation.' - }, - - defaultError404: { - message: 'Resource not found!', - details: 'The resource requested could not found on the server.' - }, - - logError: function (error) { - abp.log.error(error); - }, - - showError: function (error) { - if (error.details) { - return abp.message.error(error.details, error.message); - } else { - return abp.message.error(error.message || abp.ajax.defaultError.message); - } - }, - - handleTargetUrl: function (targetUrl) { - if (!targetUrl) { - location.href = abp.appPath; - } else { - location.href = targetUrl; - } - }, - - handleErrorStatusCode: function (status) { - switch (status) { - case 401: - abp.ajax.handleUnAuthorizedRequest( - abp.ajax.showError(abp.ajax.defaultError401), - abp.appPath - ); - break; - case 403: - abp.ajax.showError(abp.ajax.defaultError403); - break; - case 404: - abp.ajax.showError(abp.ajax.defaultError404); - break; - default: - abp.ajax.showError(abp.ajax.defaultError); - break; - } - }, - - handleNonAbpErrorResponse: function (jqXHR, userOptions, $dfd) { - if (userOptions.abpHandleError !== false) { - abp.ajax.handleErrorStatusCode(jqXHR.status); - } - - $dfd.reject.apply(this, arguments); - userOptions.error && userOptions.error.apply(this, arguments); - }, - - handleAbpErrorResponse: function (jqXHR, userOptions, $dfd) { - var messagePromise = null; - - if (userOptions.abpHandleError !== false) { - messagePromise = abp.ajax.showError(jqXHR.responseJSON.error); - } - - abp.ajax.logError(jqXHR.responseJSON.error); - - $dfd && $dfd.reject(jqXHR.responseJSON.error, jqXHR); - userOptions.error && userOptions.error(jqXHR.responseJSON.error, jqXHR); - - if (jqXHR.status === 401 && userOptions.abpHandleError !== false) { - abp.ajax.handleUnAuthorizedRequest(messagePromise); - } - }, - - handleUnAuthorizedRequest: function (messagePromise, targetUrl) { - if (messagePromise) { - messagePromise.done(function () { - abp.ajax.handleTargetUrl(targetUrl); - }); - } else { - abp.ajax.handleTargetUrl(targetUrl); - } - }, - - blockUI: function (options) { - if (options.blockUI) { - if (options.blockUI === true) { //block whole page - abp.ui.setBusy(); - } else { //block an element - abp.ui.setBusy(options.blockUI); - } - } - }, - - unblockUI: function (options) { - if (options.blockUI) { - if (options.blockUI === true) { //unblock whole page - abp.ui.clearBusy(); - } else { //unblock an element - abp.ui.clearBusy(options.blockUI); - } - } - }, - - ajaxSendHandler: function (event, request, settings) { - var token = abp.security.antiForgery.getToken(); - if (!token) { - return; - } - - if (!settings.headers || settings.headers[abp.security.antiForgery.tokenHeaderName] === undefined) { - request.setRequestHeader(abp.security.antiForgery.tokenHeaderName, token); - } - } - }); - - $(document).ajaxSend(function (event, request, settings) { - return abp.ajax.ajaxSendHandler(event, request, settings); - }); - - abp.event.on('abp.configurationInitialized', function () { - var l = abp.localization.getResource('AbpUi'); - - abp.ajax.defaultError.message = l('DefaultErrorMessage'); - abp.ajax.defaultError.details = l('DefaultErrorMessageDetail'); - abp.ajax.defaultError401.message = l('DefaultErrorMessage401'); - abp.ajax.defaultError401.details = l('DefaultErrorMessage401Detail'); - abp.ajax.defaultError403.message = l('DefaultErrorMessage403'); - abp.ajax.defaultError403.details = l('DefaultErrorMessage403Detail'); - abp.ajax.defaultError404.message = l('DefaultErrorMessage404'); - abp.ajax.defaultError404.details = l('DefaultErrorMessage404Detail'); - }); - - // RESOURCE LOADER //////////////////////////////////////////////////////// - - /* UrlStates enum */ - var UrlStates = { - LOADING: 'LOADING', - LOADED: 'LOADED', - FAILED: 'FAILED' - }; - - /* UrlInfo class */ - function UrlInfo(url) { - this.url = url; - this.state = UrlStates.LOADING; - this.loadCallbacks = []; - this.failCallbacks = []; - } - - UrlInfo.prototype.succeed = function () { - this.state = UrlStates.LOADED; - for (var i = 0; i < this.loadCallbacks.length; i++) { - this.loadCallbacks[i](); - } - }; - - UrlInfo.prototype.failed = function () { - this.state = UrlStates.FAILED; - for (var i = 0; i < this.failCallbacks.length; i++) { - this.failCallbacks[i](); - } - }; - - UrlInfo.prototype.handleCallbacks = function (loadCallback, failCallback) { - switch (this.state) { - case UrlStates.LOADED: - loadCallback && loadCallback(); - break; - case UrlStates.FAILED: - failCallback && failCallback(); - break; - case UrlStates.LOADING: - this.addCallbacks(loadCallback, failCallback); - break; - } - }; - - UrlInfo.prototype.addCallbacks = function (loadCallback, failCallback) { - loadCallback && this.loadCallbacks.push(loadCallback); - failCallback && this.failCallbacks.push(failCallback); - }; - - /* ResourceLoader API */ - - abp.ResourceLoader = (function () { - - var _urlInfos = {}; - - function getCacheKey(url) { - return url; - } - - function appendTimeToUrl(url) { - - if (url.indexOf('?') < 0) { - url += '?'; - } else { - url += '&'; - } - - url += '_=' + new Date().getTime(); - - return url; - } - - var _loadFromUrl = function (url, loadCallback, failCallback, serverLoader) { - - var cacheKey = getCacheKey(url); - - var urlInfo = _urlInfos[cacheKey]; - - if (urlInfo) { - urlInfo.handleCallbacks(loadCallback, failCallback); - return; - } - - _urlInfos[cacheKey] = urlInfo = new UrlInfo(url); - urlInfo.addCallbacks(loadCallback, failCallback); - - serverLoader(urlInfo); - }; - - var _loadScript = function (url, loadCallback, failCallback) { - _loadFromUrl(url, loadCallback, failCallback, function (urlInfo) { - $.get({ - url: url, - dataType: 'text' - }) - .done(function (script) { - $.globalEval(script); - urlInfo.succeed(); - }) - .fail(function () { - urlInfo.failed(); - }); - }); - }; - - var _loadStyle = function (url) { - _loadFromUrl(url, undefined, undefined, function (urlInfo) { - - $('', { - rel: 'stylesheet', - type: 'text/css', - href: appendTimeToUrl(url) - }).appendTo('head'); - }); - }; - - return { - loadScript: _loadScript, - loadStyle: _loadStyle - } - })(); - +var abp = abp || {}; +(function($) { + + if (!$) { + throw "abp/jquery library requires the jquery library included to the page!"; + } + + // ABP CORE OVERRIDES ///////////////////////////////////////////////////// + + abp.message._showMessage = function (message, title) { + alert((title || '') + ' ' + message); + + return $.Deferred(function ($dfd) { + $dfd.resolve(); + }); + }; + + abp.message.confirm = function (message, titleOrCallback, callback) { + if (titleOrCallback && !(typeof titleOrCallback == 'string')) { + callback = titleOrCallback; + } + + var result = confirm(message); + callback && callback(result); + + return $.Deferred(function ($dfd) { + $dfd.resolve(result); + }); + }; + + abp.utils.isFunction = function (obj) { + return $.isFunction(obj); + }; + + // JQUERY EXTENSIONS ////////////////////////////////////////////////////// + + $.fn.findWithSelf = function (selector) { + return this.filter(selector).add(this.find(selector)); + }; + + // DOM //////////////////////////////////////////////////////////////////// + + abp.dom = abp.dom || {}; + + abp.dom.onNodeAdded = function (callback) { + abp.event.on('abp.dom.nodeAdded', callback); + }; + + abp.dom.onNodeRemoved = function (callback) { + abp.event.on('abp.dom.nodeRemoved', callback); + }; + + var mutationObserverCallback = function (mutationsList) { + for (var i = 0; i < mutationsList.length; i++) { + var mutation = mutationsList[i]; + if (mutation.type === 'childList') { + if (mutation.addedNodes && mutation.removedNodes.length) { + for (var k = 0; k < mutation.removedNodes.length; k++) { + abp.event.trigger( + 'abp.dom.nodeRemoved', + { + $el: $(mutation.removedNodes[k]) + } + ); + } + } + + if (mutation.addedNodes && mutation.addedNodes.length) { + for (var j = 0; j < mutation.addedNodes.length; j++) { + abp.event.trigger( + 'abp.dom.nodeAdded', + { + $el: $(mutation.addedNodes[j]) + } + ); + } + } + } + } + }; + + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); + + // AJAX /////////////////////////////////////////////////////////////////// + + abp.ajax = function (userOptions) { + userOptions = userOptions || {}; + + var options = $.extend(true, {}, abp.ajax.defaultOpts, userOptions); + + options.success = undefined; + options.error = undefined; + + return $.Deferred(function ($dfd) { + $.ajax(options) + .done(function (data, textStatus, jqXHR) { + $dfd.resolve(data); + userOptions.success && userOptions.success(data); + }).fail(function (jqXHR) { + if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') { + abp.ajax.handleAbpErrorResponse(jqXHR, userOptions, $dfd); + } else { + abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd); + } + }); + }); + }; + + $.extend(abp.ajax, { + defaultOpts: { + dataType: 'json', + type: 'POST', + contentType: 'application/json', + headers: { + 'X-Requested-With': 'XMLHttpRequest' + } + }, + + defaultError: { + message: 'An error has occurred!', + details: 'Error detail not sent by server.' + }, + + defaultError401: { + message: 'You are not authenticated!', + details: 'You should be authenticated (sign in) in order to perform this operation.' + }, + + defaultError403: { + message: 'You are not authorized!', + details: 'You are not allowed to perform this operation.' + }, + + defaultError404: { + message: 'Resource not found!', + details: 'The resource requested could not found on the server.' + }, + + logError: function (error) { + abp.log.error(error); + }, + + showError: function (error) { + if (error.details) { + return abp.message.error(error.details, error.message); + } else { + return abp.message.error(error.message || abp.ajax.defaultError.message); + } + }, + + handleTargetUrl: function (targetUrl) { + if (!targetUrl) { + location.href = abp.appPath; + } else { + location.href = targetUrl; + } + }, + + handleErrorStatusCode: function (status) { + switch (status) { + case 401: + abp.ajax.handleUnAuthorizedRequest( + abp.ajax.showError(abp.ajax.defaultError401), + abp.appPath + ); + break; + case 403: + abp.ajax.showError(abp.ajax.defaultError403); + break; + case 404: + abp.ajax.showError(abp.ajax.defaultError404); + break; + default: + abp.ajax.showError(abp.ajax.defaultError); + break; + } + }, + + handleNonAbpErrorResponse: function (jqXHR, userOptions, $dfd) { + if (userOptions.abpHandleError !== false) { + abp.ajax.handleErrorStatusCode(jqXHR.status); + } + + $dfd.reject.apply(this, arguments); + userOptions.error && userOptions.error.apply(this, arguments); + }, + + handleAbpErrorResponse: function (jqXHR, userOptions, $dfd) { + var messagePromise = null; + + if (userOptions.abpHandleError !== false) { + messagePromise = abp.ajax.showError(jqXHR.responseJSON.error); + } + + abp.ajax.logError(jqXHR.responseJSON.error); + + $dfd && $dfd.reject(jqXHR.responseJSON.error, jqXHR); + userOptions.error && userOptions.error(jqXHR.responseJSON.error, jqXHR); + + if (jqXHR.status === 401 && userOptions.abpHandleError !== false) { + abp.ajax.handleUnAuthorizedRequest(messagePromise); + } + }, + + handleUnAuthorizedRequest: function (messagePromise, targetUrl) { + if (messagePromise) { + messagePromise.done(function () { + abp.ajax.handleTargetUrl(targetUrl); + }); + } else { + abp.ajax.handleTargetUrl(targetUrl); + } + }, + + blockUI: function (options) { + if (options.blockUI) { + if (options.blockUI === true) { //block whole page + abp.ui.setBusy(); + } else { //block an element + abp.ui.setBusy(options.blockUI); + } + } + }, + + unblockUI: function (options) { + if (options.blockUI) { + if (options.blockUI === true) { //unblock whole page + abp.ui.clearBusy(); + } else { //unblock an element + abp.ui.clearBusy(options.blockUI); + } + } + }, + + ajaxSendHandler: function (event, request, settings) { + var token = abp.security.antiForgery.getToken(); + if (!token) { + return; + } + + if (!settings.headers || settings.headers[abp.security.antiForgery.tokenHeaderName] === undefined) { + request.setRequestHeader(abp.security.antiForgery.tokenHeaderName, token); + } + } + }); + + $(document).ajaxSend(function (event, request, settings) { + return abp.ajax.ajaxSendHandler(event, request, settings); + }); + + abp.event.on('abp.configurationInitialized', function () { + var l = abp.localization.getResource('AbpUi'); + + abp.ajax.defaultError.message = l('DefaultErrorMessage'); + abp.ajax.defaultError.details = l('DefaultErrorMessageDetail'); + abp.ajax.defaultError401.message = l('DefaultErrorMessage401'); + abp.ajax.defaultError401.details = l('DefaultErrorMessage401Detail'); + abp.ajax.defaultError403.message = l('DefaultErrorMessage403'); + abp.ajax.defaultError403.details = l('DefaultErrorMessage403Detail'); + abp.ajax.defaultError404.message = l('DefaultErrorMessage404'); + abp.ajax.defaultError404.details = l('DefaultErrorMessage404Detail'); + }); + + // RESOURCE LOADER //////////////////////////////////////////////////////// + + /* UrlStates enum */ + var UrlStates = { + LOADING: 'LOADING', + LOADED: 'LOADED', + FAILED: 'FAILED' + }; + + /* UrlInfo class */ + function UrlInfo(url) { + this.url = url; + this.state = UrlStates.LOADING; + this.loadCallbacks = []; + this.failCallbacks = []; + } + + UrlInfo.prototype.succeed = function () { + this.state = UrlStates.LOADED; + for (var i = 0; i < this.loadCallbacks.length; i++) { + this.loadCallbacks[i](); + } + }; + + UrlInfo.prototype.failed = function () { + this.state = UrlStates.FAILED; + for (var i = 0; i < this.failCallbacks.length; i++) { + this.failCallbacks[i](); + } + }; + + UrlInfo.prototype.handleCallbacks = function (loadCallback, failCallback) { + switch (this.state) { + case UrlStates.LOADED: + loadCallback && loadCallback(); + break; + case UrlStates.FAILED: + failCallback && failCallback(); + break; + case UrlStates.LOADING: + this.addCallbacks(loadCallback, failCallback); + break; + } + }; + + UrlInfo.prototype.addCallbacks = function (loadCallback, failCallback) { + loadCallback && this.loadCallbacks.push(loadCallback); + failCallback && this.failCallbacks.push(failCallback); + }; + + /* ResourceLoader API */ + + abp.ResourceLoader = (function () { + + var _urlInfos = {}; + + function getCacheKey(url) { + return url; + } + + function appendTimeToUrl(url) { + + if (url.indexOf('?') < 0) { + url += '?'; + } else { + url += '&'; + } + + url += '_=' + new Date().getTime(); + + return url; + } + + var _loadFromUrl = function (url, loadCallback, failCallback, serverLoader) { + + var cacheKey = getCacheKey(url); + + var urlInfo = _urlInfos[cacheKey]; + + if (urlInfo) { + urlInfo.handleCallbacks(loadCallback, failCallback); + return; + } + + _urlInfos[cacheKey] = urlInfo = new UrlInfo(url); + urlInfo.addCallbacks(loadCallback, failCallback); + + serverLoader(urlInfo); + }; + + var _loadScript = function (url, loadCallback, failCallback) { + _loadFromUrl(url, loadCallback, failCallback, function (urlInfo) { + $.get({ + url: url, + dataType: 'text' + }) + .done(function (script) { + $.globalEval(script); + urlInfo.succeed(); + }) + .fail(function () { + urlInfo.failed(); + }); + }); + }; + + var _loadStyle = function (url) { + _loadFromUrl(url, undefined, undefined, function (urlInfo) { + + $('', { + rel: 'stylesheet', + type: 'text/css', + href: appendTimeToUrl(url) + }).appendTo('head'); + }); + }; + + return { + loadScript: _loadScript, + loadStyle: _loadStyle + } + })(); + })(jQuery); \ No newline at end of file diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/luxon/abp.luxon.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/luxon/abp.luxon.js new file mode 100644 index 0000000000..b04de7cadf --- /dev/null +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/luxon/abp.luxon.js @@ -0,0 +1,46 @@ +var abp = abp || {}; +(function () { + + if (!luxon) { + throw "abp/luxon library requires the luxon library included to the page!"; + } + + /* TIMING *************************************************/ + + abp.timing = abp.timing || {}; + + var setObjectValue = function (obj, property, value) { + if (typeof property === "string") { + property = property.split('.'); + } + + if (property.length > 1) { + var p = property.shift(); + setObjectValue(obj[p], property, value); + } else { + obj[property[0]] = value; + } + } + + var getObjectValue = function (obj, property) { + return property.split('.').reduce((a, v) => a[v], obj) + } + + abp.timing.convertFieldsToIsoDate = function (form, fields) { + for (var field of fields) { + var dateTime = luxon.DateTime + .fromFormat( + getObjectValue(form, field), + abp.localization.currentCulture.dateTimeFormat.shortDatePattern, + {locale: abp.localization.currentCulture.cultureName} + ); + + if (!dateTime.invalid) { + setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss")) + } + } + + return form; + } + +})(jQuery); diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js index 8aa707ec0d..359d2f7247 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js @@ -7,49 +7,50 @@ compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare; /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 + Copyright (c) Microsoft Corporation. - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ /* global Reflect, Promise */ - - var extendStatics = function(d, b) { + var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + function (d, b) { for (var p in b) + if (b.hasOwnProperty(p)) + d[p] = b[p]; }; return extendStatics(d, b); }; - function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } - - var __assign = function() { + var __assign = function () { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; - function __rest(s, e) { var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) @@ -57,161 +58,247 @@ } return t; } - function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } - function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } + return function (target, key) { decorator(target, key, paramIndex); }; } - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") + return Reflect.metadata(metadataKey, metadataValue); } - function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function fulfilled(value) { try { + step(generator.next(value)); + } + catch (e) { + reject(e); + } } + function rejected(value) { try { + step(generator["throw"](value)); + } + catch (e) { + reject(e); + } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } - function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + var _ = { label: 0, sent: function () { if (t[0] & 1) + throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } + catch (e) { + op = [6, e]; + y = 0; + } + finally { + f = t = 0; } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; } } - + var __createBinding = Object.create ? (function (o, m, k, k2) { + if (k2 === undefined) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } }); + }) : (function (o, m, k, k2) { + if (k2 === undefined) + k2 = k; + o[k2] = m[k]; + }); function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + for (var p in m) + if (p !== "default" && !exports.hasOwnProperty(p)) + __createBinding(exports, m, p); } - function __values(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; + if (m) + return m.call(o); + if (o && typeof o.length === "number") + return { + next: function () { + if (o && i >= o.length) + o = void 0; + return { value: o && o[i++], done: !o }; + } + }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } - function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; + if (!m) + return o; var i = m.call(o), r, ar = [], e; try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } + catch (error) { + e = { error: error }; } - catch (error) { e = { error: error }; } finally { try { - if (r && !r.done && (m = i["return"])) m.call(i); + if (r && !r.done && (m = i["return"])) + m.call(i); + } + finally { + if (e) + throw e.error; } - finally { if (e) throw e.error; } } return ar; } - function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } - function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var s = 0, i = 0, il = arguments.length; i < il; i++) + s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; - }; - + } + ; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function verb(n) { if (g[n]) + i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { + step(g[n](v)); + } + catch (e) { + settle(q[0][3], e); + } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + function settle(f, v) { if (f(v), q.shift(), q.length) + resume(q[0][0], q[0][1]); } } - function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } - function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } } - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + if (Object.defineProperty) { + Object.defineProperty(cooked, "raw", { value: raw }); + } + else { + cooked.raw = raw; + } return cooked; + } + ; + var __setModuleDefault = Object.create ? (function (o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function (o, v) { + o["default"] = v; }; - function __importStar(mod) { - if (mod && mod.__esModule) return mod; + if (mod && mod.__esModule) + return mod; var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; + if (mod != null) + for (var k in mod) + if (Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + __setModuleDefault(result, mod); return result; } - function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } - function __classPrivateFieldGet(receiver, privateMap) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return privateMap.get(receiver); } - function __classPrivateFieldSet(receiver, privateMap, value) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to set private field on non-instance"); @@ -220,7 +307,6 @@ return value; } - /* tslint:disable:no-non-null-assertion */ var ListNode = /** @class */ (function () { function ListNode(value) { this.value = value; @@ -235,21 +321,21 @@ get: function () { return this.first; }, - enumerable: true, + enumerable: false, configurable: true }); Object.defineProperty(LinkedList.prototype, "tail", { get: function () { return this.last; }, - enumerable: true, + enumerable: false, configurable: true }); Object.defineProperty(LinkedList.prototype, "length", { get: function () { return this.size; }, - enumerable: true, + enumerable: false, configurable: true }); LinkedList.prototype.attach = function (value, previousNode, nextNode) { @@ -591,6 +677,14 @@ return LinkedList; }()); + /* + * Public API Surface of utils + */ + + /** + * Generated bundle index. Do not edit. + */ + exports.LinkedList = LinkedList; exports.ListNode = ListNode; diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 18a9fb2df7..2c5d45ddcb 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","ng://@abp/utils/lib/linked-list.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js index b65fa8f40f..57b22e5188 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("just-compare")):"function"==typeof define&&define.amd?define("@abp/utils",["exports","just-compare"],r):r(((t=t||self).abp=t.abp||{},t.abp.utils=t.abp.utils||{},t.abp.utils.common={}),t.compare)}(this,(function(t,r){"use strict";r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;function e(t,r){var e,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(o){return function(u){return function(o){if(e)throw new TypeError("Generator is already executing.");for(;a;)try{if(e=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(i)throw i.error}}return a}function i(){for(var t=[],r=0;r=this.size)return this.addTail(t);if(r<=0)return this.addHead(t);var e=this.get(r);return this.attach(t,e.previous,e)},t.prototype.addHead=function(t){var r=new o(t);return r.next=this.first,this.first?this.first.previous=r:this.last=r,this.first=r,this.size++,r},t.prototype.addTail=function(t){var r=new o(t);return this.first?(r.previous=this.last,this.last.next=r,this.last=r):(this.first=r,this.last=r),this.size++,r},t.prototype.addManyAfter=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i,i.next):this.addManyTail(t)},t.prototype.addManyBefore=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i.previous,i):this.addManyHead(t)},t.prototype.addManyByIndex=function(t,r){if(r<0&&(r+=this.size),r<=0)return this.addManyHead(t);if(r>=this.size)return this.addManyTail(t);var e=this.get(r);return this.attachMany(t,e.previous,e)},t.prototype.addManyHead=function(t){var r=this;return t.reduceRight((function(t,e){return t.unshift(r.addHead(e)),t}),[])},t.prototype.addManyTail=function(t){var r=this;return t.map((function(t){return r.addTail(t)}))},t.prototype.drop=function(){var t=this;return{byIndex:function(r){return t.dropByIndex(r)},byValue:function(){for(var r=[],e=0;e=this.size)return[];t=Math.min(t,this.size-r);for(var e=[];t--;){var n=this.get(r);e.push(this.detach(n))}return e},t.prototype.dropManyHead=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.unshift(this.dropHead());return r},t.prototype.dropManyTail=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.push(this.dropTail());return r},t.prototype.find=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return r},t.prototype.findIndex=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return e;return-1},t.prototype.forEach=function(t){for(var r=this.first,e=0;r;e++,r=r.next)t(r,e,this)},t.prototype.get=function(t){return this.find((function(r,e){return t===e}))},t.prototype.indexOf=function(t,e){return void 0===e&&(e=r),this.findIndex((function(r){return e(r.value,t)}))},t.prototype.toArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r.value})),t},t.prototype.toNodeArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r})),t},t.prototype.toString=function(t){return void 0===t&&(t=JSON.stringify),this.toArray().map((function(r){return t(r)})).join(" <-> ")},t.prototype[Symbol.iterator]=function(){var t;return e(this,(function(r){switch(r.label){case 0:t=this.first,0,r.label=1;case 1:return t?[4,t.value]:[3,4];case 2:r.sent(),r.label=3;case 3:return t=t.next,[3,1];case 4:return[2]}}))},t}();t.LinkedList=a,t.ListNode=o,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("just-compare")):"function"==typeof define&&define.amd?define("@abp/utils",["exports","just-compare"],r):r(((t=t||self).abp=t.abp||{},t.abp.utils=t.abp.utils||{},t.abp.utils.common={}),t.compare)}(this,(function(t,r){"use strict";r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;function e(t,r){var e,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(o){return function(u){return function(o){if(e)throw new TypeError("Generator is already executing.");for(;a;)try{if(e=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(i)throw i.error}}return a}function i(){for(var t=[],r=0;r=this.size)return this.addTail(t);if(r<=0)return this.addHead(t);var e=this.get(r);return this.attach(t,e.previous,e)},t.prototype.addHead=function(t){var r=new o(t);return r.next=this.first,this.first?this.first.previous=r:this.last=r,this.first=r,this.size++,r},t.prototype.addTail=function(t){var r=new o(t);return this.first?(r.previous=this.last,this.last.next=r,this.last=r):(this.first=r,this.last=r),this.size++,r},t.prototype.addManyAfter=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i,i.next):this.addManyTail(t)},t.prototype.addManyBefore=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i.previous,i):this.addManyHead(t)},t.prototype.addManyByIndex=function(t,r){if(r<0&&(r+=this.size),r<=0)return this.addManyHead(t);if(r>=this.size)return this.addManyTail(t);var e=this.get(r);return this.attachMany(t,e.previous,e)},t.prototype.addManyHead=function(t){var r=this;return t.reduceRight((function(t,e){return t.unshift(r.addHead(e)),t}),[])},t.prototype.addManyTail=function(t){var r=this;return t.map((function(t){return r.addTail(t)}))},t.prototype.drop=function(){var t=this;return{byIndex:function(r){return t.dropByIndex(r)},byValue:function(){for(var r=[],e=0;e=this.size)return[];t=Math.min(t,this.size-r);for(var e=[];t--;){var n=this.get(r);e.push(this.detach(n))}return e},t.prototype.dropManyHead=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.unshift(this.dropHead());return r},t.prototype.dropManyTail=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.push(this.dropTail());return r},t.prototype.find=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return r},t.prototype.findIndex=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return e;return-1},t.prototype.forEach=function(t){for(var r=this.first,e=0;r;e++,r=r.next)t(r,e,this)},t.prototype.get=function(t){return this.find((function(r,e){return t===e}))},t.prototype.indexOf=function(t,e){return void 0===e&&(e=r),this.findIndex((function(r){return e(r.value,t)}))},t.prototype.toArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r.value})),t},t.prototype.toNodeArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r})),t},t.prototype.toString=function(t){return void 0===t&&(t=JSON.stringify),this.toArray().map((function(r){return t(r)})).join(" <-> ")},t.prototype[Symbol.iterator]=function(){var t;return e(this,(function(r){switch(r.label){case 0:t=this.first,0,r.label=1;case 1:return t?[4,t.value]:[3,4];case 2:r.sent(),r.label=3;case 3:return t=t.next,[3,1];case 4:return[2]}}))},t}();t.LinkedList=a,t.ListNode=o,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=abp-utils.umd.min.js.map \ No newline at end of file diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index 155d2d7973..b4e4d3e0a1 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@abp/utils/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","Object","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css new file mode 100644 index 0000000000..35ddb6a220 --- /dev/null +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css @@ -0,0 +1,11392 @@ +/*! + * Bootstrap v4.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #007bff; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #dc3545; + --orange: #fd7e14; + --yellow: #ffc107; + --green: #28a745; + --teal: #20c997; + --cyan: #17a2b8; + --white: #fff; + --gray: #6c757d; + --gray-dark: #343a40; + --primary: #007bff; + --secondary: #6c757d; + --success: #28a745; + --info: #17a2b8; + --warning: #ffc107; + --danger: #dc3545; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: left; + background-color: #fff; +} + +[tabindex="-1"]:focus:not(:focus-visible) { + outline: 0 !important; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -.25em; +} + +sup { + top: -.5em; +} + +a { + color: #007bff; + text-decoration: none; + background-color: transparent; +} + +a:hover { + color: #0056b3; + text-decoration: underline; +} + +a:not([href]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +table { + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; +} + +th { + text-align: inherit; +} + +label { + display: inline-block; + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +select { + word-wrap: normal; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + overflow: auto; + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +summary { + display: list-item; + cursor: pointer; +} + +template { + display: none; +} + +[hidden] { + display: none !important; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} + +h1, .h1 { + font-size: 2.5rem; +} + +h2, .h2 { + font-size: 2rem; +} + +h3, .h3 { + font-size: 1.75rem; +} + +h4, .h4 { + font-size: 1.5rem; +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: 400; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; +} + +.blockquote-footer::before { + content: "\2014\00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #6c757d; +} + +code { + font-size: 87.5%; + color: #e83e8c; + word-wrap: break-word; +} + +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 87.5%; + color: #212529; +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1140px; + } +} + +.container-fluid, .container-sm, .container-md, .container-lg, .container-xl { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container, .container-sm { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container, .container-sm, .container-md { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container, .container-sm, .container-md, .container-lg { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container, .container-sm, .container-md, .container-lg, .container-xl { + max-width: 1140px; + } +} + +.row { + display: flex; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px; +} + +.col { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; +} + +.row-cols-1 > * { + flex: 0 0 100%; + max-width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 50%; + max-width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.row-cols-4 > * { + flex: 0 0 25%; + max-width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 20%; + max-width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; +} + +.col-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + order: -1; +} + +.order-last { + order: 13; +} + +.order-0 { + order: 0; +} + +.order-1 { + order: 1; +} + +.order-2 { + order: 2; +} + +.order-3 { + order: 3; +} + +.order-4 { + order: 4; +} + +.order-5 { + order: 5; +} + +.order-6 { + order: 6; +} + +.order-7 { + order: 7; +} + +.order-8 { + order: 8; +} + +.order-9 { + order: 9; +} + +.order-10 { + order: 10; +} + +.order-11 { + order: 11; +} + +.order-12 { + order: 12; +} + +.offset-1 { + margin-right: 8.333333%; +} + +.offset-2 { + margin-right: 16.666667%; +} + +.offset-3 { + margin-right: 25%; +} + +.offset-4 { + margin-right: 33.333333%; +} + +.offset-5 { + margin-right: 41.666667%; +} + +.offset-6 { + margin-right: 50%; +} + +.offset-7 { + margin-right: 58.333333%; +} + +.offset-8 { + margin-right: 66.666667%; +} + +.offset-9 { + margin-right: 75%; +} + +.offset-10 { + margin-right: 83.333333%; +} + +.offset-11 { + margin-right: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .row-cols-sm-1 > * { + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + order: -1; + } + .order-sm-last { + order: 13; + } + .order-sm-0 { + order: 0; + } + .order-sm-1 { + order: 1; + } + .order-sm-2 { + order: 2; + } + .order-sm-3 { + order: 3; + } + .order-sm-4 { + order: 4; + } + .order-sm-5 { + order: 5; + } + .order-sm-6 { + order: 6; + } + .order-sm-7 { + order: 7; + } + .order-sm-8 { + order: 8; + } + .order-sm-9 { + order: 9; + } + .order-sm-10 { + order: 10; + } + .order-sm-11 { + order: 11; + } + .order-sm-12 { + order: 12; + } + .offset-sm-0 { + margin-right: 0; + } + .offset-sm-1 { + margin-right: 8.333333%; + } + .offset-sm-2 { + margin-right: 16.666667%; + } + .offset-sm-3 { + margin-right: 25%; + } + .offset-sm-4 { + margin-right: 33.333333%; + } + .offset-sm-5 { + margin-right: 41.666667%; + } + .offset-sm-6 { + margin-right: 50%; + } + .offset-sm-7 { + margin-right: 58.333333%; + } + .offset-sm-8 { + margin-right: 66.666667%; + } + .offset-sm-9 { + margin-right: 75%; + } + .offset-sm-10 { + margin-right: 83.333333%; + } + .offset-sm-11 { + margin-right: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .row-cols-md-1 > * { + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-md-4 > * { + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + order: -1; + } + .order-md-last { + order: 13; + } + .order-md-0 { + order: 0; + } + .order-md-1 { + order: 1; + } + .order-md-2 { + order: 2; + } + .order-md-3 { + order: 3; + } + .order-md-4 { + order: 4; + } + .order-md-5 { + order: 5; + } + .order-md-6 { + order: 6; + } + .order-md-7 { + order: 7; + } + .order-md-8 { + order: 8; + } + .order-md-9 { + order: 9; + } + .order-md-10 { + order: 10; + } + .order-md-11 { + order: 11; + } + .order-md-12 { + order: 12; + } + .offset-md-0 { + margin-right: 0; + } + .offset-md-1 { + margin-right: 8.333333%; + } + .offset-md-2 { + margin-right: 16.666667%; + } + .offset-md-3 { + margin-right: 25%; + } + .offset-md-4 { + margin-right: 33.333333%; + } + .offset-md-5 { + margin-right: 41.666667%; + } + .offset-md-6 { + margin-right: 50%; + } + .offset-md-7 { + margin-right: 58.333333%; + } + .offset-md-8 { + margin-right: 66.666667%; + } + .offset-md-9 { + margin-right: 75%; + } + .offset-md-10 { + margin-right: 83.333333%; + } + .offset-md-11 { + margin-right: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .row-cols-lg-1 > * { + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + order: -1; + } + .order-lg-last { + order: 13; + } + .order-lg-0 { + order: 0; + } + .order-lg-1 { + order: 1; + } + .order-lg-2 { + order: 2; + } + .order-lg-3 { + order: 3; + } + .order-lg-4 { + order: 4; + } + .order-lg-5 { + order: 5; + } + .order-lg-6 { + order: 6; + } + .order-lg-7 { + order: 7; + } + .order-lg-8 { + order: 8; + } + .order-lg-9 { + order: 9; + } + .order-lg-10 { + order: 10; + } + .order-lg-11 { + order: 11; + } + .order-lg-12 { + order: 12; + } + .offset-lg-0 { + margin-right: 0; + } + .offset-lg-1 { + margin-right: 8.333333%; + } + .offset-lg-2 { + margin-right: 16.666667%; + } + .offset-lg-3 { + margin-right: 25%; + } + .offset-lg-4 { + margin-right: 33.333333%; + } + .offset-lg-5 { + margin-right: 41.666667%; + } + .offset-lg-6 { + margin-right: 50%; + } + .offset-lg-7 { + margin-right: 58.333333%; + } + .offset-lg-8 { + margin-right: 66.666667%; + } + .offset-lg-9 { + margin-right: 75%; + } + .offset-lg-10 { + margin-right: 83.333333%; + } + .offset-lg-11 { + margin-right: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .row-cols-xl-1 > * { + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + order: -1; + } + .order-xl-last { + order: 13; + } + .order-xl-0 { + order: 0; + } + .order-xl-1 { + order: 1; + } + .order-xl-2 { + order: 2; + } + .order-xl-3 { + order: 3; + } + .order-xl-4 { + order: 4; + } + .order-xl-5 { + order: 5; + } + .order-xl-6 { + order: 6; + } + .order-xl-7 { + order: 7; + } + .order-xl-8 { + order: 8; + } + .order-xl-9 { + order: 9; + } + .order-xl-10 { + order: 10; + } + .order-xl-11 { + order: 11; + } + .order-xl-12 { + order: 12; + } + .offset-xl-0 { + margin-right: 0; + } + .offset-xl-1 { + margin-right: 8.333333%; + } + .offset-xl-2 { + margin-right: 16.666667%; + } + .offset-xl-3 { + margin-right: 25%; + } + .offset-xl-4 { + margin-right: 33.333333%; + } + .offset-xl-5 { + margin-right: 41.666667%; + } + .offset-xl-6 { + margin-right: 50%; + } + .offset-xl-7 { + margin-right: 58.333333%; + } + .offset-xl-8 { + margin-right: 66.666667%; + } + .offset-xl-9 { + margin-right: 75%; + } + .offset-xl-10 { + margin-right: 83.333333%; + } + .offset-xl-11 { + margin-right: 91.666667%; + } +} + +.table { + width: 100%; + margin-bottom: 1rem; + color: #212529; +} + +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; +} + +.table tbody + tbody { + border-top: 2px solid #dee2e6; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #dee2e6; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #dee2e6; +} + +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + color: #212529; + background-color: rgba(0, 0, 0, 0.075); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #b8daff; +} + +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #7abaff; +} + +.table-hover .table-primary:hover { + background-color: #9fcdff; +} + +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #9fcdff; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #d6d8db; +} + +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #b3b7bb; +} + +.table-hover .table-secondary:hover { + background-color: #c8cbcf; +} + +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #c8cbcf; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #c3e6cb; +} + +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #8fd19e; +} + +.table-hover .table-success:hover { + background-color: #b1dfbb; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #b1dfbb; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; +} + +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #86cfda; +} + +.table-hover .table-info:hover { + background-color: #abdde5; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #abdde5; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #ffeeba; +} + +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #ffdf7e; +} + +.table-hover .table-warning:hover { + background-color: #ffe8a1; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #ffe8a1; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f5c6cb; +} + +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #ed969e; +} + +.table-hover .table-danger:hover { + background-color: #f1b0b7; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #f1b0b7; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} + +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; +} + +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #95999c; +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe; +} + +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #b9bbbe; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; +} + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.table-dark { + color: #fff; + background-color: #343a40; +} + +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #454d55; +} + +.table-dark.table-bordered { + border: 0; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} + +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-sm > .table-bordered { + border: 0; + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-md > .table-bordered { + border: 0; + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-lg > .table-bordered { + border: 0; + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.table-responsive > .table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057; +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.form-control::-webkit-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + font-size: 1rem; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +select.form-control[size], select.form-control[multiple] { + height: auto; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-row { + display: flex; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; +} + +.form-row > .col, +.form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; +} + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; +} + +.form-check-input[disabled] ~ .form-check-label, +.form-check-input:disabled ~ .form-check-label { + color: #6c757d; +} + +.form-check-label { + margin-bottom: 0; +} + +.form-check-inline { + display: inline-flex; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #28a745; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(40, 167, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #28a745; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #28a745; + padding-right: calc(0.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #28a745; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #28a745; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #28a745; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #34ce57; + background-color: #34ce57; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #28a745; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #28a745; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #dc3545; + padding-right: calc(0.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #dc3545; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #dc3545; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #e4606d; + background-color: #e4606d; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #dc3545; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #dc3545; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.form-inline { + display: flex; + flex-flow: row wrap; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: flex; + flex: 0 0 auto; + flex-flow: row wrap; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; + } + .form-inline .form-check { + display: flex; + align-items: center; + justify-content: center; + width: auto; + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + align-items: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn { + display: inline-block; + font-weight: 400; + color: #212529; + text-align: center; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} + +.btn:hover { + color: #212529; + text-decoration: none; +} + +.btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.btn.disabled, .btn:disabled { + opacity: 0.65; +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; +} + +.btn-primary:focus, .btn-primary.focus { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #0062cc; + border-color: #005cbf; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.btn-secondary { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:hover { + color: #fff; + background-color: #5a6268; + border-color: #545b62; +} + +.btn-secondary:focus, .btn-secondary.focus { + color: #fff; + background-color: #5a6268; + border-color: #545b62; + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); +} + +.btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #545b62; + border-color: #4e555b; +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); +} + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34; +} + +.btn-success:focus, .btn-success.focus { + color: #fff; + background-color: #218838; + border-color: #1e7e34; + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #1e7e34; + border-color: #1c7430; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); +} + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; +} + +.btn-info:focus, .btn-info.focus { + color: #fff; + background-color: #138496; + border-color: #117a8b; + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.btn-warning { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:hover { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; +} + +.btn-warning:focus, .btn-warning.focus { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #d39e00; + border-color: #c69500; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130; +} + +.btn-danger:focus, .btn-danger.focus { + color: #fff; + background-color: #c82333; + border-color: #bd2130; + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #bd2130; + border-color: #b21f2d; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); +} + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; +} + +.btn-light:focus, .btn-light.focus { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} + +.btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-dark:focus, .btn-dark.focus { + color: #fff; + background-color: #23272b; + border-color: #1d2124; + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); +} + +.btn-outline-primary { + color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #007bff; + background-color: transparent; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-secondary { + color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #6c757d; + background-color: transparent; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-success { + color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #28a745; + background-color: transparent; +} + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-info { + color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; +} + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-warning { + color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:hover { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, +.show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-danger { + color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; +} + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, +.show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-dark { + color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, +.show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-link { + font-weight: 400; + color: #007bff; + text-decoration: none; +} + +.btn-link:hover { + color: #0056b3; + text-decoration: underline; +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; + box-shadow: none; +} + +.btn-link:disabled, .btn-link.disabled { + color: #6c757d; + pointer-events: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; + } + .dropdown-menu-sm-right { + right: 0; + left: auto; + } +} + +@media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; + } + .dropdown-menu-md-right { + right: 0; + left: auto; + } +} + +@media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; + } + .dropdown-menu-lg-right { + right: 0; + left: auto; + } +} + +@media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; + } + .dropdown-menu-xl-right { + right: 0; + left: auto; + } +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-toggle::after { + vertical-align: 0; +} + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #007bff; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 1; +} + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; +} + +.btn-group-toggle > .btn input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, +.input-group > .form-control-plaintext, +.input-group > .custom-select, +.input-group > .custom-file { + position: relative; + flex: 1 1 0%; + min-width: 0; + margin-bottom: 0; +} + +.input-group > .form-control + .form-control, +.input-group > .form-control + .custom-select, +.input-group > .form-control + .custom-file, +.input-group > .form-control-plaintext + .form-control, +.input-group > .form-control-plaintext + .custom-select, +.input-group > .form-control-plaintext + .custom-file, +.input-group > .custom-select + .form-control, +.input-group > .custom-select + .custom-select, +.input-group > .custom-select + .custom-file, +.input-group > .custom-file + .form-control, +.input-group > .custom-file + .custom-select, +.input-group > .custom-file + .custom-file { + margin-left: -1px; +} + +.input-group > .form-control:focus, +.input-group > .custom-select:focus, +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; +} + +.input-group > .custom-file .custom-file-input:focus { + z-index: 4; +} + +.input-group > .form-control:not(:last-child), +.input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .form-control:not(:first-child), +.input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-file { + display: flex; + align-items: center; +} + +.input-group > .custom-file:not(:last-child) .custom-file-label, +.input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-prepend, +.input-group-append { + display: flex; +} + +.input-group-prepend .btn, +.input-group-append .btn { + position: relative; + z-index: 2; +} + +.input-group-prepend .btn:focus, +.input-group-append .btn:focus { + z-index: 3; +} + +.input-group-prepend .btn + .btn, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-append .btn + .btn, +.input-group-append .btn + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn { + margin-left: -1px; +} + +.input-group-prepend { + margin-right: -1px; +} + +.input-group-append { + margin-left: -1px; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group-lg > .form-control:not(textarea), +.input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); +} + +.input-group-lg > .form-control, +.input-group-lg > .custom-select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.input-group-sm > .form-control:not(textarea), +.input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); +} + +.input-group-sm > .form-control, +.input-group-sm > .custom-select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.input-group-lg > .custom-select, +.input-group-sm > .custom-select { + padding-right: 1.75rem; +} + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; +} + +.custom-control-inline { + display: inline-flex; + margin-right: 1rem; +} + +.custom-control-input { + position: absolute; + left: 0; + z-index: -1; + width: 1rem; + height: 1.25rem; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #007bff; + background-color: #007bff; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #80bdff; +} + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #b3d7ff; + border-color: #b3d7ff; +} + +.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; +} + +.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; +} + +.custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; +} + +.custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #007bff; + background-color: #007bff; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-radio .custom-control-label::before { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-switch { + padding-left: 2.25rem; +} + +.custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; +} + +.custom-switch .custom-control-label::after { + top: calc(0.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; + } +} + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + transform: translateX(0.75rem); +} + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-select:focus { + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; +} + +.custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; +} + +.custom-select::-ms-expand { + display: none; +} + +.custom-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057; +} + +.custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; +} + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin: 0; + opacity: 0; +} + +.custom-file-input:focus ~ .custom-file-label { + border-color: #80bdff; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-file-input[disabled] ~ .custom-file-label, +.custom-file-input:disabled ~ .custom-file-label { + background-color: #e9ecef; +} + +.custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; +} + +.custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 0.25rem 0.25rem 0; +} + +.custom-range { + width: 100%; + height: 1.4rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-range:focus { + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} + +.custom-range::-moz-range-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + -ms-transition: none; + transition: none; + } +} + +.custom-range::-ms-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} + +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} + +.custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; +} + +.custom-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} + +.custom-range:disabled::-moz-range-track { + cursor: default; +} + +.custom-range:disabled::-ms-thumb { + background-color: #adb5bd; +} + +.custom-control-label::before, +.custom-file-label, +.custom-select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + transition: none; + } +} + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none; +} + +.nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6; +} + +.nav-tabs .nav-item { + margin-bottom: -1px; +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; +} + +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0.25rem; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #007bff; +} + +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: 0.5rem 1rem; +} + +.navbar .container, +.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} + +.navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + flex-flow: row nowrap; + justify-content: flex-start; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { + padding-right: 0; + padding-left: 0; +} + +.navbar-expand .navbar-nav { + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { + flex-wrap: nowrap; +} + +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} + +.navbar-expand .navbar-toggler { + display: none; +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-text a { + color: #fff; +} + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} + +.card > hr { + margin-right: 0; + margin-left: 0; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.card-body { + flex: 1 1 auto; + min-height: 1px; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-header + .list-group .list-group-item:first-child { + border-top: 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img, +.card-img-top, +.card-img-bottom { + flex-shrink: 0; + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-deck .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-deck { + display: flex; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; + } + .card-deck .card { + flex: 1 0 0%; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; + } +} + +.card-group > .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-columns { + -moz-column-count: 3; + column-count: 3; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1; + } + .card-columns .card { + display: inline-block; + width: 100%; + } +} + +.accordion > .card { + overflow: hidden; +} + +.accordion > .card:not(:last-of-type) { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.accordion > .card:not(:first-of-type) { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.accordion > .card > .card-header { + border-radius: 0; + margin-bottom: -1px; +} + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #6c757d; +} + +.pagination { + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #007bff; + background-color: #fff; + border: 1px solid #dee2e6; +} + +.page-link:hover { + z-index: 2; + color: #0056b3; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.page-link:focus { + z-index: 3; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.page-item.active .page-link { + z-index: 3; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .badge { + transition: none; + } +} + +a.badge:hover, a.badge:focus { + text-decoration: none; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #007bff; +} + +a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #0062cc; +} + +a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.badge-secondary { + color: #fff; + background-color: #6c757d; +} + +a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #545b62; +} + +a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.badge-success { + color: #fff; + background-color: #28a745; +} + +a.badge-success:hover, a.badge-success:focus { + color: #fff; + background-color: #1e7e34; +} + +a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.badge-info { + color: #fff; + background-color: #17a2b8; +} + +a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #117a8b; +} + +a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.badge-warning { + color: #212529; + background-color: #ffc107; +} + +a.badge-warning:hover, a.badge-warning:focus { + color: #212529; + background-color: #d39e00; +} + +a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.badge-danger { + color: #fff; + background-color: #dc3545; +} + +a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #bd2130; +} + +a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.badge-light { + color: #212529; + background-color: #f8f9fa; +} + +a.badge-light:hover, a.badge-light:focus { + color: #212529; + background-color: #dae0e5; +} + +a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.badge-dark { + color: #fff; + background-color: #343a40; +} + +a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #1d2124; +} + +a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 4rem; +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #004085; + background-color: #cce5ff; + border-color: #b8daff; +} + +.alert-primary hr { + border-top-color: #9fcdff; +} + +.alert-primary .alert-link { + color: #002752; +} + +.alert-secondary { + color: #383d41; + background-color: #e2e3e5; + border-color: #d6d8db; +} + +.alert-secondary hr { + border-top-color: #c8cbcf; +} + +.alert-secondary .alert-link { + color: #202326; +} + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; +} + +.alert-success hr { + border-top-color: #b1dfbb; +} + +.alert-success .alert-link { + color: #0b2e13; +} + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; +} + +.alert-info hr { + border-top-color: #abdde5; +} + +.alert-info .alert-link { + color: #062c33; +} + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; +} + +.alert-warning hr { + border-top-color: #ffe8a1; +} + +.alert-warning .alert-link { + color: #533f03; +} + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb; +} + +.alert-danger hr { + border-top-color: #f1b0b7; +} + +.alert-danger .alert-link { + color: #491217; +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; +} + +.alert-light hr { + border-top-color: #ececf6; +} + +.alert-light .alert-link { + color: #686868; +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; +} + +.alert-dark hr { + border-top-color: #b9bbbe; +} + +.alert-dark .alert-link { + color: #040505; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #007bff; + transition: width 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none; + } +} + +.media { + display: flex; + align-items: flex-start; +} + +.media-body { + flex: 1; +} + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} + +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} + +.list-group-item-action:active { + color: #212529; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.list-group-item + .list-group-item { + border-top-width: 0; +} + +.list-group-item + .list-group-item.active { + margin-top: -1px; + border-top-width: 1px; +} + +.list-group-horizontal { + flex-direction: row; +} + +.list-group-horizontal .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; +} + +.list-group-horizontal .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; +} + +.list-group-horizontal .list-group-item.active { + margin-top: 0; +} + +.list-group-horizontal .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; +} + +.list-group-horizontal .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-sm .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-sm .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-md .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-md .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-md .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-lg .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-lg .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xl .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-xl .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +.list-group-flush .list-group-item { + border-right-width: 0; + border-left-width: 0; + border-radius: 0; +} + +.list-group-flush .list-group-item:first-child { + border-top-width: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #004085; + background-color: #b8daff; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #004085; + background-color: #9fcdff; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #004085; + border-color: #004085; +} + +.list-group-item-secondary { + color: #383d41; + background-color: #d6d8db; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #383d41; + background-color: #c8cbcf; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #383d41; + border-color: #383d41; +} + +.list-group-item-success { + color: #155724; + background-color: #c3e6cb; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #155724; + background-color: #b1dfbb; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #155724; + border-color: #155724; +} + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #0c5460; + background-color: #abdde5; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460; +} + +.list-group-item-warning { + color: #856404; + background-color: #ffeeba; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #856404; + background-color: #ffe8a1; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #856404; + border-color: #856404; +} + +.list-group-item-danger { + color: #721c24; + background-color: #f5c6cb; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #721c24; + background-color: #f1b0b7; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #721c24; + border-color: #721c24; +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; +} + +.close:hover { + color: #000; + text-decoration: none; +} + +.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + opacity: .75; +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +a.close.disabled { + pointer-events: none; +} + +.toast { + max-width: 350px; + overflow: hidden; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; +} + +.toast:not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast.showing { + opacity: 1; +} + +.toast.show { + display: block; + opacity: 1; +} + +.toast.hide { + display: none; +} + +.toast-header { + display: flex; + align-items: center; + padding: 0.25rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.toast-body { + padding: 0.75rem; +} + +.modal-open { + overflow: hidden; +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} + +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + transform: none; +} + +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + display: flex; + max-height: calc(100% - 1rem); +} + +.modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; +} + +.modal-dialog-scrollable .modal-header, +.modal-dialog-scrollable .modal-footer { + flex-shrink: 0; +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem); +} + +.modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + content: ""; +} + +.modal-dialog-centered.modal-dialog-scrollable { + flex-direction: column; + justify-content: center; + height: 100%; +} + +.modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; +} + +.modal-dialog-centered.modal-dialog-scrollable::before { + content: none; +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: 0.75rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: calc(0.3rem - 1px); + border-bottom-left-radius: calc(0.3rem - 1px); +} + +.modal-footer > * { + margin: 0.25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; + } +} + +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} + +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} + +.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc(-0.5rem - 1px); +} + +.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; +} + +.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} + +.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc(-0.5rem - 1px); +} + +.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; +} + +.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.5rem 0.75rem; + color: #212529; +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: flex; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +@-webkit-keyframes spinner-border { + to { + transform: rotate(360deg); + } +} + +@keyframes spinner-border { + to { + transform: rotate(360deg); + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border .75s linear infinite; + animation: spinner-border .75s linear infinite; +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} + +@-webkit-keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + } +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + } +} + +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: spinner-grow .75s linear infinite; + animation: spinner-grow .75s linear infinite; +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-primary { + background-color: #007bff !important; +} + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #0062cc !important; +} + +.bg-secondary { + background-color: #6c757d !important; +} + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #545b62 !important; +} + +.bg-success { + background-color: #28a745 !important; +} + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #1e7e34 !important; +} + +.bg-info { + background-color: #17a2b8 !important; +} + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; +} + +.bg-warning { + background-color: #ffc107 !important; +} + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #d39e00 !important; +} + +.bg-danger { + background-color: #dc3545 !important; +} + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #bd2130 !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; +} + +.bg-dark { + background-color: #343a40 !important; +} + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1d2124 !important; +} + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid #dee2e6 !important; +} + +.border-top { + border-top: 1px solid #dee2e6 !important; +} + +.border-right { + border-right: 1px solid #dee2e6 !important; +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} + +.border-left { + border-left: 1px solid #dee2e6 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #007bff !important; +} + +.border-secondary { + border-color: #6c757d !important; +} + +.border-success { + border-color: #28a745 !important; +} + +.border-info { + border-color: #17a2b8 !important; +} + +.border-warning { + border-color: #ffc107 !important; +} + +.border-danger { + border-color: #dc3545 !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #343a40 !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded-sm { + border-radius: 0.2rem !important; +} + +.rounded { + border-radius: 0.25rem !important; +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-lg { + border-radius: 0.3rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } +} + +@media print { + .d-print-none { + display: none !important; + } + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + +.embed-responsive::before { + display: block; + content: ""; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.857143%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.vw-100 { + width: 100vw !important; +} + +.vh-100 { + height: 100vh !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); +} + +.m-0 { + margin: 0 !important; +} + +.mt-0, +.my-0 { + margin-top: 0 !important; +} + +.mr-0, +.mx-0 { + margin-right: 0 !important; +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important; +} + +.ml-0, +.mx-0 { + margin-left: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.mt-3, +.my-3 { + margin-top: 1rem !important; +} + +.mr-3, +.mx-3 { + margin-right: 1rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; +} + +.ml-3, +.mx-3 { + margin-left: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; +} + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.mt-5, +.my-5 { + margin-top: 3rem !important; +} + +.mr-5, +.mx-5 { + margin-right: 3rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; +} + +.ml-5, +.mx-5 { + margin-left: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0, +.py-0 { + padding-top: 0 !important; +} + +.pr-0, +.px-0 { + padding-right: 0 !important; +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important; +} + +.pl-0, +.px-0 { + padding-left: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.pt-3, +.py-3 { + padding-top: 1rem !important; +} + +.pr-3, +.px-3 { + padding-right: 1rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; +} + +.pl-3, +.px-3 { + padding-left: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; +} + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.pt-5, +.py-5 { + padding-top: 3rem !important; +} + +.pr-5, +.px-5 { + padding-right: 3rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; +} + +.pl-5, +.px-5 { + padding-left: 3rem !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; +} + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; +} + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; +} + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; +} + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; +} + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; +} + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; +} + +.m-n3 { + margin: -1rem !important; +} + +.mt-n3, +.my-n3 { + margin-top: -1rem !important; +} + +.mr-n3, +.mx-n3 { + margin-right: -1rem !important; +} + +.mb-n3, +.my-n3 { + margin-bottom: -1rem !important; +} + +.ml-n3, +.mx-n3 { + margin-left: -1rem !important; +} + +.m-n4 { + margin: -1.5rem !important; +} + +.mt-n4, +.my-n4 { + margin-top: -1.5rem !important; +} + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem !important; +} + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem !important; +} + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem !important; +} + +.m-n5 { + margin: -3rem !important; +} + +.mt-n5, +.my-n5 { + margin-top: -3rem !important; +} + +.mr-n5, +.mx-n5 { + margin-right: -3rem !important; +} + +.mb-n5, +.my-n5 { + margin-bottom: -3rem !important; +} + +.ml-n5, +.mx-n5 { + margin-left: -3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto, +.my-auto { + margin-top: auto !important; +} + +.mr-auto, +.mx-auto { + margin-right: auto !important; +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important; +} + +.ml-auto, +.mx-auto { + margin-left: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } +} + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; +} + +.text-justify { + text-align: justify !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-light { + font-weight: 300 !important; +} + +.font-weight-lighter { + font-weight: lighter !important; +} + +.font-weight-normal { + font-weight: 400 !important; +} + +.font-weight-bold { + font-weight: 700 !important; +} + +.font-weight-bolder { + font-weight: bolder !important; +} + +.font-italic { + font-style: italic !important; +} + +.text-white { + color: #fff !important; +} + +.text-primary { + color: #007bff !important; +} + +a.text-primary:hover, a.text-primary:focus { + color: #0056b3 !important; +} + +.text-secondary { + color: #6c757d !important; +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #494f54 !important; +} + +.text-success { + color: #28a745 !important; +} + +a.text-success:hover, a.text-success:focus { + color: #19692c !important; +} + +.text-info { + color: #17a2b8 !important; +} + +a.text-info:hover, a.text-info:focus { + color: #0f6674 !important; +} + +.text-warning { + color: #ffc107 !important; +} + +a.text-warning:hover, a.text-warning:focus { + color: #ba8b00 !important; +} + +.text-danger { + color: #dc3545 !important; +} + +a.text-danger:hover, a.text-danger:focus { + color: #a71d2a !important; +} + +.text-light { + color: #f8f9fa !important; +} + +a.text-light:hover, a.text-light:focus { + color: #cbd3da !important; +} + +.text-dark { + color: #343a40 !important; +} + +a.text-dark:hover, a.text-dark:focus { + color: #121416 !important; +} + +.text-body { + color: #212529 !important; +} + +.text-muted { + color: #6c757d !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-break { + word-break: break-word !important; + overflow-wrap: break-word !important; +} + +.text-reset { + color: inherit !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; + } + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; + } +} + +.rtl, +[dir="rtl"] { + text-align: right; + direction: rtl; +} + +.rtl .nav, +[dir="rtl"] .nav { + padding-right: 0; +} + +.rtl .navbar-nav .nav-item, +[dir="rtl"] .navbar-nav .nav-item { + float: right; +} + +.rtl .navbar-nav .nav-item + .nav-item, +[dir="rtl"] .navbar-nav .nav-item + .nav-item { + margin-right: inherit; + margin-left: 1rem; +} + +.rtl th, +[dir="rtl"] th { + text-align: right; +} + +.rtl .alert-dismissible, +[dir="rtl"] .alert-dismissible { + padding-right: 1.25rem; + padding-left: 4rem; +} + +.rtl .dropdown-menu, +[dir="rtl"] .dropdown-menu { + right: 0; + left: inherit; + text-align: right; +} + +.rtl .checkbox label, +[dir="rtl"] .checkbox label { + padding-right: 1.25rem; + padding-left: inherit; +} + +.rtl .btn-group > .btn:not(:first-child), +.rtl .btn-group > .btn-group:not(:first-child), +[dir="rtl"] .btn-group > .btn:not(:first-child), +[dir="rtl"] .btn-group > .btn-group:not(:first-child) { + margin-left: initial; + margin-right: -1px; +} + +.rtl .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle), +[dir="rtl"] .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-radius: 0 0.25rem 0.25rem 0; +} + +.rtl .btn-group > .btn:last-child:not(:first-child), +.rtl .btn-group > .dropdown-toggle:not(:first-child), +[dir="rtl"] .btn-group > .btn:last-child:not(:first-child), +[dir="rtl"] .btn-group > .dropdown-toggle:not(:first-child) { + border-radius: 0.25rem 0 0 0.25rem; +} + +.rtl .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child, +[dir="rtl"] .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-radius: 0.25rem 0 0 0.25rem; +} + +.rtl .custom-control, +[dir="rtl"] .custom-control { + padding-right: 1.5rem; + padding-left: inherit; + margin-right: inherit; + margin-left: 1rem; +} + +.rtl .custom-control-indicator, +[dir="rtl"] .custom-control-indicator { + right: 0; + left: inherit; +} + +.rtl .custom-file-label::after, +[dir="rtl"] .custom-file-label::after { + right: initial; + left: -1px; + border-radius: .25rem 0 0 .25rem; +} + +.rtl .custom-control-label::after, +.rtl .custom-control-label::before, +[dir="rtl"] .custom-control-label::after, +[dir="rtl"] .custom-control-label::before { + right: -1.5rem; + left: inherit; +} + +.rtl .custom-select, +[dir="rtl"] .custom-select { + padding: 0.375rem 0.75rem 0.375rem 1.75rem; + background: #fff url("data:image/svg+xml,") no-repeat left 0.75rem center; + background-size: 8px 10px; +} + +.rtl .custom-switch, +[dir="rtl"] .custom-switch { + padding-right: 2.25rem; + padding-left: inherit; +} + +.rtl .custom-switch .custom-control-label::before, +[dir="rtl"] .custom-switch .custom-control-label::before { + right: -2.25rem; +} + +.rtl .custom-switch .custom-control-label::after, +[dir="rtl"] .custom-switch .custom-control-label::after { + right: calc(-2.25rem + 2px); +} + +.rtl .custom-switch .custom-control-input:checked ~ .custom-control-label::after, +[dir="rtl"] .custom-switch .custom-control-input:checked ~ .custom-control-label::after { + transform: translateX(-0.75rem); +} + +.rtl .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.rtl .input-group > .input-group-append:last-child > .input-group-text:not(:last-child), +.rtl .input-group > .input-group-append:not(:last-child) > .btn, +.rtl .input-group > .input-group-append:not(:last-child) > .input-group-text, +.rtl .input-group > .input-group-prepend > .btn, +.rtl .input-group > .input-group-prepend > .input-group-text, +[dir="rtl"] .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +[dir="rtl"] .input-group > .input-group-append:last-child > .input-group-text:not(:last-child), +[dir="rtl"] .input-group > .input-group-append:not(:last-child) > .btn, +[dir="rtl"] .input-group > .input-group-append:not(:last-child) > .input-group-text, +[dir="rtl"] .input-group > .input-group-prepend > .btn, +[dir="rtl"] .input-group > .input-group-prepend > .input-group-text { + border-radius: 0 0.25rem 0.25rem 0; +} + +.rtl .input-group > .input-group-append > .btn, +.rtl .input-group > .input-group-append > .input-group-text, +.rtl .input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.rtl .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child), +.rtl .input-group > .input-group-prepend:not(:first-child) > .btn, +.rtl .input-group > .input-group-prepend:not(:first-child) > .input-group-text, +[dir="rtl"] .input-group > .input-group-append > .btn, +[dir="rtl"] .input-group > .input-group-append > .input-group-text, +[dir="rtl"] .input-group > .input-group-prepend:first-child > .btn:not(:first-child), +[dir="rtl"] .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child), +[dir="rtl"] .input-group > .input-group-prepend:not(:first-child) > .btn, +[dir="rtl"] .input-group > .input-group-prepend:not(:first-child) > .input-group-text { + border-radius: 0.25rem 0 0 0.25rem; +} + +.rtl .input-group > .custom-select:not(:first-child), +.rtl .input-group > .form-control:not(:first-child), +[dir="rtl"] .input-group > .custom-select:not(:first-child), +[dir="rtl"] .input-group > .form-control:not(:first-child) { + border-radius: 0.25rem 0 0 0.25rem; +} + +.rtl .input-group > .custom-select:not(:last-child), +.rtl .input-group > .form-control:not(:last-child), +[dir="rtl"] .input-group > .custom-select:not(:last-child), +[dir="rtl"] .input-group > .form-control:not(:last-child) { + border-radius: 0 0.25rem 0.25rem 0; +} + +.rtl .input-group > .custom-select:not(:last-child):not(:first-child), +.rtl .input-group > .form-control:not(:last-child):not(:first-child), +[dir="rtl"] .input-group > .custom-select:not(:last-child):not(:first-child), +[dir="rtl"] .input-group > .form-control:not(:last-child):not(:first-child) { + border-radius: 0; +} + +.rtl .radio input, +.rtl .radio-inline, +.rtl .checkbox input, +.rtl .checkbox-inline input, +[dir="rtl"] .radio input, +[dir="rtl"] .radio-inline, +[dir="rtl"] .checkbox input, +[dir="rtl"] .checkbox-inline input { + margin-right: -1.25rem; + margin-left: inherit; +} + +.rtl .breadcrumb-item + .breadcrumb-item, +[dir="rtl"] .breadcrumb-item + .breadcrumb-item { + padding-right: 0.5rem; + padding-left: 0; + color: #6c757d; + content: "/"; +} + +.rtl .breadcrumb-item + .breadcrumb-item::before, +[dir="rtl"] .breadcrumb-item + .breadcrumb-item::before { + padding-right: 0; + padding-left: 0.5rem; +} + +.rtl .list-group, +[dir="rtl"] .list-group { + padding-right: 0; + padding-left: 40px; +} + +.rtl .close, +[dir="rtl"] .close { + float: left; +} + +.rtl .modal-header .close, +[dir="rtl"] .modal-header .close { + margin: -15px auto -15px -15px; +} + +.rtl .modal-footer > :not(:first-child), +[dir="rtl"] .modal-footer > :not(:first-child) { + margin-right: .25rem; +} + +.rtl .modal-footer > :not(:last-child), +[dir="rtl"] .modal-footer > :not(:last-child) { + margin-left: .25rem; +} + +.rtl .modal-footer > :first-child, +[dir="rtl"] .modal-footer > :first-child { + margin-right: 0; +} + +.rtl .modal-footer > :last-child, +[dir="rtl"] .modal-footer > :last-child { + margin-left: 0; +} + +.rtl .alert-dismissible .close, +[dir="rtl"] .alert-dismissible .close { + right: inherit; + left: 0; +} + +.rtl .dropdown-toggle::after, +[dir="rtl"] .dropdown-toggle::after { + margin-right: .255em; + margin-left: 0; +} + +.rtl .form-check-input, +[dir="rtl"] .form-check-input { + margin-right: -1.25rem; + margin-left: inherit; +} + +.rtl .form-check-label, +[dir="rtl"] .form-check-label { + padding-right: 1.25rem; + padding-left: inherit; +} + +.rtl .pagination, +.rtl .list-unstyled, +.rtl .list-inline, +[dir="rtl"] .pagination, +[dir="rtl"] .list-unstyled, +[dir="rtl"] .list-inline { + padding-right: 0; + padding-left: inherit; +} + +.rtl .pagination .page-item:first-child .page-link, +[dir="rtl"] .pagination .page-item:first-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.rtl .pagination .page-item:last-child .page-link, +[dir="rtl"] .pagination .page-item:last-child .page-link { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.rtl .offset-1, +[dir="rtl"] .offset-1 { + margin-right: 8.333333%; + margin-left: 0; +} + +.rtl .offset-2, +[dir="rtl"] .offset-2 { + margin-right: 16.666667%; + margin-left: 0; +} + +.rtl .offset-3, +[dir="rtl"] .offset-3 { + margin-right: 25%; + margin-left: 0; +} + +.rtl .offset-4, +[dir="rtl"] .offset-4 { + margin-right: 33.333333%; + margin-left: 0; +} + +.rtl .offset-5, +[dir="rtl"] .offset-5 { + margin-right: 41.666667%; + margin-left: 0; +} + +.rtl .offset-6, +[dir="rtl"] .offset-6 { + margin-right: 50%; + margin-left: 0; +} + +.rtl .offset-7, +[dir="rtl"] .offset-7 { + margin-right: 58.333333%; + margin-left: 0; +} + +.rtl .offset-8, +[dir="rtl"] .offset-8 { + margin-right: 66.666667%; + margin-left: 0; +} + +.rtl .offset-9, +[dir="rtl"] .offset-9 { + margin-right: 75%; + margin-left: 0; +} + +.rtl .offset-10, +[dir="rtl"] .offset-10 { + margin-right: 83.333333%; + margin-left: 0; +} + +.rtl .offset-11, +[dir="rtl"] .offset-11 { + margin-right: 91.666667%; + margin-left: 0; +} + +@media (min-width: 576px) { + .rtl .offset-sm-0, + [dir="rtl"] .offset-sm-0 { + margin-right: 0; + margin-left: 0; + } + .rtl .offset-sm-1, + [dir="rtl"] .offset-sm-1 { + margin-right: 8.333333%; + margin-left: 0; + } + .rtl .offset-sm-2, + [dir="rtl"] .offset-sm-2 { + margin-right: 16.666667%; + margin-left: 0; + } + .rtl .offset-sm-3, + [dir="rtl"] .offset-sm-3 { + margin-right: 25%; + margin-left: 0; + } + .rtl .offset-sm-4, + [dir="rtl"] .offset-sm-4 { + margin-right: 33.333333%; + margin-left: 0; + } + .rtl .offset-sm-5, + [dir="rtl"] .offset-sm-5 { + margin-right: 41.666667%; + margin-left: 0; + } + .rtl .offset-sm-6, + [dir="rtl"] .offset-sm-6 { + margin-right: 50%; + margin-left: 0; + } + .rtl .offset-sm-7, + [dir="rtl"] .offset-sm-7 { + margin-right: 58.333333%; + margin-left: 0; + } + .rtl .offset-sm-8, + [dir="rtl"] .offset-sm-8 { + margin-right: 66.666667%; + margin-left: 0; + } + .rtl .offset-sm-9, + [dir="rtl"] .offset-sm-9 { + margin-right: 75%; + margin-left: 0; + } + .rtl .offset-sm-10, + [dir="rtl"] .offset-sm-10 { + margin-right: 83.333333%; + margin-left: 0; + } + .rtl .offset-sm-11, + [dir="rtl"] .offset-sm-11 { + margin-right: 91.666667%; + margin-left: 0; + } +} + +@media (min-width: 768px) { + .rtl .offset-md-0, + [dir="rtl"] .offset-md-0 { + margin-right: 0; + margin-left: 0; + } + .rtl .offset-md-1, + [dir="rtl"] .offset-md-1 { + margin-right: 8.333333%; + margin-left: 0; + } + .rtl .offset-md-2, + [dir="rtl"] .offset-md-2 { + margin-right: 16.666667%; + margin-left: 0; + } + .rtl .offset-md-3, + [dir="rtl"] .offset-md-3 { + margin-right: 25%; + margin-left: 0; + } + .rtl .offset-md-4, + [dir="rtl"] .offset-md-4 { + margin-right: 33.333333%; + margin-left: 0; + } + .rtl .offset-md-5, + [dir="rtl"] .offset-md-5 { + margin-right: 41.666667%; + margin-left: 0; + } + .rtl .offset-md-6, + [dir="rtl"] .offset-md-6 { + margin-right: 50%; + margin-left: 0; + } + .rtl .offset-md-7, + [dir="rtl"] .offset-md-7 { + margin-right: 58.333333%; + margin-left: 0; + } + .rtl .offset-md-8, + [dir="rtl"] .offset-md-8 { + margin-right: 66.666667%; + margin-left: 0; + } + .rtl .offset-md-9, + [dir="rtl"] .offset-md-9 { + margin-right: 75%; + margin-left: 0; + } + .rtl .offset-md-10, + [dir="rtl"] .offset-md-10 { + margin-right: 83.333333%; + margin-left: 0; + } + .rtl .offset-md-11, + [dir="rtl"] .offset-md-11 { + margin-right: 91.666667%; + margin-left: 0; + } +} + +@media (min-width: 992px) { + .rtl .offset-lg-0, + [dir="rtl"] .offset-lg-0 { + margin-right: 0; + margin-left: 0; + } + .rtl .offset-lg-1, + [dir="rtl"] .offset-lg-1 { + margin-right: 8.333333%; + margin-left: 0; + } + .rtl .offset-lg-2, + [dir="rtl"] .offset-lg-2 { + margin-right: 16.666667%; + margin-left: 0; + } + .rtl .offset-lg-3, + [dir="rtl"] .offset-lg-3 { + margin-right: 25%; + margin-left: 0; + } + .rtl .offset-lg-4, + [dir="rtl"] .offset-lg-4 { + margin-right: 33.333333%; + margin-left: 0; + } + .rtl .offset-lg-5, + [dir="rtl"] .offset-lg-5 { + margin-right: 41.666667%; + margin-left: 0; + } + .rtl .offset-lg-6, + [dir="rtl"] .offset-lg-6 { + margin-right: 50%; + margin-left: 0; + } + .rtl .offset-lg-7, + [dir="rtl"] .offset-lg-7 { + margin-right: 58.333333%; + margin-left: 0; + } + .rtl .offset-lg-8, + [dir="rtl"] .offset-lg-8 { + margin-right: 66.666667%; + margin-left: 0; + } + .rtl .offset-lg-9, + [dir="rtl"] .offset-lg-9 { + margin-right: 75%; + margin-left: 0; + } + .rtl .offset-lg-10, + [dir="rtl"] .offset-lg-10 { + margin-right: 83.333333%; + margin-left: 0; + } + .rtl .offset-lg-11, + [dir="rtl"] .offset-lg-11 { + margin-right: 91.666667%; + margin-left: 0; + } +} + +@media (min-width: 1200px) { + .rtl .offset-xl-0, + [dir="rtl"] .offset-xl-0 { + margin-right: 0; + margin-left: 0; + } + .rtl .offset-xl-1, + [dir="rtl"] .offset-xl-1 { + margin-right: 8.333333%; + margin-left: 0; + } + .rtl .offset-xl-2, + [dir="rtl"] .offset-xl-2 { + margin-right: 16.666667%; + margin-left: 0; + } + .rtl .offset-xl-3, + [dir="rtl"] .offset-xl-3 { + margin-right: 25%; + margin-left: 0; + } + .rtl .offset-xl-4, + [dir="rtl"] .offset-xl-4 { + margin-right: 33.333333%; + margin-left: 0; + } + .rtl .offset-xl-5, + [dir="rtl"] .offset-xl-5 { + margin-right: 41.666667%; + margin-left: 0; + } + .rtl .offset-xl-6, + [dir="rtl"] .offset-xl-6 { + margin-right: 50%; + margin-left: 0; + } + .rtl .offset-xl-7, + [dir="rtl"] .offset-xl-7 { + margin-right: 58.333333%; + margin-left: 0; + } + .rtl .offset-xl-8, + [dir="rtl"] .offset-xl-8 { + margin-right: 66.666667%; + margin-left: 0; + } + .rtl .offset-xl-9, + [dir="rtl"] .offset-xl-9 { + margin-right: 75%; + margin-left: 0; + } + .rtl .offset-xl-10, + [dir="rtl"] .offset-xl-10 { + margin-right: 83.333333%; + margin-left: 0; + } + .rtl .offset-xl-11, + [dir="rtl"] .offset-xl-11 { + margin-right: 91.666667%; + margin-left: 0; + } +} + +.rtl .mr-0, +[dir="rtl"] .mr-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.rtl .ml-0, +[dir="rtl"] .ml-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.rtl mx-0, +[dir="rtl"] mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.rtl .mr-1, +[dir="rtl"] .mr-1 { + margin-right: 0 !important; + margin-left: 0.25rem !important; +} + +.rtl .ml-1, +[dir="rtl"] .ml-1 { + margin-left: 0 !important; + margin-right: 0.25rem !important; +} + +.rtl mx-1, +[dir="rtl"] mx-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.rtl .mr-2, +[dir="rtl"] .mr-2 { + margin-right: 0 !important; + margin-left: 0.5rem !important; +} + +.rtl .ml-2, +[dir="rtl"] .ml-2 { + margin-left: 0 !important; + margin-right: 0.5rem !important; +} + +.rtl mx-2, +[dir="rtl"] mx-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.rtl .mr-3, +[dir="rtl"] .mr-3 { + margin-right: 0 !important; + margin-left: 1rem !important; +} + +.rtl .ml-3, +[dir="rtl"] .ml-3 { + margin-left: 0 !important; + margin-right: 1rem !important; +} + +.rtl mx-3, +[dir="rtl"] mx-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.rtl .mr-4, +[dir="rtl"] .mr-4 { + margin-right: 0 !important; + margin-left: 1.5rem !important; +} + +.rtl .ml-4, +[dir="rtl"] .ml-4 { + margin-left: 0 !important; + margin-right: 1.5rem !important; +} + +.rtl mx-4, +[dir="rtl"] mx-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; +} + +.rtl .mr-5, +[dir="rtl"] .mr-5 { + margin-right: 0 !important; + margin-left: 3rem !important; +} + +.rtl .ml-5, +[dir="rtl"] .ml-5 { + margin-left: 0 !important; + margin-right: 3rem !important; +} + +.rtl mx-5, +[dir="rtl"] mx-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; +} + +.rtl .pr-0, +[dir="rtl"] .pr-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.rtl .pl-0, +[dir="rtl"] .pl-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.rtl px-0, +[dir="rtl"] px-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.rtl .pr-1, +[dir="rtl"] .pr-1 { + padding-right: 0 !important; + padding-left: 0.25rem !important; +} + +.rtl .pl-1, +[dir="rtl"] .pl-1 { + padding-left: 0 !important; + padding-right: 0.25rem !important; +} + +.rtl px-1, +[dir="rtl"] px-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.rtl .pr-2, +[dir="rtl"] .pr-2 { + padding-right: 0 !important; + padding-left: 0.5rem !important; +} + +.rtl .pl-2, +[dir="rtl"] .pl-2 { + padding-left: 0 !important; + padding-right: 0.5rem !important; +} + +.rtl px-2, +[dir="rtl"] px-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.rtl .pr-3, +[dir="rtl"] .pr-3 { + padding-right: 0 !important; + padding-left: 1rem !important; +} + +.rtl .pl-3, +[dir="rtl"] .pl-3 { + padding-left: 0 !important; + padding-right: 1rem !important; +} + +.rtl px-3, +[dir="rtl"] px-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.rtl .pr-4, +[dir="rtl"] .pr-4 { + padding-right: 0 !important; + padding-left: 1.5rem !important; +} + +.rtl .pl-4, +[dir="rtl"] .pl-4 { + padding-left: 0 !important; + padding-right: 1.5rem !important; +} + +.rtl px-4, +[dir="rtl"] px-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; +} + +.rtl .pr-5, +[dir="rtl"] .pr-5 { + padding-right: 0 !important; + padding-left: 3rem !important; +} + +.rtl .pl-5, +[dir="rtl"] .pl-5 { + padding-left: 0 !important; + padding-right: 3rem !important; +} + +.rtl px-5, +[dir="rtl"] px-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; +} + +.rtl .mr-auto, +[dir="rtl"] .mr-auto { + margin-right: 0 !important; + margin-left: auto !important; +} + +.rtl .ml-auto, +[dir="rtl"] .ml-auto { + margin-right: auto !important; + margin-left: 0 !important; +} + +.rtl .mx-auto, +[dir="rtl"] .mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +@media (min-width: 576px) { + .rtl .mr-sm-0, + [dir="rtl"] .mr-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .rtl .ml-sm-0, + [dir="rtl"] .ml-sm-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl mx-sm-0, + [dir="rtl"] mx-sm-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl .mr-sm-1, + [dir="rtl"] .mr-sm-1 { + margin-right: 0 !important; + margin-left: 0.25rem !important; + } + .rtl .ml-sm-1, + [dir="rtl"] .ml-sm-1 { + margin-left: 0 !important; + margin-right: 0.25rem !important; + } + .rtl mx-sm-1, + [dir="rtl"] mx-sm-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .rtl .mr-sm-2, + [dir="rtl"] .mr-sm-2 { + margin-right: 0 !important; + margin-left: 0.5rem !important; + } + .rtl .ml-sm-2, + [dir="rtl"] .ml-sm-2 { + margin-left: 0 !important; + margin-right: 0.5rem !important; + } + .rtl mx-sm-2, + [dir="rtl"] mx-sm-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .rtl .mr-sm-3, + [dir="rtl"] .mr-sm-3 { + margin-right: 0 !important; + margin-left: 1rem !important; + } + .rtl .ml-sm-3, + [dir="rtl"] .ml-sm-3 { + margin-left: 0 !important; + margin-right: 1rem !important; + } + .rtl mx-sm-3, + [dir="rtl"] mx-sm-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .rtl .mr-sm-4, + [dir="rtl"] .mr-sm-4 { + margin-right: 0 !important; + margin-left: 1.5rem !important; + } + .rtl .ml-sm-4, + [dir="rtl"] .ml-sm-4 { + margin-left: 0 !important; + margin-right: 1.5rem !important; + } + .rtl mx-sm-4, + [dir="rtl"] mx-sm-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .rtl .mr-sm-5, + [dir="rtl"] .mr-sm-5 { + margin-right: 0 !important; + margin-left: 3rem !important; + } + .rtl .ml-sm-5, + [dir="rtl"] .ml-sm-5 { + margin-left: 0 !important; + margin-right: 3rem !important; + } + .rtl mx-sm-5, + [dir="rtl"] mx-sm-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .rtl .pr-sm-0, + [dir="rtl"] .pr-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .rtl .pl-sm-0, + [dir="rtl"] .pl-sm-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl px-sm-0, + [dir="rtl"] px-sm-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl .pr-sm-1, + [dir="rtl"] .pr-sm-1 { + padding-right: 0 !important; + padding-left: 0.25rem !important; + } + .rtl .pl-sm-1, + [dir="rtl"] .pl-sm-1 { + padding-left: 0 !important; + padding-right: 0.25rem !important; + } + .rtl px-sm-1, + [dir="rtl"] px-sm-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .rtl .pr-sm-2, + [dir="rtl"] .pr-sm-2 { + padding-right: 0 !important; + padding-left: 0.5rem !important; + } + .rtl .pl-sm-2, + [dir="rtl"] .pl-sm-2 { + padding-left: 0 !important; + padding-right: 0.5rem !important; + } + .rtl px-sm-2, + [dir="rtl"] px-sm-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .rtl .pr-sm-3, + [dir="rtl"] .pr-sm-3 { + padding-right: 0 !important; + padding-left: 1rem !important; + } + .rtl .pl-sm-3, + [dir="rtl"] .pl-sm-3 { + padding-left: 0 !important; + padding-right: 1rem !important; + } + .rtl px-sm-3, + [dir="rtl"] px-sm-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .rtl .pr-sm-4, + [dir="rtl"] .pr-sm-4 { + padding-right: 0 !important; + padding-left: 1.5rem !important; + } + .rtl .pl-sm-4, + [dir="rtl"] .pl-sm-4 { + padding-left: 0 !important; + padding-right: 1.5rem !important; + } + .rtl px-sm-4, + [dir="rtl"] px-sm-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .rtl .pr-sm-5, + [dir="rtl"] .pr-sm-5 { + padding-right: 0 !important; + padding-left: 3rem !important; + } + .rtl .pl-sm-5, + [dir="rtl"] .pl-sm-5 { + padding-left: 0 !important; + padding-right: 3rem !important; + } + .rtl px-sm-5, + [dir="rtl"] px-sm-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .rtl .mr-sm-auto, + [dir="rtl"] .mr-sm-auto { + margin-right: 0 !important; + margin-left: auto !important; + } + .rtl .ml-sm-auto, + [dir="rtl"] .ml-sm-auto { + margin-right: auto !important; + margin-left: 0 !important; + } + .rtl .mx-sm-auto, + [dir="rtl"] .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } +} + +@media (min-width: 768px) { + .rtl .mr-md-0, + [dir="rtl"] .mr-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .rtl .ml-md-0, + [dir="rtl"] .ml-md-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl mx-md-0, + [dir="rtl"] mx-md-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl .mr-md-1, + [dir="rtl"] .mr-md-1 { + margin-right: 0 !important; + margin-left: 0.25rem !important; + } + .rtl .ml-md-1, + [dir="rtl"] .ml-md-1 { + margin-left: 0 !important; + margin-right: 0.25rem !important; + } + .rtl mx-md-1, + [dir="rtl"] mx-md-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .rtl .mr-md-2, + [dir="rtl"] .mr-md-2 { + margin-right: 0 !important; + margin-left: 0.5rem !important; + } + .rtl .ml-md-2, + [dir="rtl"] .ml-md-2 { + margin-left: 0 !important; + margin-right: 0.5rem !important; + } + .rtl mx-md-2, + [dir="rtl"] mx-md-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .rtl .mr-md-3, + [dir="rtl"] .mr-md-3 { + margin-right: 0 !important; + margin-left: 1rem !important; + } + .rtl .ml-md-3, + [dir="rtl"] .ml-md-3 { + margin-left: 0 !important; + margin-right: 1rem !important; + } + .rtl mx-md-3, + [dir="rtl"] mx-md-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .rtl .mr-md-4, + [dir="rtl"] .mr-md-4 { + margin-right: 0 !important; + margin-left: 1.5rem !important; + } + .rtl .ml-md-4, + [dir="rtl"] .ml-md-4 { + margin-left: 0 !important; + margin-right: 1.5rem !important; + } + .rtl mx-md-4, + [dir="rtl"] mx-md-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .rtl .mr-md-5, + [dir="rtl"] .mr-md-5 { + margin-right: 0 !important; + margin-left: 3rem !important; + } + .rtl .ml-md-5, + [dir="rtl"] .ml-md-5 { + margin-left: 0 !important; + margin-right: 3rem !important; + } + .rtl mx-md-5, + [dir="rtl"] mx-md-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .rtl .pr-md-0, + [dir="rtl"] .pr-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .rtl .pl-md-0, + [dir="rtl"] .pl-md-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl px-md-0, + [dir="rtl"] px-md-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl .pr-md-1, + [dir="rtl"] .pr-md-1 { + padding-right: 0 !important; + padding-left: 0.25rem !important; + } + .rtl .pl-md-1, + [dir="rtl"] .pl-md-1 { + padding-left: 0 !important; + padding-right: 0.25rem !important; + } + .rtl px-md-1, + [dir="rtl"] px-md-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .rtl .pr-md-2, + [dir="rtl"] .pr-md-2 { + padding-right: 0 !important; + padding-left: 0.5rem !important; + } + .rtl .pl-md-2, + [dir="rtl"] .pl-md-2 { + padding-left: 0 !important; + padding-right: 0.5rem !important; + } + .rtl px-md-2, + [dir="rtl"] px-md-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .rtl .pr-md-3, + [dir="rtl"] .pr-md-3 { + padding-right: 0 !important; + padding-left: 1rem !important; + } + .rtl .pl-md-3, + [dir="rtl"] .pl-md-3 { + padding-left: 0 !important; + padding-right: 1rem !important; + } + .rtl px-md-3, + [dir="rtl"] px-md-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .rtl .pr-md-4, + [dir="rtl"] .pr-md-4 { + padding-right: 0 !important; + padding-left: 1.5rem !important; + } + .rtl .pl-md-4, + [dir="rtl"] .pl-md-4 { + padding-left: 0 !important; + padding-right: 1.5rem !important; + } + .rtl px-md-4, + [dir="rtl"] px-md-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .rtl .pr-md-5, + [dir="rtl"] .pr-md-5 { + padding-right: 0 !important; + padding-left: 3rem !important; + } + .rtl .pl-md-5, + [dir="rtl"] .pl-md-5 { + padding-left: 0 !important; + padding-right: 3rem !important; + } + .rtl px-md-5, + [dir="rtl"] px-md-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .rtl .mr-md-auto, + [dir="rtl"] .mr-md-auto { + margin-right: 0 !important; + margin-left: auto !important; + } + .rtl .ml-md-auto, + [dir="rtl"] .ml-md-auto { + margin-right: auto !important; + margin-left: 0 !important; + } + .rtl .mx-md-auto, + [dir="rtl"] .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } +} + +@media (min-width: 992px) { + .rtl .mr-lg-0, + [dir="rtl"] .mr-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .rtl .ml-lg-0, + [dir="rtl"] .ml-lg-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl mx-lg-0, + [dir="rtl"] mx-lg-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl .mr-lg-1, + [dir="rtl"] .mr-lg-1 { + margin-right: 0 !important; + margin-left: 0.25rem !important; + } + .rtl .ml-lg-1, + [dir="rtl"] .ml-lg-1 { + margin-left: 0 !important; + margin-right: 0.25rem !important; + } + .rtl mx-lg-1, + [dir="rtl"] mx-lg-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .rtl .mr-lg-2, + [dir="rtl"] .mr-lg-2 { + margin-right: 0 !important; + margin-left: 0.5rem !important; + } + .rtl .ml-lg-2, + [dir="rtl"] .ml-lg-2 { + margin-left: 0 !important; + margin-right: 0.5rem !important; + } + .rtl mx-lg-2, + [dir="rtl"] mx-lg-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .rtl .mr-lg-3, + [dir="rtl"] .mr-lg-3 { + margin-right: 0 !important; + margin-left: 1rem !important; + } + .rtl .ml-lg-3, + [dir="rtl"] .ml-lg-3 { + margin-left: 0 !important; + margin-right: 1rem !important; + } + .rtl mx-lg-3, + [dir="rtl"] mx-lg-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .rtl .mr-lg-4, + [dir="rtl"] .mr-lg-4 { + margin-right: 0 !important; + margin-left: 1.5rem !important; + } + .rtl .ml-lg-4, + [dir="rtl"] .ml-lg-4 { + margin-left: 0 !important; + margin-right: 1.5rem !important; + } + .rtl mx-lg-4, + [dir="rtl"] mx-lg-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .rtl .mr-lg-5, + [dir="rtl"] .mr-lg-5 { + margin-right: 0 !important; + margin-left: 3rem !important; + } + .rtl .ml-lg-5, + [dir="rtl"] .ml-lg-5 { + margin-left: 0 !important; + margin-right: 3rem !important; + } + .rtl mx-lg-5, + [dir="rtl"] mx-lg-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .rtl .pr-lg-0, + [dir="rtl"] .pr-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .rtl .pl-lg-0, + [dir="rtl"] .pl-lg-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl px-lg-0, + [dir="rtl"] px-lg-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl .pr-lg-1, + [dir="rtl"] .pr-lg-1 { + padding-right: 0 !important; + padding-left: 0.25rem !important; + } + .rtl .pl-lg-1, + [dir="rtl"] .pl-lg-1 { + padding-left: 0 !important; + padding-right: 0.25rem !important; + } + .rtl px-lg-1, + [dir="rtl"] px-lg-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .rtl .pr-lg-2, + [dir="rtl"] .pr-lg-2 { + padding-right: 0 !important; + padding-left: 0.5rem !important; + } + .rtl .pl-lg-2, + [dir="rtl"] .pl-lg-2 { + padding-left: 0 !important; + padding-right: 0.5rem !important; + } + .rtl px-lg-2, + [dir="rtl"] px-lg-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .rtl .pr-lg-3, + [dir="rtl"] .pr-lg-3 { + padding-right: 0 !important; + padding-left: 1rem !important; + } + .rtl .pl-lg-3, + [dir="rtl"] .pl-lg-3 { + padding-left: 0 !important; + padding-right: 1rem !important; + } + .rtl px-lg-3, + [dir="rtl"] px-lg-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .rtl .pr-lg-4, + [dir="rtl"] .pr-lg-4 { + padding-right: 0 !important; + padding-left: 1.5rem !important; + } + .rtl .pl-lg-4, + [dir="rtl"] .pl-lg-4 { + padding-left: 0 !important; + padding-right: 1.5rem !important; + } + .rtl px-lg-4, + [dir="rtl"] px-lg-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .rtl .pr-lg-5, + [dir="rtl"] .pr-lg-5 { + padding-right: 0 !important; + padding-left: 3rem !important; + } + .rtl .pl-lg-5, + [dir="rtl"] .pl-lg-5 { + padding-left: 0 !important; + padding-right: 3rem !important; + } + .rtl px-lg-5, + [dir="rtl"] px-lg-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .rtl .mr-lg-auto, + [dir="rtl"] .mr-lg-auto { + margin-right: 0 !important; + margin-left: auto !important; + } + .rtl .ml-lg-auto, + [dir="rtl"] .ml-lg-auto { + margin-right: auto !important; + margin-left: 0 !important; + } + .rtl .mx-lg-auto, + [dir="rtl"] .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } +} + +@media (min-width: 1200px) { + .rtl .mr-xl-0, + [dir="rtl"] .mr-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .rtl .ml-xl-0, + [dir="rtl"] .ml-xl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl mx-xl-0, + [dir="rtl"] mx-xl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .rtl .mr-xl-1, + [dir="rtl"] .mr-xl-1 { + margin-right: 0 !important; + margin-left: 0.25rem !important; + } + .rtl .ml-xl-1, + [dir="rtl"] .ml-xl-1 { + margin-left: 0 !important; + margin-right: 0.25rem !important; + } + .rtl mx-xl-1, + [dir="rtl"] mx-xl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .rtl .mr-xl-2, + [dir="rtl"] .mr-xl-2 { + margin-right: 0 !important; + margin-left: 0.5rem !important; + } + .rtl .ml-xl-2, + [dir="rtl"] .ml-xl-2 { + margin-left: 0 !important; + margin-right: 0.5rem !important; + } + .rtl mx-xl-2, + [dir="rtl"] mx-xl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .rtl .mr-xl-3, + [dir="rtl"] .mr-xl-3 { + margin-right: 0 !important; + margin-left: 1rem !important; + } + .rtl .ml-xl-3, + [dir="rtl"] .ml-xl-3 { + margin-left: 0 !important; + margin-right: 1rem !important; + } + .rtl mx-xl-3, + [dir="rtl"] mx-xl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .rtl .mr-xl-4, + [dir="rtl"] .mr-xl-4 { + margin-right: 0 !important; + margin-left: 1.5rem !important; + } + .rtl .ml-xl-4, + [dir="rtl"] .ml-xl-4 { + margin-left: 0 !important; + margin-right: 1.5rem !important; + } + .rtl mx-xl-4, + [dir="rtl"] mx-xl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .rtl .mr-xl-5, + [dir="rtl"] .mr-xl-5 { + margin-right: 0 !important; + margin-left: 3rem !important; + } + .rtl .ml-xl-5, + [dir="rtl"] .ml-xl-5 { + margin-left: 0 !important; + margin-right: 3rem !important; + } + .rtl mx-xl-5, + [dir="rtl"] mx-xl-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .rtl .pr-xl-0, + [dir="rtl"] .pr-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .rtl .pl-xl-0, + [dir="rtl"] .pl-xl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl px-xl-0, + [dir="rtl"] px-xl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .rtl .pr-xl-1, + [dir="rtl"] .pr-xl-1 { + padding-right: 0 !important; + padding-left: 0.25rem !important; + } + .rtl .pl-xl-1, + [dir="rtl"] .pl-xl-1 { + padding-left: 0 !important; + padding-right: 0.25rem !important; + } + .rtl px-xl-1, + [dir="rtl"] px-xl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .rtl .pr-xl-2, + [dir="rtl"] .pr-xl-2 { + padding-right: 0 !important; + padding-left: 0.5rem !important; + } + .rtl .pl-xl-2, + [dir="rtl"] .pl-xl-2 { + padding-left: 0 !important; + padding-right: 0.5rem !important; + } + .rtl px-xl-2, + [dir="rtl"] px-xl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .rtl .pr-xl-3, + [dir="rtl"] .pr-xl-3 { + padding-right: 0 !important; + padding-left: 1rem !important; + } + .rtl .pl-xl-3, + [dir="rtl"] .pl-xl-3 { + padding-left: 0 !important; + padding-right: 1rem !important; + } + .rtl px-xl-3, + [dir="rtl"] px-xl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .rtl .pr-xl-4, + [dir="rtl"] .pr-xl-4 { + padding-right: 0 !important; + padding-left: 1.5rem !important; + } + .rtl .pl-xl-4, + [dir="rtl"] .pl-xl-4 { + padding-left: 0 !important; + padding-right: 1.5rem !important; + } + .rtl px-xl-4, + [dir="rtl"] px-xl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .rtl .pr-xl-5, + [dir="rtl"] .pr-xl-5 { + padding-right: 0 !important; + padding-left: 3rem !important; + } + .rtl .pl-xl-5, + [dir="rtl"] .pl-xl-5 { + padding-left: 0 !important; + padding-right: 3rem !important; + } + .rtl px-xl-5, + [dir="rtl"] px-xl-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .rtl .mr-xl-auto, + [dir="rtl"] .mr-xl-auto { + margin-right: 0 !important; + margin-left: auto !important; + } + .rtl .ml-xl-auto, + [dir="rtl"] .ml-xl-auto { + margin-right: auto !important; + margin-left: 0 !important; + } + .rtl .mx-xl-auto, + [dir="rtl"] .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } +} + +.rtl .text-right, +[dir="rtl"] .text-right { + text-align: left !important; +} + +.rtl .text-left, +[dir="rtl"] .text-left { + text-align: right !important; +} + +@media (min-width: 576px) { + .rtl .text-sm-right, + [dir="rtl"] .text-sm-right { + text-align: left !important; + } + .rtl .text-sm-left, + [dir="rtl"] .text-sm-left { + text-align: right !important; + } +} + +@media (min-width: 768px) { + .rtl .text-md-right, + [dir="rtl"] .text-md-right { + text-align: left !important; + } + .rtl .text-md-left, + [dir="rtl"] .text-md-left { + text-align: right !important; + } +} + +@media (min-width: 992px) { + .rtl .text-lg-right, + [dir="rtl"] .text-lg-right { + text-align: left !important; + } + .rtl .text-lg-left, + [dir="rtl"] .text-lg-left { + text-align: right !important; + } +} + +@media (min-width: 1200px) { + .rtl .text-xl-right, + [dir="rtl"] .text-xl-right { + text-align: left !important; + } + .rtl .text-xl-left, + [dir="rtl"] .text-xl-left { + text-align: right !important; + } +} +/*# sourceMappingURL=bootstrap-rtl.css.map */ \ No newline at end of file diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map new file mode 100644 index 0000000000..a1927ae7b4 --- /dev/null +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap-rtl.scss","bootstrap-rtl.css","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/vendor/_rfs.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_functions.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/utilities/_overflow.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_shadows.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_stretched-link.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/_print.scss","../../scss/_rtl.scss"],"names":[],"mappings":"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AAwB;AFpH1B;;AE4HA;EACE,aAAa;EACb,0BAA0B;AFzH5B;;AEgIA;EACE,qBAAqB;AF7HvB;;AEgIA;EACE,kBAAkB;EAClB,eAAe;AF7HjB;;AEgIA;EACE,aAAa;AF7Hf;;AAEA;EEiIE,wBAAwB;AF/H1B;;AM3VA;;EAEE,qBHySuC;EGvSvC,gBHyS+B;EGxS/B,gBHyS+B;AHoDjC;;AMzVA;EFgHM,iBAtCY;AJmRlB;;AM5VA;EF+GM,eAtCY;AJuRlB;;AM/VA;EF8GM,kBAtCY;AJ2RlB;;AMlWA;EF6GM,iBAtCY;AJ+RlB;;AMrWA;EF4GM,kBAtCY;AJmSlB;;AMxWA;EF2GM,eAtCY;AJuSlB;;AM1WA;EFyGM,kBAtCY;EEjEhB,gBH2S+B;AHkEjC;;AMzWA;EFmGM,eAtCY;EE3DhB,gBH8R+B;EG7R/B,gBHqR+B;AHuFjC;;AM1WA;EF8FM,iBAtCY;EEtDhB,gBH0R+B;EGzR/B,gBHgR+B;AH6FjC;;AM3WA;EFyFM,iBAtCY;EEjDhB,gBHsR+B;EGrR/B,gBH2Q+B;AHmGjC;;AM5WA;EFoFM,iBAtCY;EE5ChB,gBHkR+B;EGjR/B,gBHsQ+B;AHyGjC;;AElVA;EIpBE,gBHiFW;EGhFX,mBHgFW;EG/EX,SAAS;EACT,wCHzCa;AHmZf;;AMlWA;;EFMI,cAAW;EEHb,gBH8N+B;AHuIjC;;AMlWA;;EAEE,cHsQgC;EGrQhC,yBH8QmC;AHuFrC;;AM7VA;EC/EE,eAAe;EACf,gBAAgB;APgblB;;AM7VA;ECpFE,eAAe;EACf,gBAAgB;APqblB;;AM/VA;EACE,qBAAqB;ANkWvB;;AMnWA;EAII,oBHwP+B;AH2GnC;;AMzVA;EFjCI,cAAW;EEmCb,yBAAyB;AN4V3B;;AMxVA;EACE,mBHwBW;ECTP,kBAtCY;AJmXlB;;AMxVA;EACE,cAAc;EF7CZ,cAAW;EE+Cb,cH1GgB;AHqclB;;AM9VA;EAMI,qBAAqB;AN4VzB;;AQ/cA;ECIE,eAAe;EAGf,YAAY;AT6cd;;AQ9cA;EACE,gBLigCwC;EKhgCxC,sBLRa;EKSb,yBLNgB;EOLd,sBP6OgC;EMvOlC,eAAe;EAGf,YAAY;ATsdd;;AQxcA;EAEE,qBAAqB;AR0cvB;;AQvcA;EACE,qBAA0B;EAC1B,cAAc;AR0chB;;AQvcA;EJkCI,cAAW;EIhCb,cL3BgB;AHqelB;;AWjfA;EPuEI,gBAAW;EOrEb,cRoCe;EQnCf,qBAAqB;AXofvB;;AWjfE;EACE,cAAc;AXoflB;;AW/eA;EACE,sBRqlCuC;EC3hCrC,gBAAW;EOxDb,WRTa;EQUb,yBRDgB;EOXd,qBP+O+B;AHgRnC;;AWvfA;EASI,UAAU;EPkDV,eAAW;EOhDX,gBR4Q6B;AHsOjC;;AE1SA;ESjME,cAAc;EPyCZ,gBAAW;EOvCb,cRjBgB;AHggBlB;;AWlfA;EP0CI,kBAAW;EOlCX,cAAc;EACd,kBAAkB;AX+etB;;AW1eA;EACE,iBR4jCuC;EQ3jCvC,kBAAkB;AX6epB;;AYrhBE;ECDA,WAAW;EACX,mBAA0B;EAC1B,kBAAyB;EACzB,kBAAkB;EAClB,iBAAiB;Ab0hBnB;;AcveI;EFtDF;ICaI,gBVmMK;EHkVT;AACF;;Ac7eI;EFtDF;ICaI,gBVoMK;EHuVT;AACF;;AcnfI;EFtDF;ICaI,gBVqMK;EH4VT;AACF;;AczfI;EFtDF;ICaI,iBVsMM;EHiWV;AACF;;AY/iBE;ECPA,WAAW;EACX,mBAA0B;EAC1B,kBAAyB;EACzB,kBAAkB;EAClB,iBAAiB;Ab0jBnB;;AcvgBI;EFrCE;IACE,gBT8LG;EHkXT;AACF;;Ac7gBI;EFrCE;IACE,gBT+LG;EHuXT;AACF;;AcnhBI;EFrCE;IACE,gBTgMG;EH4XT;AACF;;AczhBI;EFrCE;IACE,iBTiMI;EHiYV;AACF;;AY/iBE;ECnBA,aAAa;EACb,eAAe;EACf,mBAA0B;EAC1B,kBAAyB;AbskB3B;;AYhjBE;EACE,eAAe;EACf,cAAc;AZmjBlB;;AYrjBE;;EAMI,gBAAgB;EAChB,eAAe;AZojBrB;;AetmBE;;;;;;EACE,kBAAkB;EAClB,WAAW;EACX,mBAA0B;EAC1B,kBAAyB;Af8mB7B;;Ae3lBM;EACE,aAAa;EACb,YAAY;EACZ,eAAe;Af8lBvB;;Ae1lBQ;EF8BJ,cAAuB;EACvB,eAAwB;AbgkB5B;;Ae/lBQ;EF8BJ,aAAuB;EACvB,cAAwB;AbqkB5B;;AepmBQ;EF8BJ,oBAAuB;EACvB,qBAAwB;Ab0kB5B;;AezmBQ;EF8BJ,aAAuB;EACvB,cAAwB;Ab+kB5B;;Ae9mBQ;EF8BJ,aAAuB;EACvB,cAAwB;AbolB5B;;AennBQ;EF8BJ,oBAAuB;EACvB,qBAAwB;AbylB5B;;AennBM;EFQJ,cAAc;EACd,WAAW;EACX,eAAe;Ab+mBjB;;AepnBQ;EFLN,mBAAsC;EAItC,oBAAuC;Ab0nBzC;;AeznBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab+nBzC;;Ae9nBQ;EFLN,aAAsC;EAItC,cAAuC;AbooBzC;;AenoBQ;EFLN,oBAAsC;EAItC,qBAAuC;AbyoBzC;;AexoBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab8oBzC;;Ae7oBQ;EFLN,aAAsC;EAItC,cAAuC;AbmpBzC;;AelpBQ;EFLN,oBAAsC;EAItC,qBAAuC;AbwpBzC;;AevpBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab6pBzC;;Ae5pBQ;EFLN,aAAsC;EAItC,cAAuC;AbkqBzC;;AejqBQ;EFLN,oBAAsC;EAItC,qBAAuC;AbuqBzC;;AetqBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab4qBzC;;Ae3qBQ;EFLN,cAAsC;EAItC,eAAuC;AbirBzC;;Ae3qBM;EAAwB,SAAS;Af+qBvC;;Ae7qBM;EAAuB,SZ6KG;AHogBhC;;Ae9qBQ;EAAwB,QADZ;AfmrBpB;;AelrBQ;EAAwB,QADZ;AfurBpB;;AetrBQ;EAAwB,QADZ;Af2rBpB;;Ae1rBQ;EAAwB,QADZ;Af+rBpB;;Ae9rBQ;EAAwB,QADZ;AfmsBpB;;AelsBQ;EAAwB,QADZ;AfusBpB;;AetsBQ;EAAwB,QADZ;Af2sBpB;;Ae1sBQ;EAAwB,QADZ;Af+sBpB;;Ae9sBQ;EAAwB,QADZ;AfmtBpB;;AeltBQ;EAAwB,QADZ;AfutBpB;;AettBQ;EAAwB,SADZ;Af2tBpB;;Ae1tBQ;EAAwB,SADZ;Af+tBpB;;Ae9tBQ;EAAwB,SADZ;AfmuBpB;;Ae5tBU;EFNR,uBAA+C;AbsuBjD;;AehuBU;EFNR,wBAA+C;Ab0uBjD;;AepuBU;EFNR,iBAA+C;Ab8uBjD;;AexuBU;EFNR,wBAA+C;AbkvBjD;;Ae5uBU;EFNR,wBAA+C;AbsvBjD;;AehvBU;EFNR,iBAA+C;Ab0vBjD;;AepvBU;EFNR,wBAA+C;Ab8vBjD;;AexvBU;EFNR,wBAA+C;AbkwBjD;;Ae5vBU;EFNR,iBAA+C;AbswBjD;;AehwBU;EFNR,wBAA+C;Ab0wBjD;;AepwBU;EFNR,wBAA+C;Ab8wBjD;;Ac3wBI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;Ef6yBrB;EezyBM;IF8BJ,cAAuB;IACvB,eAAwB;Eb8wB1B;Ee7yBM;IF8BJ,aAAuB;IACvB,cAAwB;EbkxB1B;EejzBM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbsxB1B;EerzBM;IF8BJ,aAAuB;IACvB,cAAwB;Eb0xB1B;EezzBM;IF8BJ,aAAuB;IACvB,cAAwB;Eb8xB1B;Ee7zBM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbkyB1B;Ee5zBI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;EbuzBf;Ee5zBM;IFLN,mBAAsC;IAItC,oBAAuC;Ebi0BvC;Eeh0BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebq0BvC;Eep0BM;IFLN,aAAsC;IAItC,cAAuC;Eby0BvC;Eex0BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb60BvC;Ee50BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebi1BvC;Eeh1BM;IFLN,aAAsC;IAItC,cAAuC;Ebq1BvC;Eep1BM;IFLN,oBAAsC;IAItC,qBAAuC;Eby1BvC;Eex1BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb61BvC;Ee51BM;IFLN,aAAsC;IAItC,cAAuC;Ebi2BvC;Eeh2BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebq2BvC;Eep2BM;IFLN,oBAAsC;IAItC,qBAAuC;Eby2BvC;Eex2BM;IFLN,cAAsC;IAItC,eAAuC;Eb62BvC;Eev2BI;IAAwB,SAAS;Ef02BrC;Eex2BI;IAAuB,SZ6KG;EH8rB9B;Eex2BM;IAAwB,QADZ;Ef42BlB;Ee32BM;IAAwB,QADZ;Ef+2BlB;Ee92BM;IAAwB,QADZ;Efk3BlB;Eej3BM;IAAwB,QADZ;Efq3BlB;Eep3BM;IAAwB,QADZ;Efw3BlB;Eev3BM;IAAwB,QADZ;Ef23BlB;Ee13BM;IAAwB,QADZ;Ef83BlB;Ee73BM;IAAwB,QADZ;Efi4BlB;Eeh4BM;IAAwB,QADZ;Efo4BlB;Een4BM;IAAwB,QADZ;Efu4BlB;Eet4BM;IAAwB,SADZ;Ef04BlB;Eez4BM;IAAwB,SADZ;Ef64BlB;Ee54BM;IAAwB,SADZ;Efg5BlB;Eez4BQ;IFNR,eAA6B;Ebk5B7B;Ee54BQ;IFNR,uBAA+C;Ebq5B/C;Ee/4BQ;IFNR,wBAA+C;Ebw5B/C;Eel5BQ;IFNR,iBAA+C;Eb25B/C;Eer5BQ;IFNR,wBAA+C;Eb85B/C;Eex5BQ;IFNR,wBAA+C;Ebi6B/C;Ee35BQ;IFNR,iBAA+C;Ebo6B/C;Ee95BQ;IFNR,wBAA+C;Ebu6B/C;Eej6BQ;IFNR,wBAA+C;Eb06B/C;Eep6BQ;IFNR,iBAA+C;Eb66B/C;Eev6BQ;IFNR,wBAA+C;Ebg7B/C;Ee16BQ;IFNR,wBAA+C;Ebm7B/C;AACF;;Acj7BI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;Efm9BrB;Ee/8BM;IF8BJ,cAAuB;IACvB,eAAwB;Ebo7B1B;Een9BM;IF8BJ,aAAuB;IACvB,cAAwB;Ebw7B1B;Eev9BM;IF8BJ,oBAAuB;IACvB,qBAAwB;Eb47B1B;Ee39BM;IF8BJ,aAAuB;IACvB,cAAwB;Ebg8B1B;Ee/9BM;IF8BJ,aAAuB;IACvB,cAAwB;Ebo8B1B;Een+BM;IF8BJ,oBAAuB;IACvB,qBAAwB;Ebw8B1B;Eel+BI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;Eb69Bf;Eel+BM;IFLN,mBAAsC;IAItC,oBAAuC;Ebu+BvC;Eet+BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb2+BvC;Ee1+BM;IFLN,aAAsC;IAItC,cAAuC;Eb++BvC;Ee9+BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebm/BvC;Eel/BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebu/BvC;Eet/BM;IFLN,aAAsC;IAItC,cAAuC;Eb2/BvC;Ee1/BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+/BvC;Ee9/BM;IFLN,oBAAsC;IAItC,qBAAuC;EbmgCvC;EelgCM;IFLN,aAAsC;IAItC,cAAuC;EbugCvC;EetgCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb2gCvC;Ee1gCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+gCvC;Ee9gCM;IFLN,cAAsC;IAItC,eAAuC;EbmhCvC;Ee7gCI;IAAwB,SAAS;EfghCrC;Ee9gCI;IAAuB,SZ6KG;EHo2B9B;Ee9gCM;IAAwB,QADZ;EfkhClB;EejhCM;IAAwB,QADZ;EfqhClB;EephCM;IAAwB,QADZ;EfwhClB;EevhCM;IAAwB,QADZ;Ef2hClB;Ee1hCM;IAAwB,QADZ;Ef8hClB;Ee7hCM;IAAwB,QADZ;EfiiClB;EehiCM;IAAwB,QADZ;EfoiClB;EeniCM;IAAwB,QADZ;EfuiClB;EetiCM;IAAwB,QADZ;Ef0iClB;EeziCM;IAAwB,QADZ;Ef6iClB;Ee5iCM;IAAwB,SADZ;EfgjClB;Ee/iCM;IAAwB,SADZ;EfmjClB;EeljCM;IAAwB,SADZ;EfsjClB;Ee/iCQ;IFNR,eAA6B;EbwjC7B;EeljCQ;IFNR,uBAA+C;Eb2jC/C;EerjCQ;IFNR,wBAA+C;Eb8jC/C;EexjCQ;IFNR,iBAA+C;EbikC/C;Ee3jCQ;IFNR,wBAA+C;EbokC/C;Ee9jCQ;IFNR,wBAA+C;EbukC/C;EejkCQ;IFNR,iBAA+C;Eb0kC/C;EepkCQ;IFNR,wBAA+C;Eb6kC/C;EevkCQ;IFNR,wBAA+C;EbglC/C;Ee1kCQ;IFNR,iBAA+C;EbmlC/C;Ee7kCQ;IFNR,wBAA+C;EbslC/C;EehlCQ;IFNR,wBAA+C;EbylC/C;AACF;;AcvlCI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;EfynCrB;EernCM;IF8BJ,cAAuB;IACvB,eAAwB;Eb0lC1B;EeznCM;IF8BJ,aAAuB;IACvB,cAAwB;Eb8lC1B;Ee7nCM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbkmC1B;EejoCM;IF8BJ,aAAuB;IACvB,cAAwB;EbsmC1B;EeroCM;IF8BJ,aAAuB;IACvB,cAAwB;Eb0mC1B;EezoCM;IF8BJ,oBAAuB;IACvB,qBAAwB;Eb8mC1B;EexoCI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;EbmoCf;EexoCM;IFLN,mBAAsC;IAItC,oBAAuC;Eb6oCvC;Ee5oCM;IFLN,oBAAsC;IAItC,qBAAuC;EbipCvC;EehpCM;IFLN,aAAsC;IAItC,cAAuC;EbqpCvC;EeppCM;IFLN,oBAAsC;IAItC,qBAAuC;EbypCvC;EexpCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb6pCvC;Ee5pCM;IFLN,aAAsC;IAItC,cAAuC;EbiqCvC;EehqCM;IFLN,oBAAsC;IAItC,qBAAuC;EbqqCvC;EepqCM;IFLN,oBAAsC;IAItC,qBAAuC;EbyqCvC;EexqCM;IFLN,aAAsC;IAItC,cAAuC;Eb6qCvC;Ee5qCM;IFLN,oBAAsC;IAItC,qBAAuC;EbirCvC;EehrCM;IFLN,oBAAsC;IAItC,qBAAuC;EbqrCvC;EeprCM;IFLN,cAAsC;IAItC,eAAuC;EbyrCvC;EenrCI;IAAwB,SAAS;EfsrCrC;EeprCI;IAAuB,SZ6KG;EH0gC9B;EeprCM;IAAwB,QADZ;EfwrClB;EevrCM;IAAwB,QADZ;Ef2rClB;Ee1rCM;IAAwB,QADZ;Ef8rClB;Ee7rCM;IAAwB,QADZ;EfisClB;EehsCM;IAAwB,QADZ;EfosClB;EensCM;IAAwB,QADZ;EfusClB;EetsCM;IAAwB,QADZ;Ef0sClB;EezsCM;IAAwB,QADZ;Ef6sClB;Ee5sCM;IAAwB,QADZ;EfgtClB;Ee/sCM;IAAwB,QADZ;EfmtClB;EeltCM;IAAwB,SADZ;EfstClB;EertCM;IAAwB,SADZ;EfytClB;EextCM;IAAwB,SADZ;Ef4tClB;EertCQ;IFNR,eAA6B;Eb8tC7B;EextCQ;IFNR,uBAA+C;EbiuC/C;Ee3tCQ;IFNR,wBAA+C;EbouC/C;Ee9tCQ;IFNR,iBAA+C;EbuuC/C;EejuCQ;IFNR,wBAA+C;Eb0uC/C;EepuCQ;IFNR,wBAA+C;Eb6uC/C;EevuCQ;IFNR,iBAA+C;EbgvC/C;Ee1uCQ;IFNR,wBAA+C;EbmvC/C;Ee7uCQ;IFNR,wBAA+C;EbsvC/C;EehvCQ;IFNR,iBAA+C;EbyvC/C;EenvCQ;IFNR,wBAA+C;Eb4vC/C;EetvCQ;IFNR,wBAA+C;Eb+vC/C;AACF;;Ac7vCI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;Ef+xCrB;Ee3xCM;IF8BJ,cAAuB;IACvB,eAAwB;EbgwC1B;Ee/xCM;IF8BJ,aAAuB;IACvB,cAAwB;EbowC1B;EenyCM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbwwC1B;EevyCM;IF8BJ,aAAuB;IACvB,cAAwB;Eb4wC1B;Ee3yCM;IF8BJ,aAAuB;IACvB,cAAwB;EbgxC1B;Ee/yCM;IF8BJ,oBAAuB;IACvB,qBAAwB;EboxC1B;Ee9yCI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;EbyyCf;Ee9yCM;IFLN,mBAAsC;IAItC,oBAAuC;EbmzCvC;EelzCM;IFLN,oBAAsC;IAItC,qBAAuC;EbuzCvC;EetzCM;IFLN,aAAsC;IAItC,cAAuC;Eb2zCvC;Ee1zCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+zCvC;Ee9zCM;IFLN,oBAAsC;IAItC,qBAAuC;Ebm0CvC;Eel0CM;IFLN,aAAsC;IAItC,cAAuC;Ebu0CvC;Eet0CM;IFLN,oBAAsC;IAItC,qBAAuC;Eb20CvC;Ee10CM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+0CvC;Ee90CM;IFLN,aAAsC;IAItC,cAAuC;Ebm1CvC;Eel1CM;IFLN,oBAAsC;IAItC,qBAAuC;Ebu1CvC;Eet1CM;IFLN,oBAAsC;IAItC,qBAAuC;Eb21CvC;Ee11CM;IFLN,cAAsC;IAItC,eAAuC;Eb+1CvC;Eez1CI;IAAwB,SAAS;Ef41CrC;Ee11CI;IAAuB,SZ6KG;EHgrC9B;Ee11CM;IAAwB,QADZ;Ef81ClB;Ee71CM;IAAwB,QADZ;Efi2ClB;Eeh2CM;IAAwB,QADZ;Efo2ClB;Een2CM;IAAwB,QADZ;Efu2ClB;Eet2CM;IAAwB,QADZ;Ef02ClB;Eez2CM;IAAwB,QADZ;Ef62ClB;Ee52CM;IAAwB,QADZ;Efg3ClB;Ee/2CM;IAAwB,QADZ;Efm3ClB;Eel3CM;IAAwB,QADZ;Efs3ClB;Eer3CM;IAAwB,QADZ;Efy3ClB;Eex3CM;IAAwB,SADZ;Ef43ClB;Ee33CM;IAAwB,SADZ;Ef+3ClB;Ee93CM;IAAwB,SADZ;Efk4ClB;Ee33CQ;IFNR,eAA6B;Ebo4C7B;Ee93CQ;IFNR,uBAA+C;Ebu4C/C;Eej4CQ;IFNR,wBAA+C;Eb04C/C;Eep4CQ;IFNR,iBAA+C;Eb64C/C;Eev4CQ;IFNR,wBAA+C;Ebg5C/C;Ee14CQ;IFNR,wBAA+C;Ebm5C/C;Ee74CQ;IFNR,iBAA+C;Ebs5C/C;Eeh5CQ;IFNR,wBAA+C;Eby5C/C;Een5CQ;IFNR,wBAA+C;Eb45C/C;Eet5CQ;IFNR,iBAA+C;Eb+5C/C;Eez5CQ;IFNR,wBAA+C;Ebk6C/C;Ee55CQ;IFNR,wBAA+C;Ebq6C/C;AACF;;AgB39CA;EACE,WAAW;EACX,mBbkIW;EajIX,cbSgB;AHq9ClB;;AgBj+CA;;EAQI,gBbsVgC;EarVhC,mBAAmB;EACnB,6BbJc;AHk+ClB;;AgBx+CA;EAcI,sBAAsB;EACtB,gCbTc;AHu+ClB;;AgB7+CA;EAmBI,6Bbbc;AH2+ClB;;AgBr9CA;;EAGI,ebgU+B;AHupCnC;;AgB98CA;EACE,yBbnCgB;AHo/ClB;;AgBl9CA;;EAKI,yBbvCc;AHy/ClB;;AgBv9CA;;EAWM,wBAA4C;AhBi9ClD;;AgB58CA;;;;EAKI,SAAS;AhB88Cb;;AgBt8CA;EAEI,qCb1DW;AHkgDf;;AKvgDE;EW2EI,cbvEY;EawEZ,sCbvES;AHugDf;;AiBnhDE;;;EAII,yBCsF4D;AlB+7ClE;;AiBzhDE;;;;EAYM,qBC8E0D;AlBs8ClE;;AKzhDE;EYiBM,yBAJsC;AjBghD9C;;AiBjhDE;;EASQ,yBARoC;AjBqhD9C;;AiBziDE;;;EAII,yBCsF4D;AlBq9ClE;;AiB/iDE;;;;EAYM,qBC8E0D;AlB49ClE;;AK/iDE;EYiBM,yBAJsC;AjBsiD9C;;AiBviDE;;EASQ,yBARoC;AjB2iD9C;;AiB/jDE;;;EAII,yBCsF4D;AlB2+ClE;;AiBrkDE;;;;EAYM,qBC8E0D;AlBk/ClE;;AKrkDE;EYiBM,yBAJsC;AjB4jD9C;;AiB7jDE;;EASQ,yBARoC;AjBikD9C;;AiBrlDE;;;EAII,yBCsF4D;AlBigDlE;;AiB3lDE;;;;EAYM,qBC8E0D;AlBwgDlE;;AK3lDE;EYiBM,yBAJsC;AjBklD9C;;AiBnlDE;;EASQ,yBARoC;AjBulD9C;;AiB3mDE;;;EAII,yBCsF4D;AlBuhDlE;;AiBjnDE;;;;EAYM,qBC8E0D;AlB8hDlE;;AKjnDE;EYiBM,yBAJsC;AjBwmD9C;;AiBzmDE;;EASQ,yBARoC;AjB6mD9C;;AiBjoDE;;;EAII,yBCsF4D;AlB6iDlE;;AiBvoDE;;;;EAYM,qBC8E0D;AlBojDlE;;AKvoDE;EYiBM,yBAJsC;AjB8nD9C;;AiB/nDE;;EASQ,yBARoC;AjBmoD9C;;AiBvpDE;;;EAII,yBCsF4D;AlBmkDlE;;AiB7pDE;;;;EAYM,qBC8E0D;AlB0kDlE;;AK7pDE;EYiBM,yBAJsC;AjBopD9C;;AiBrpDE;;EASQ,yBARoC;AjBypD9C;;AiB7qDE;;;EAII,yBCsF4D;AlBylDlE;;AiBnrDE;;;;EAYM,qBC8E0D;AlBgmDlE;;AKnrDE;EYiBM,yBAJsC;AjB0qD9C;;AiB3qDE;;EASQ,yBARoC;AjB+qD9C;;AiBnsDE;;;EAII,sCdQS;AH6rDf;;AKlsDE;EYiBM,sCAJsC;AjByrD9C;;AiB1rDE;;EASQ,sCARoC;AjB8rD9C;;AgBxmDA;EAGM,Wb3GS;Ea4GT,yBbpGY;EaqGZ,qBbmQqD;AHs2C3D;;AgB9mDA;EAWM,cb5GY;Ea6GZ,yBblHY;EamHZ,qBblHY;AHytDlB;;AgBlmDA;EACE,Wb3Ha;Ea4Hb,yBbpHgB;AHytDlB;;AgBvmDA;;;EAOI,qBb+OuD;AHu3C3D;;AgB7mDA;EAWI,SAAS;AhBsmDb;;AgBjnDA;EAgBM,2Cb1IS;AH+uDf;;AK1uDE;EW4IM,WbjJO;EakJP,4CblJO;AHovDf;;AclrDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhBolDvC;EgBzlDG;IASK,SAAS;EhBmlDjB;AACF;;Ac9rDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhBgmDvC;EgBrmDG;IASK,SAAS;EhB+lDjB;AACF;;Ac1sDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhB4mDvC;EgBjnDG;IASK,SAAS;EhB2mDjB;AACF;;ActtDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhBwnDvC;EgB7nDG;IASK,SAAS;EhBunDjB;AACF;;AgBtoDA;EAOQ,cAAc;EACd,WAAW;EACX,gBAAgB;EAChB,iCAAiC;AhBmoDzC;;AgB7oDA;EAcU,SAAS;AhBmoDnB;;AmBhzDA;EACE,cAAc;EACd,WAAW;EACX,mCDuG8D;ECtG9D,yBhB4XkC;ECvQ9B,eAtCY;Ee5EhB,gBhBsR+B;EgBrR/B,gBhB0R+B;EgBzR/B,chBDgB;EgBEhB,sBhBTa;EgBUb,4BAA4B;EAC5B,yBhBPgB;EONd,sBP6OgC;EiB5O9B,wEjBof4F;AH40ClG;;AoB3zDI;EDLJ;ICMM,gBAAgB;EpB+zDpB;AACF;;AmBt0DA;EAsBI,6BAA6B;EAC7B,SAAS;AnBozDb;;AmB30DA;EA4BI,kBAAkB;EAClB,0BhBrBc;AHw0DlB;;AqBz0DE;EACE,clBAc;EkBCd,sBlBRW;EkBSX,qBlBwdsE;EkBvdtE,UAAU;EAKR,gDlBcW;AH0zDjB;;AmBx1DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAiDI,yBhB9Cc;EgBgDd,UAAU;AnB+yDd;;AmB3yDA;EAOI,chBtDc;EgBuDd,sBhB9DW;AHs2Df;;AmBnyDA;;EAEE,cAAc;EACd,WAAW;AnBsyDb;;AmB5xDA;EACE,iCDwB8D;ECvB9D,oCDuB8D;ECtB9D,gBAAgB;EflBd,kBAAW;EeoBb,gBhB4M+B;AHmlDjC;;AmB5xDA;EACE,+BDgB8D;ECf9D,kCDe8D;Ede1D,kBAtCY;EeUhB,gBhByI+B;AHspDjC;;AmB5xDA;EACE,gCDS8D;ECR9D,mCDQ8D;Ede1D,mBAtCY;EeiBhB,gBhBmI+B;AH4pDjC;;AmBtxDA;EACE,cAAc;EACd,WAAW;EACX,mBAA2B;EAC3B,gBAAgB;EfQZ,eAtCY;EegChB,gBhB+K+B;EgB9K/B,chB1GgB;EgB2GhB,6BAA6B;EAC7B,yBAAyB;EACzB,mBAAmC;AnByxDrC;;AmBnyDA;EAcI,gBAAgB;EAChB,eAAe;AnByxDnB;;AmB7wDA;EACE,kCD/B8D;ECgC9D,uBhBgQiC;ECjR7B,mBAtCY;EeyDhB,gBhB2F+B;EOxO7B,qBP+O+B;AH+qDnC;;AmB7wDA;EACE,gCDvC8D;ECwC9D,oBhB6PgC;ECtR5B,kBAtCY;EeiEhB,gBhBkF+B;EOvO7B,qBP8O+B;AHwrDnC;;AmB5wDA;EAGI,YAAY;AnB6wDhB;;AmBzwDA;EACE,YAAY;AnB4wDd;;AmBpwDA;EACE,mBhBsV0C;AHi7C5C;;AmBpwDA;EACE,cAAc;EACd,mBhBuU4C;AHg8C9C;;AmB/vDA;EACE,aAAa;EACb,eAAe;EACf,kBAA0C;EAC1C,iBAAyC;AnBkwD3C;;AmBtwDA;;EAQI,kBAA0C;EAC1C,iBAAyC;AnBmwD7C;;AmB1vDA;EACE,kBAAkB;EAClB,cAAc;EACd,qBhB4S6C;AHi9C/C;;AmB1vDA;EACE,kBAAkB;EAClB,kBhBwS2C;EgBvS3C,qBhBsS6C;AHu9C/C;;AmBhwDA;;EAQI,chBhNc;AH68DlB;;AmBzvDA;EACE,gBAAgB;AnB4vDlB;;AmBzvDA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,eAAe;EACf,qBhByR4C;AHm+C9C;;AmBhwDA;EAQI,gBAAgB;EAChB,aAAa;EACb,uBhBoR4C;EgBnR5C,cAAc;AnB4vDlB;;AqBh8DE;EACE,aAAa;EACb,WAAW;EACX,mBlB6c0C;ECpb1C,cAAW;EiBvBX,clBNa;AHy8DjB;;AqBh8DE;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,aAAa;EACb,eAAe;EACf,uBlBmyBqC;EkBlyBrC,iBAAiB;EjBoEf,mBAtCY;EiB5Bd,gBlB2O6B;EkB1O7B,WlBvDW;EkBwDX,wClBpBa;EOtCb,sBP6OgC;AHixDpC;;AqBn+DI;;;;EAsCE,cAAc;ArBo8DpB;;AqB1+DI;EA4CE,qBlBjCW;EkBoCT,oCHiCwD;EGhCxD,iRHpCmI;EGqCnI,4BAA4B;EAC5B,2DAA6D;EAC7D,gEH6BwD;AlBm6DhE;;AqBn/DI;EAuDI,qBlB5CS;EkB6CT,gDlB7CS;AH6+DjB;;AqBx/DI;EAiEI,oCHewD;EGdxD,kFHcwD;AlB66DhE;;AqB7/DI;EAyEE,qBlB9DW;EkBiET,uCHIwD;EGHxD,ujBAA8J;ArBs7DtK;;AqBngEI;EAiFI,qBlBtES;EkBuET,gDlBvES;AH6/DjB;;AqBxgEI;EA0FI,clB/ES;AHigEjB;;AqB5gEI;;;EA+FI,cAAc;ArBm7DtB;;AqBlhEI;EAuGI,clB5FS;AH2gEjB;;AqBthEI;EA0GM,qBlB/FO;AH+gEjB;;AqB1hEI;EAgHM,qBAAkC;EC1IxC,yBD2I+C;ArB86DnD;;AqB/hEI;EAuHM,gDlB5GO;AHwhEjB;;AqBniEI;EA2HM,qBlBhHO;AH4hEjB;;AqBviEI;EAqII,qBlB1HS;AHgiEjB;;AqB3iEI;EA0IM,qBlB/HO;EkBgIP,gDlBhIO;AHqiEjB;;AqBpiEE;EACE,aAAa;EACb,WAAW;EACX,mBlB6c0C;ECpb1C,cAAW;EiBvBX,clBTa;AHgjEjB;;AqBpiEE;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,aAAa;EACb,eAAe;EACf,uBlBmyBqC;EkBlyBrC,iBAAiB;EjBoEf,mBAtCY;EiB5Bd,gBlB2O6B;EkB1O7B,WlBvDW;EkBwDX,wClBvBa;EOnCb,sBP6OgC;AHq3DpC;;AqBvkEI;;;;EAsCE,cAAc;ArBwiEpB;;AqB9kEI;EA4CE,qBlBpCW;EkBuCT,oCHiCwD;EGhCxD,4UHpCmI;EGqCnI,4BAA4B;EAC5B,2DAA6D;EAC7D,gEH6BwD;AlBugEhE;;AqBvlEI;EAuDI,qBlB/CS;EkBgDT,gDlBhDS;AHolEjB;;AqB5lEI;EAiEI,oCHewD;EGdxD,kFHcwD;AlBihEhE;;AqBjmEI;EAyEE,qBlBjEW;EkBoET,uCHIwD;EGHxD,knBAA8J;ArB0hEtK;;AqBvmEI;EAiFI,qBlBzES;EkB0ET,gDlB1ES;AHomEjB;;AqB5mEI;EA0FI,clBlFS;AHwmEjB;;AqBhnEI;;;EA+FI,cAAc;ArBuhEtB;;AqBtnEI;EAuGI,clB/FS;AHknEjB;;AqB1nEI;EA0GM,qBlBlGO;AHsnEjB;;AqB9nEI;EAgHM,qBAAkC;EC1IxC,yBD2I+C;ArBkhEnD;;AqBnoEI;EAuHM,gDlB/GO;AH+nEjB;;AqBvoEI;EA2HM,qBlBnHO;AHmoEjB;;AqB3oEI;EAqII,qBlB7HS;AHuoEjB;;AqB/oEI;EA0IM,qBlBlIO;EkBmIP,gDlBnIO;AH4oEjB;;AmB36DA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AnB86DrB;;AmBj7DA;EASI,WAAW;AnB46Df;;AcloEI;EK6MJ;IAeM,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;EnB26DpB;EmB77DF;IAuBM,aAAa;IACb,cAAc;IACd,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;EnBy6DpB;EmBp8DF;IAgCM,qBAAqB;IACrB,WAAW;IACX,sBAAsB;EnBu6D1B;EmBz8DF;IAuCM,qBAAqB;EnBq6DzB;EmB58DF;;IA4CM,WAAW;EnBo6Df;EmBh9DF;IAkDM,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,eAAe;EnBi6DnB;EmBv9DF;IAyDM,kBAAkB;IAClB,cAAc;IACd,aAAa;IACb,qBhB2LwC;IgB1LxC,cAAc;EnBi6DlB;EmB99DF;IAiEM,mBAAmB;IACnB,uBAAuB;EnBg6D3B;EmBl+DF;IAqEM,gBAAgB;EnBg6DpB;AACF;;AuBzuEA;EACE,qBAAqB;EAErB,gBpB0R+B;EoBzR/B,cpBMgB;EoBLhB,kBAAkB;EAElB,sBAAsB;EACtB,eAAsD;EACtD,yBAAiB;EAAjB,sBAAiB;EAAjB,qBAAiB;EAAjB,iBAAiB;EACjB,6BAA6B;EAC7B,6BAA2C;ECuF3C,yBrB8RkC;ECvQ9B,eAtCY;EoBiBhB,gBrB8L+B;EOnS7B,sBP6OgC;EiB5O9B,qIjB6b6I;AH6zDnJ;;AoBrvEI;EGLJ;IHMM,gBAAgB;EpByvEpB;AACF;;AK1vEE;EkBUE,cpBNc;EoBOd,qBAAqB;AvBovEzB;;AuBrwEA;EAsBI,UAAU;EACV,gDpBOa;AH4uEjB;;AuB1wEA;EA6BI,apBoZ6B;AH61DjC;;AuBluEA;;EAEE,oBAAoB;AvBquEtB;;AuB5tEE;ECvDA,WrBCa;EmBDX,yBnB8Ba;EqB5Bf,qBrB4Be;AH2vEjB;;AKnxEE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBgyE7H;;AwBpxEE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,gDAAiF;AxBkxEvF;;AwB7wEE;EAEE,WrB1BW;EqB2BX,yBrBEa;EqBDb,qBrBCa;AH8wEjB;;AwBxwEE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBozEnN;;AwBrwEI;;EAKI,gDAAiF;AxBqwEzF;;AuBjwEE;ECvDA,WrBCa;EmBDX,yBnBOc;EqBLhB,qBrBKgB;AHuzElB;;AKxzEE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBq0E7H;;AwBzzEE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,iDAAiF;AxBuzEvF;;AwBlzEE;EAEE,WrB1BW;EqB2BX,yBrBrBc;EqBsBd,qBrBtBc;AH00ElB;;AwB7yEE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBy1EnN;;AwB1yEI;;EAKI,iDAAiF;AxB0yEzF;;AuBtyEE;ECvDA,WrBCa;EmBDX,yBnBqCa;EqBnCf,qBrBmCe;AH8zEjB;;AK71EE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxB02E7H;;AwB91EE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,+CAAiF;AxB41EvF;;AwBv1EE;EAEE,WrB1BW;EqB2BX,yBrBSa;EqBRb,qBrBQa;AHi1EjB;;AwBl1EE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxB83EnN;;AwB/0EI;;EAKI,+CAAiF;AxB+0EzF;;AuB30EE;ECvDA,WrBCa;EmBDX,yBnBuCa;EqBrCf,qBrBqCe;AHi2EjB;;AKl4EE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxB+4E7H;;AwBn4EE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,gDAAiF;AxBi4EvF;;AwB53EE;EAEE,WrB1BW;EqB2BX,yBrBWa;EqBVb,qBrBUa;AHo3EjB;;AwBv3EE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBm6EnN;;AwBp3EI;;EAKI,gDAAiF;AxBo3EzF;;AuBh3EE;ECvDA,crBUgB;EmBVd,yBnBoCa;EqBlCf,qBrBkCe;AHy4EjB;;AKv6EE;EmBAE,crBIc;EmBVd,yBEDoF;EASpF,qBATyH;AxBo7E7H;;AwBx6EE;EAEE,crBHc;EmBVd,yBEDoF;EAgBpF,qBAhByH;EAqBvH,gDAAiF;AxBs6EvF;;AwBj6EE;EAEE,crBjBc;EqBkBd,yBrBQa;EqBPb,qBrBOa;AH45EjB;;AwB55EE;;EAGE,crB7Bc;EqB8Bd,yBAzCuK;EA6CvK,qBA7C+M;AxBw8EnN;;AwBz5EI;;EAKI,gDAAiF;AxBy5EzF;;AuBr5EE;ECvDA,WrBCa;EmBDX,yBnBkCa;EqBhCf,qBrBgCe;AHg7EjB;;AK58EE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBy9E7H;;AwB78EE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,+CAAiF;AxB28EvF;;AwBt8EE;EAEE,WrB1BW;EqB2BX,yBrBMa;EqBLb,qBrBKa;AHm8EjB;;AwBj8EE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxB6+EnN;;AwB97EI;;EAKI,+CAAiF;AxB87EzF;;AuB17EE;ECvDA,crBUgB;EmBVd,yBnBEc;EqBAhB,qBrBAgB;AHq/ElB;;AKj/EE;EmBAE,crBIc;EmBVd,yBEDoF;EASpF,qBATyH;AxB8/E7H;;AwBl/EE;EAEE,crBHc;EmBVd,yBEDoF;EAgBpF,qBAhByH;EAqBvH,iDAAiF;AxBg/EvF;;AwB3+EE;EAEE,crBjBc;EqBkBd,yBrB1Bc;EqB2Bd,qBrB3Bc;AHwgFlB;;AwBt+EE;;EAGE,crB7Bc;EqB8Bd,yBAzCuK;EA6CvK,qBA7C+M;AxBkhFnN;;AwBn+EI;;EAKI,iDAAiF;AxBm+EzF;;AuB/9EE;ECvDA,WrBCa;EmBDX,yBnBSc;EqBPhB,qBrBOgB;AHmhFlB;;AKthFE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBmiF7H;;AwBvhFE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,8CAAiF;AxBqhFvF;;AwBhhFE;EAEE,WrB1BW;EqB2BX,yBrBnBc;EqBoBd,qBrBpBc;AHsiFlB;;AwB3gFE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBujFnN;;AwBxgFI;;EAKI,8CAAiF;AxBwgFzF;;AuB9/EE;ECHA,crB5Be;EqB6Bf,qBrB7Be;AHkiFjB;;AK1jFE;EmBwDE,WrB7DW;EqB8DX,yBrBjCa;EqBkCb,qBrBlCa;AHwiFjB;;AwBngFE;EAEE,+CrBvCa;AH4iFjB;;AwBlgFE;EAEE,crB5Ca;EqB6Cb,6BAA6B;AxBogFjC;;AwBjgFE;;EAGE,WrBhFW;EqBiFX,yBrBpDa;EqBqDb,qBrBrDa;AHwjFjB;;AwBjgFI;;EAKI,+CrB5DS;AH6jFjB;;AuB9hFE;ECHA,crBnDgB;EqBoDhB,qBrBpDgB;AHylFlB;;AK1lFE;EmBwDE,WrB7DW;EqB8DX,yBrBxDc;EqByDd,qBrBzDc;AH+lFlB;;AwBniFE;EAEE,iDrB9Dc;AHmmFlB;;AwBliFE;EAEE,crBnEc;EqBoEd,6BAA6B;AxBoiFjC;;AwBjiFE;;EAGE,WrBhFW;EqBiFX,yBrB3Ec;EqB4Ed,qBrB5Ec;AH+mFlB;;AwBjiFI;;EAKI,iDrBnFU;AHonFlB;;AuB9jFE;ECHA,crBrBe;EqBsBf,qBrBtBe;AH2lFjB;;AK1nFE;EmBwDE,WrB7DW;EqB8DX,yBrB1Ba;EqB2Bb,qBrB3Ba;AHimFjB;;AwBnkFE;EAEE,+CrBhCa;AHqmFjB;;AwBlkFE;EAEE,crBrCa;EqBsCb,6BAA6B;AxBokFjC;;AwBjkFE;;EAGE,WrBhFW;EqBiFX,yBrB7Ca;EqB8Cb,qBrB9Ca;AHinFjB;;AwBjkFI;;EAKI,+CrBrDS;AHsnFjB;;AuB9lFE;ECHA,crBnBe;EqBoBf,qBrBpBe;AHynFjB;;AK1pFE;EmBwDE,WrB7DW;EqB8DX,yBrBxBa;EqByBb,qBrBzBa;AH+nFjB;;AwBnmFE;EAEE,gDrB9Ba;AHmoFjB;;AwBlmFE;EAEE,crBnCa;EqBoCb,6BAA6B;AxBomFjC;;AwBjmFE;;EAGE,WrBhFW;EqBiFX,yBrB3Ca;EqB4Cb,qBrB5Ca;AH+oFjB;;AwBjmFI;;EAKI,gDrBnDS;AHopFjB;;AuB9nFE;ECHA,crBtBe;EqBuBf,qBrBvBe;AH4pFjB;;AK1rFE;EmBwDE,crBpDc;EqBqDd,yBrB3Ba;EqB4Bb,qBrB5Ba;AHkqFjB;;AwBnoFE;EAEE,+CrBjCa;AHsqFjB;;AwBloFE;EAEE,crBtCa;EqBuCb,6BAA6B;AxBooFjC;;AwBjoFE;;EAGE,crBvEc;EqBwEd,yBrB9Ca;EqB+Cb,qBrB/Ca;AHkrFjB;;AwBjoFI;;EAKI,+CrBtDS;AHurFjB;;AuB9pFE;ECHA,crBxBe;EqByBf,qBrBzBe;AH8rFjB;;AK1tFE;EmBwDE,WrB7DW;EqB8DX,yBrB7Ba;EqB8Bb,qBrB9Ba;AHosFjB;;AwBnqFE;EAEE,+CrBnCa;AHwsFjB;;AwBlqFE;EAEE,crBxCa;EqByCb,6BAA6B;AxBoqFjC;;AwBjqFE;;EAGE,WrBhFW;EqBiFX,yBrBhDa;EqBiDb,qBrBjDa;AHotFjB;;AwBjqFI;;EAKI,+CrBxDS;AHytFjB;;AuB9rFE;ECHA,crBxDgB;EqByDhB,qBrBzDgB;AH8vFlB;;AK1vFE;EmBwDE,crBpDc;EqBqDd,yBrB7Dc;EqB8Dd,qBrB9Dc;AHowFlB;;AwBnsFE;EAEE,iDrBnEc;AHwwFlB;;AwBlsFE;EAEE,crBxEc;EqByEd,6BAA6B;AxBosFjC;;AwBjsFE;;EAGE,crBvEc;EqBwEd,yBrBhFc;EqBiFd,qBrBjFc;AHoxFlB;;AwBjsFI;;EAKI,iDrBxFU;AHyxFlB;;AuB9tFE;ECHA,crBjDgB;EqBkDhB,qBrBlDgB;AHuxFlB;;AK1xFE;EmBwDE,WrB7DW;EqB8DX,yBrBtDc;EqBuDd,qBrBvDc;AH6xFlB;;AwBnuFE;EAEE,8CrB5Dc;AHiyFlB;;AwBluFE;EAEE,crBjEc;EqBkEd,6BAA6B;AxBouFjC;;AwBjuFE;;EAGE,WrBhFW;EqBiFX,yBrBzEc;EqB0Ed,qBrB1Ec;AH6yFlB;;AwBjuFI;;EAKI,8CrBjFU;AHkzFlB;;AuBnvFA;EACE,gBpBoN+B;EoBnN/B,cpB5Ce;EoB6Cf,qBpBkG4C;AHopF9C;;AK3zFE;EkBwEE,cpBgG8D;EoB/F9D,0BpBgG+C;AHupFnD;;AuB9vFA;EAYI,0BpB2F+C;EoB1F/C,gBAAgB;AvBsvFpB;;AuBnwFA;EAkBI,cpBnFc;EoBoFd,oBAAoB;AvBqvFxB;;AuB1uFA;ECJE,oBrB6SgC;ECtR5B,kBAtCY;EoBiBhB,gBrBkI+B;EOvO7B,qBP8O+B;AH0mFnC;;AuB7uFA;ECRE,uBrBwSiC;ECjR7B,mBAtCY;EoBiBhB,gBrBmI+B;EOxO7B,qBP+O+B;AHgnFnC;;AuB3uFA;EACE,cAAc;EACd,WAAW;AvB8uFb;;AuBhvFA;EAMI,kBpB6T+B;AHi7EnC;;AuBzuFA;;;EAII,WAAW;AvB2uFf;;AyBn3FA;ELMM,gCjB8P2C;AHmnFjD;;AoB52FI;EKXJ;ILYM,gBAAgB;EpBg3FpB;AACF;;AyB73FA;EAII,UAAU;AzB63Fd;;AyBz3FA;EAEI,aAAa;AzB23FjB;;AyBv3FA;EACE,kBAAkB;EAClB,SAAS;EACT,gBAAgB;ELXZ,6BjB+PwC;AHuoF9C;;AoBj4FI;EKGJ;ILFM,gBAAgB;EpBq4FpB;AACF;;A0Bj5FA;;;;EAIE,kBAAkB;A1Bo5FpB;;A0Bj5FA;EACE,mBAAmB;A1Bo5FrB;;A2Bh4FI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;EAhCf,uBAA8B;EAC9B,qCAA4C;EAC5C,gBAAgB;EAChB,oCAA2C;A3Bo6F7C;;A2B/2FI;EACE,cAAc;A3Bk3FpB;;A0B55FA;EACE,kBAAkB;EAClB,SAAS;EACT,OAAO;EACP,avB4pBsC;EuB3pBtC,aAAa;EACb,WAAW;EACX,gBvBkuBuC;EuBjuBvC,iBAA8B;EAC9B,oBAA4B;EtBsGxB,eAtCY;EsB9DhB,cvBXgB;EuBYhB,gBAAgB;EAChB,gBAAgB;EAChB,sBvBvBa;EuBwBb,4BAA4B;EAC5B,qCvBfa;EOZX,sBP6OgC;AH8sFpC;;A0Bv5FI;EACE,WAAW;EACX,OAAO;A1B05Fb;;A0Bv5FI;EACE,QAAQ;EACR,UAAU;A1B05FhB;;Ac94FI;EYnBA;IACE,WAAW;IACX,OAAO;E1Bq6FX;E0Bl6FE;IACE,QAAQ;IACR,UAAU;E1Bo6Fd;AACF;;Acz5FI;EYnBA;IACE,WAAW;IACX,OAAO;E1Bg7FX;E0B76FE;IACE,QAAQ;IACR,UAAU;E1B+6Fd;AACF;;Acp6FI;EYnBA;IACE,WAAW;IACX,OAAO;E1B27FX;E0Bx7FE;IACE,QAAQ;IACR,UAAU;E1B07Fd;AACF;;Ac/6FI;EYnBA;IACE,WAAW;IACX,OAAO;E1Bs8FX;E0Bn8FE;IACE,QAAQ;IACR,UAAU;E1Bq8Fd;AACF;;A0B/7FA;EAEI,SAAS;EACT,YAAY;EACZ,aAAa;EACb,uBvB+rBuC;AHkwE3C;;A2Bh+FI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;EAzBf,aAAa;EACb,qCAA4C;EAC5C,0BAAiC;EACjC,oCAA2C;A3B6/F7C;;A2B/8FI;EACE,cAAc;A3Bk9FpB;;A0Bx8FA;EAEI,MAAM;EACN,WAAW;EACX,UAAU;EACV,aAAa;EACb,qBvBirBuC;AHyxE3C;;A2Bv/FI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;EAlBf,mCAA0C;EAC1C,eAAe;EACf,sCAA6C;EAC7C,wBAA+B;A3B6gGjC;;A2Bt+FI;EACE,cAAc;A3By+FpB;;A2BtgGI;EDmDE,iBAAiB;A1Bu9FvB;;A0Bl9FA;EAEI,MAAM;EACN,WAAW;EACX,UAAU;EACV,aAAa;EACb,sBvBgqBuC;AHozE3C;;A2BlhGI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;A3BqhGjB;;A2BzhGI;EAgBI,aAAa;A3B6gGrB;;A2B1gGM;EACE,qBAAqB;EACrB,qBxB+MwC;EwB9MxC,uBxB6MwC;EwB5MxC,WAAW;EA9BjB,mCAA0C;EAC1C,yBAAgC;EAChC,sCAA6C;A3B4iG/C;;A2B3gGI;EACE,cAAc;A3B8gGpB;;A2BxhGM;EDiDA,iBAAiB;A1B2+FvB;;A0Bp+FA;EAKI,WAAW;EACX,YAAY;A1Bm+FhB;;A0B99FA;EE9GE,SAAS;EACT,gBAAmB;EACnB,gBAAgB;EAChB,6BzBCgB;AH+kGlB;;A0B99FA;EACE,cAAc;EACd,WAAW;EACX,uBvBopBwC;EuBnpBxC,WAAW;EACX,gBvBoK+B;EuBnK/B,cvBhHgB;EuBiHhB,mBAAmB;EACnB,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;A1Bi+FX;;AKrlGE;EqBmIE,cvBqnBqD;EuBpnBrD,qBAAqB;EJ9IrB,yBnBEc;AHmmGlB;;A0Bj/FA;EAgCI,WvBnJW;EuBoJX,qBAAqB;EJrJrB,yBnB8Ba;AH6kGjB;;A0Bv/FA;EAuCI,cvBpJc;EuBqJd,oBAAoB;EACpB,6BAA6B;A1Bo9FjC;;A0B58FA;EACE,cAAc;A1B+8FhB;;A0B38FA;EACE,cAAc;EACd,sBvB+lBwC;EuB9lBxC,gBAAgB;EtBpDZ,mBAtCY;EsB4FhB,cvBxKgB;EuByKhB,mBAAmB;A1B88FrB;;A0B18FA;EACE,cAAc;EACd,uBvBqlBwC;EuBplBxC,cvB7KgB;AH0nGlB;;A6BvoGA;;EAEE,kBAAkB;EAClB,oBAAoB;EACpB,sBAAsB;A7B0oGxB;;A6B9oGA;;EAOI,kBAAkB;EAClB,cAAc;A7B4oGlB;;AK3oGE;;EwBII,UAAU;A7B4oGhB;;A6BzpGA;;;;EAkBM,UAAU;A7B8oGhB;;A6BxoGA;EACE,aAAa;EACb,eAAe;EACf,2BAA2B;A7B2oG7B;;A6B9oGA;EAMI,WAAW;A7B4oGf;;A6BxoGA;;EAII,iB1BsM6B;AHm8FjC;;A6B7oGA;;EnBhBI,0BmB0B8B;EnBzB9B,6BmByB8B;A7ByoGlC;;A6BnpGA;;EnBFI,yBmBiB6B;EnBhB7B,4BmBgB6B;A7B0oGjC;;A6B1nGA;EACE,wBAAmC;EACnC,uBAAkC;A7B6nGpC;;A6B/nGA;;;EAOI,cAAc;A7B8nGlB;;A6B3nGE;EACE,eAAe;A7B8nGnB;;A6B1nGA;EACE,uBAAsC;EACtC,sBAAqC;A7B6nGvC;;A6B1nGA;EACE,sBAAsC;EACtC,qBAAqC;A7B6nGvC;;A6BzmGA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,uBAAuB;A7B4mGzB;;A6B/mGA;;EAOI,WAAW;A7B6mGf;;A6BpnGA;;EAYI,gB1BqH6B;AHw/FjC;;A6BznGA;;EnBlFI,6BmBoG+B;EnBnG/B,4BmBmG+B;A7B6mGnC;;A6B/nGA;;EnBhGI,yBmBuH4B;EnBtH5B,0BmBsH4B;A7B8mGhC;;A6B7lGA;;EAGI,gBAAgB;A7B+lGpB;;A6BlmGA;;;;EAOM,kBAAkB;EAClB,sBAAsB;EACtB,oBAAoB;A7BkmG1B;;A8B3vGA;EACE,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,oBAAoB;EACpB,WAAW;A9B8vGb;;A8BnwGA;;;;EAWI,kBAAkB;EAClB,YAAY;EACZ,YAAY;EACZ,gBAAgB;A9B+vGpB;;A8B7wGA;;;;;;;;;;;;EAmBM,iB3BsN2B;AHmjGjC;;A8B5xGA;;;EA2BI,UAAU;A9BuwGd;;A8BlyGA;EAgCI,UAAU;A9BswGd;;A8BtyGA;;EpBeI,0BoBsBmD;EpBrBnD,6BoBqBmD;A9BuwGvD;;A8B5yGA;;EpB6BI,yBoBSmD;EpBRnD,4BoBQmD;A9B4wGvD;;A8BlzGA;EA4CI,aAAa;EACb,mBAAmB;A9B0wGvB;;A8BvzGA;;EpBeI,0BoBiC6E;EpBhC7E,6BoBgC6E;A9B6wGjF;;A8B7zGA;EpB6BI,yBoBoBsE;EpBnBtE,4BoBmBsE;A9BixG1E;;A8BtwGA;;EAEE,aAAa;A9BywGf;;A8B3wGA;;EAQI,kBAAkB;EAClB,UAAU;A9BwwGd;;A8BjxGA;;EAYM,UAAU;A9B0wGhB;;A8BtxGA;;;;;;;;EAoBI,iB3ByJ6B;AHonGjC;;A8BzwGA;EAAuB,kB3BqJU;AHwnGjC;;A8B5wGA;EAAsB,iB3BoJW;AH4nGjC;;A8BxwGA;EACE,aAAa;EACb,mBAAmB;EACnB,yB3BgSkC;E2B/RlC,gBAAgB;E1BwBZ,eAtCY;E0BgBhB,gB3B0L+B;E2BzL/B,gB3B8L+B;E2B7L/B,c3B7FgB;E2B8FhB,kBAAkB;EAClB,mBAAmB;EACnB,yB3BrGgB;E2BsGhB,yB3BpGgB;EONd,sBP6OgC;AHyoGpC;;A8BxxGA;;EAkBI,aAAa;A9B2wGjB;;A8BjwGA;;EAEE,gCZjB8D;AlBqxGhE;;A8BjwGA;;;;;;EAME,oB3B2QgC;ECtR5B,kBAtCY;E0BmDhB,gB3BgG+B;EOvO7B,qBP8O+B;AH8pGnC;;A8BjwGA;;EAEE,kCZlC8D;AlBsyGhE;;A8BjwGA;;;;;;EAME,uB3BqPiC;ECjR7B,mBAtCY;E0BoEhB,gB3BgF+B;EOxO7B,qBP+O+B;AH8qGnC;;A8BjwGA;;EAEE,sBAA0E;A9BowG5E;;A8BzvGA;;;;;;EpBzJI,0BoB+J4B;EpB9J5B,6BoB8J4B;A9B6vGhC;;A8B1vGA;;;;;;EpBpJI,yBoB0J2B;EpBzJ3B,4BoByJ2B;A9B8vG/B;;A+Bl7GA;EACE,kBAAkB;EAClB,cAAc;EACd,kBAA+C;EAC/C,oBAAqE;A/Bq7GvE;;A+Bl7GA;EACE,oBAAoB;EACpB,kB5B6f0C;AHw7F5C;;A+Bl7GA;EACE,kBAAkB;EAClB,OAAO;EACP,WAAW;EACX,W5Byf0C;E4Bxf1C,eAAkF;EAClF,UAAU;A/Bq7GZ;;A+B37GA;EASI,W5BvBW;E4BwBX,qB5BKa;EmB9Bb,yBnB8Ba;AHk7GjB;;A+Bj8GA;EAoBM,gD5BLW;AHs7GjB;;A+Br8GA;EAyBI,qB5B0bsE;AHs/F1E;;A+Bz8GA;EA6BI,W5B3CW;E4B4CX,yB5Bsf8E;E4Brf9E,qB5Bqf8E;AH27FlF;;A+B/8GA;EAuCM,c5B/CY;AH29GlB;;A+Bn9GA;EA0CQ,yB5BtDU;AHm+GlB;;A+Bn6GA;EACE,kBAAkB;EAClB,gBAAgB;EAEhB,mBAAmB;A/Bq6GrB;;A+Bz6GA;EASI,kBAAkB;EAClB,YAA+E;EAC/E,aAA+D;EAC/D,cAAc;EACd,W5B4bwC;E4B3bxC,Y5B2bwC;E4B1bxC,oBAAoB;EACpB,WAAW;EACX,sB5BnFW;E4BoFX,yB5BoJ6B;AHgxGjC;;A+Bt7GA;EAwBI,kBAAkB;EAClB,YAA+E;EAC/E,aAA+D;EAC/D,cAAc;EACd,W5B6awC;E4B5axC,Y5B4awC;E4B3axC,WAAW;EACX,mCAAgE;A/Bk6GpE;;A+Bz5GA;ErB5GI,sBP6OgC;AH4xGpC;;A+B75GA;EAOM,kOb5EqI;AlBs+G3I;;A+Bj6GA;EAaM,qB5B1FW;EmB9Bb,yBnB8Ba;AHm/GjB;;A+Bt6GA;EAkBM,+KbvFqI;AlB++G3I;;A+B16GA;EAwBM,wC5BrGW;AH2/GjB;;A+B96GA;EA2BM,wC5BxGW;AH+/GjB;;A+B94GA;EAGI,kB5B8Z+C;AHi/FnD;;A+Bl5GA;EAQM,8KbjHqI;AlB+/G3I;;A+Bt5GA;EAcM,wC5B/HW;AH2gHjB;;A+Bl4GA;EACE,qBAA2D;A/Bq4G7D;;A+Bt4GA;EAKM,cAAqD;EACrD,c5BsY+E;E4BrY/E,mBAAmB;EAEnB,qB5BoY4E;AHggGlF;;A+B74GA;EAaM,wBb1E0D;Ea2E1D,0Bb3E0D;Ea4E1D,uBbxD0D;EayD1D,wBbzD0D;Ea0D1D,yB5BlLY;E4BoLZ,qB5B0X4E;EiBpjB5E,yIjBsgB+H;AHwjGrI;;AoBzjHI;EWkKJ;IXjKM,gBAAgB;EpB6jHpB;AACF;;A+B75GA;EA0BM,sB5BhMS;E4BiMT,8BAA4E;A/Bu4GlF;;A+Bl6GA;EAiCM,wC5B1KW;AH+iHjB;;A+Bz3GA;EACE,qBAAqB;EACrB,WAAW;EACX,mCb7G8D;Ea8G9D,0C5BwKkC;ECvQ9B,eAtCY;E2BwIhB,gB5BkE+B;E4BjE/B,gB5BsE+B;E4BrE/B,c5BrNgB;E4BsNhB,sBAAsB;EACtB,uO5BuW+I;E4BtW/I,yB5B3NgB;EONd,sBP6OgC;E4BTlC,wBAAgB;EAAhB,qBAAgB;EAAhB,gBAAgB;A/B03GlB;;A+Bz4GA;EAkBI,qB5B4PsE;E4B3PtE,UAAU;EAIR,gD5B7MW;AHqkHjB;;A+B/4GA;EAgCM,c5B5OY;E4B6OZ,sB5BpPS;AHumHf;;A+Bp5GA;EAuCI,YAAY;EACZ,sB5BoIgC;E4BnIhC,sBAAsB;A/Bi3G1B;;A+B15GA;EA6CI,c5B1Pc;E4B2Pd,yB5B/Pc;AHgnHlB;;A+B/5GA;EAmDI,aAAa;A/Bg3GjB;;A+Bn6GA;EAwDI,kBAAkB;EAClB,0B5BrQc;AHonHlB;;A+B32GA;EACE,kCbxK8D;EayK9D,oB5BsHkC;E4BrHlC,uB5BqHkC;E4BpHlC,oB5BqHiC;ECjR7B,mBAtCY;AJijHlB;;A+B32GA;EACE,gCbhL8D;EaiL9D,mB5BmHiC;E4BlHjC,sB5BkHiC;E4BjHjC,kB5BkHgC;ECtR5B,kBAtCY;AJyjHlB;;A+Bt2GA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,WAAW;EACX,mCbhM8D;EaiM9D,gBAAgB;A/By2GlB;;A+Bt2GA;EACE,kBAAkB;EAClB,UAAU;EACV,WAAW;EACX,mCbxM8D;EayM9D,SAAS;EACT,UAAU;A/By2GZ;;A+B/2GA;EASI,qB5B2KsE;E4B1KtE,gD5B1Ra;AHooHjB;;A+Bp3GA;;EAgBI,yB5B3Tc;AHoqHlB;;A+Bz3GA;EAqBM,iB5BkUQ;AHsiGd;;A+B73GA;EA0BI,0BAA0B;A/Bu2G9B;;A+Bn2GA;EACE,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,OAAO;EACP,UAAU;EACV,mCbxO8D;EayO9D,yB5B6CkC;E4B3ClC,gB5BxD+B;E4ByD/B,gB5BpD+B;E4BqD/B,c5B/UgB;E4BgVhB,sB5BvVa;E4BwVb,yB5BpVgB;EONd,sBP6OgC;AHm9GpC;;A+Bn3GA;EAkBI,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,SAAS;EACT,UAAU;EACV,cAAc;EACd,6Bb1P4D;Ea2P5D,yB5B2BgC;E4B1BhC,gB5BpE6B;E4BqE7B,c5B/Vc;E4BgWd,iBAAiB;ETxWjB,yBnBGc;E4BuWd,oBAAoB;ErB3WpB,kCqB4WgF;A/Bq2GpF;;A+B31GA;EACE,WAAW;EACX,cbhR2B;EaiR3B,UAAU;EACV,6BAA6B;EAC7B,wBAAgB;EAAhB,qBAAgB;EAAhB,gBAAgB;A/B81GlB;;A+Bn2GA;EAQI,aAAa;A/B+1GjB;;A+Bv2GA;EAY8B,gE5BnWb;AHksHjB;;A+B32GA;EAa8B,gE5BpWb;AHssHjB;;A+B/2GA;EAc8B,gE5BrWb;AH0sHjB;;A+Bn3GA;EAkBI,SAAS;A/Bq2Gb;;A+Bv3GA;EAsBI,W5B2N6C;E4B1N7C,Y5B0N6C;E4BzN7C,oBAAyE;ET7YzE,yBnB8Ba;E4BiXb,S5B0N0C;EO1mB1C,mBP2mB6C;EiB1mB3C,oHjBsgB+H;EiBtgB/H,4GjBsgB+H;E4BnHjI,wBAAgB;EAAhB,gBAAgB;A/Bo2GpB;;AoBlvHI;EWgXJ;IX/WM,wBAAgB;IAAhB,gBAAgB;EpBsvHpB;AACF;;A+Bx4GA;ETrXI,yBnB8mB2E;AHmpG/E;;A+B54GA;EAsCI,W5BoMoC;E4BnMpC,c5BoMqC;E4BnMrC,kBAAkB;EAClB,e5BmMuC;E4BlMvC,yB5B3Zc;E4B4Zd,yBAAyB;ErBjazB,mBPomBoC;AHwqGxC;;A+Bt5GA;EAiDI,W5BgM6C;E4B/L7C,Y5B+L6C;EmBtmB7C,yBnB8Ba;E4B2Yb,S5BgM0C;EO1mB1C,mBP2mB6C;EiB1mB3C,iHjBsgB+H;EiBtgB/H,4GjBsgB+H;E4BzFjI,qBAAgB;EAAhB,gBAAgB;A/Bw2GpB;;AoBhxHI;EWgXJ;IX/WM,qBAAgB;IAAhB,gBAAgB;EpBoxHpB;AACF;;A+Bt6GA;ETrXI,yBnB8mB2E;AHirG/E;;A+B16GA;EAgEI,W5B0KoC;E4BzKpC,c5B0KqC;E4BzKrC,kBAAkB;EAClB,e5ByKuC;E4BxKvC,yB5Brbc;E4Bsbd,yBAAyB;ErB3bzB,mBPomBoC;AHssGxC;;A+Bp7GA;EA2EI,W5BsK6C;E4BrK7C,Y5BqK6C;E4BpK7C,aAAa;EACb,oB5B9D+B;E4B+D/B,mB5B/D+B;EmBrY/B,yBnB8Ba;E4Bwab,S5BmK0C;EO1mB1C,mBP2mB6C;EiB1mB3C,gHjBsgB+H;EiBtgB/H,4GjBsgB+H;E4B5DjI,gBAAgB;A/B42GpB;;AoBjzHI;EWgXJ;IX/WM,oBAAgB;IAAhB,gBAAgB;EpBqzHpB;AACF;;A+Bv8GA;ETrXI,yBnB8mB2E;AHktG/E;;A+B38GA;EA6FI,W5B6IoC;E4B5IpC,c5B6IqC;E4B5IrC,kBAAkB;EAClB,e5B4IuC;E4B3IvC,6BAA6B;EAC7B,yBAAyB;EACzB,oBAA4C;A/Bk3GhD;;A+Br9GA;EAwGI,yB5Bzdc;EOLd,mBPomBoC;AH4uGxC;;A+B19GA;EA6GI,kBAAkB;EAClB,yB5B/dc;EOLd,mBPomBoC;AHkvGxC;;A+Bh+GA;EAoHM,yB5BneY;AHm1HlB;;A+Bp+GA;EAwHM,eAAe;A/Bg3GrB;;A+Bx+GA;EA4HM,yB5B3eY;AH21HlB;;A+B5+GA;EAgIM,eAAe;A/Bg3GrB;;A+Bh/GA;EAoIM,yB5BnfY;AHm2HlB;;A+B32GA;;;EX9fM,4GjBsgB+H;AHy2GrI;;AoB12HI;EWyfJ;;;IXxfM,gBAAgB;EpBg3HpB;AACF;;AgCx3HA;EACE,aAAa;EACb,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,gBAAgB;AhC23HlB;;AgCx3HA;EACE,cAAc;EACd,oB7B6qBsC;AH8sGxC;;AK13HE;E2BEE,qBAAqB;AhC43HzB;;AgCj4HA;EAUI,c7BVc;E6BWd,oBAAoB;EACpB,eAAe;AhC23HnB;;AgCn3HA;EACE,gC7BxBgB;AH84HlB;;AgCv3HA;EAII,mB7B0M6B;AH6qHjC;;AgC33HA;EAQI,6BAAgD;EtB3BhD,+BPoOgC;EOnOhC,gCPmOgC;AHgrHpC;;AKl5HE;E2B6BI,qC7BnCY;AH45HlB;;AgCr4HA;EAgBM,c7BpCY;E6BqCZ,6BAA6B;EAC7B,yBAAyB;AhCy3H/B;;AgC34HA;;EAwBI,c7B3Cc;E6B4Cd,sB7BnDW;E6BoDX,kC7BpDW;AH46Hf;;AgCl5HA;EA+BI,gB7B+K6B;EOjO7B,yBsBoD4B;EtBnD5B,0BsBmD4B;AhCu3HhC;;AgC92HA;EtBtEI,sBP6OgC;AH2sHpC;;AgCl3HA;;EAOI,W7B3EW;E6B4EX,yB7B/Ca;AH+5HjB;;AgCv2HA;EAEI,cAAc;EACd,kBAAkB;AhCy2HtB;;AgCr2HA;EAEI,aAAa;EACb,YAAY;EACZ,kBAAkB;AhCu2HtB;;AgC91HA;EAEI,aAAa;AhCg2HjB;;AgCl2HA;EAKI,cAAc;AhCi2HlB;;AiCr8HA;EACE,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,mBAAmB;EACnB,8BAA8B;EAC9B,oB9BiHW;AHu1Hb;;AiC98HA;;EAWI,aAAa;EACb,eAAe;EACf,mBAAmB;EACnB,8BAA8B;AjCw8HlC;;AiCp7HA;EACE,qBAAqB;EACrB,sB9BqqB+E;E8BpqB/E,yB9BoqB+E;E8BnqB/E,kB9BiFW;ECTP,kBAtCY;E6BhChB,oBAAoB;EACpB,mBAAmB;AjCu7HrB;;AKj+HE;E4B6CE,qBAAqB;AjCw7HzB;;AiC/6HA;EACE,aAAa;EACb,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,gBAAgB;AjCk7HlB;;AiCv7HA;EAQI,gBAAgB;EAChB,eAAe;AjCm7HnB;;AiC57HA;EAaI,gBAAgB;EAChB,WAAW;AjCm7Hf;;AiC16HA;EACE,qBAAqB;EACrB,mB9B4lBuC;E8B3lBvC,sB9B2lBuC;AHk1GzC;;AiCj6HA;EACE,gBAAgB;EAChB,YAAY;EAGZ,mBAAmB;AjCk6HrB;;AiC95HA;EACE,wB9BumBwC;EC9lBpC,kBAtCY;E6B+BhB,cAAc;EACd,6BAA6B;EAC7B,6BAAuC;EvBrHrC,sBP6OgC;AH0yHpC;;AK5gIE;E4B8GE,qBAAqB;AjCk6HzB;;AiC55HA;EACE,qBAAqB;EACrB,YAAY;EACZ,aAAa;EACb,sBAAsB;EACtB,WAAW;EACX,mCAAmC;EACnC,0BAA0B;AjC+5H5B;;Acj+HI;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjCw5HvB;AACF;;Act/HI;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjC84HjC;EiCn6HG;IAwBK,mBAAmB;EjC84H3B;EiCt6HG;IA2BO,kBAAkB;EjC84H5B;EiCz6HG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EH82GvC;EiC76HG;;IAsCK,iBAAiB;EjC24HzB;EiCj7HG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjC63HxB;EiCr7HG;IA4DK,aAAa;EjC43HrB;AACF;;AcrgII;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjC47HvB;AACF;;Ac1hII;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjCk7HjC;EiCv8HG;IAwBK,mBAAmB;EjCk7H3B;EiC18HG;IA2BO,kBAAkB;EjCk7H5B;EiC78HG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EHk5GvC;EiCj9HG;;IAsCK,iBAAiB;EjC+6HzB;EiCr9HG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjCi6HxB;EiCz9HG;IA4DK,aAAa;EjCg6HrB;AACF;;AcziII;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjCg+HvB;AACF;;Ac9jII;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjCs9HjC;EiC3+HG;IAwBK,mBAAmB;EjCs9H3B;EiC9+HG;IA2BO,kBAAkB;EjCs9H5B;EiCj/HG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EHs7GvC;EiCr/HG;;IAsCK,iBAAiB;EjCm9HzB;EiCz/HG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjCq8HxB;EiC7/HG;IA4DK,aAAa;EjCo8HrB;AACF;;Ac7kII;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjCogIvB;AACF;;AclmII;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjC0/HjC;EiC/gIG;IAwBK,mBAAmB;EjC0/H3B;EiClhIG;IA2BO,kBAAkB;EjC0/H5B;EiCrhIG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EH09GvC;EiCzhIG;;IAsCK,iBAAiB;EjCu/HzB;EiC7hIG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjCy+HxB;EiCjiIG;IA4DK,aAAa;EjCw+HrB;AACF;;AiC1iIA;EAyBQ,qBAAqB;EACrB,2BAA2B;AjCqhInC;;AiC/iIA;;EAQU,gBAAgB;EAChB,eAAe;AjC4iIzB;;AiCrjIA;EA6BU,mBAAmB;AjC4hI7B;;AiCzjIA;EAgCY,kBAAkB;AjC6hI9B;;AiC7jIA;EAoCY,qB9BgiB6B;E8B/hB7B,oB9B+hB6B;AH8/GzC;;AiClkIA;;EA2CU,iBAAiB;AjC4hI3B;;AiCvkIA;EA0DU,wBAAwB;EAGxB,gBAAgB;AjC+gI1B;;AiC5kIA;EAiEU,aAAa;AjC+gIvB;;AiClgIA;EAEI,yB9B/MW;AHmtIf;;AKptIE;E4BmNI,yB9BlNS;AHutIf;;AiC1gIA;EAWM,yB9BxNS;AH2tIf;;AK5tIE;E4B4NM,yB9B3NO;AH+tIf;;AiClhIA;EAkBQ,yB9B/NO;AHmuIf;;AiCthIA;;;;EA0BM,yB9BvOS;AH0uIf;;AiC7hIA;EA+BI,yB9B5OW;E8B6OX,gC9B7OW;AH+uIf;;AiCliIA;EAoCI,+QftNuI;AlBwtI3I;;AiCtiIA;EAwCI,yB9BrPW;AHuvIf;;AiC1iIA;EA0CM,yB9BvPS;AH2vIf;;AK5vIE;E4B2PM,yB9B1PO;AH+vIf;;AiC9/HA;EAEI,W9B7QW;AH6wIf;;AKpwIE;E4BuQI,W9BhRS;AHixIf;;AiCtgIA;EAWM,+B9BtRS;AHqxIf;;AK5wIE;E4BgRM,gC9BzRO;AHyxIf;;AiC9gIA;EAkBQ,gC9B7RO;AH6xIf;;AiClhIA;;;;EA0BM,W9BrSS;AHoyIf;;AiCzhIA;EA+BI,+B9B1SW;E8B2SX,sC9B3SW;AHyyIf;;AiC9hIA;EAoCI,qRf1QuI;AlBwwI3I;;AiCliIA;EAwCI,+B9BnTW;AHizIf;;AiCtiIA;EA0CM,W9BrTS;AHqzIf;;AK5yIE;E4B+SM,W9BxTO;AHyzIf;;AkC5zIA;EACE,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,YAAY;EAEZ,qBAAqB;EACrB,sB/BJa;E+BKb,2BAA2B;EAC3B,sC/BIa;EOZX,sBP6OgC;AH0lIpC;;AkCx0IA;EAaI,eAAe;EACf,cAAc;AlC+zIlB;;AkC70IA;ExBUI,+BPoOgC;EOnOhC,gCPmOgC;AHomIpC;;AkCl1IA;ExBwBI,mCPsNgC;EOrNhC,kCPqNgC;AHymIpC;;AkCzzIA;EAGE,cAAc;EAGd,eAAe;EACf,gB/BsxByC;AHkiH3C;;AkCpzIA;EACE,sB/BgxBwC;AHuiH1C;;AkCpzIA;EACE,qBAA+B;EAC/B,gBAAgB;AlCuzIlB;;AkCpzIA;EACE,gBAAgB;AlCuzIlB;;AKl2IE;E6BgDE,qBAAqB;AlCszIzB;;AkCxzIA;EAMI,oB/B+vBuC;AHujH3C;;AkC9yIA;EACE,wB/BsvByC;E+BrvBzC,gBAAgB;EAEhB,qC/B3Da;E+B4Db,6C/B5Da;AH42If;;AkCrzIA;ExBnEI,0DwB2E8E;AlCizIlF;;AkCzzIA;EAaM,aAAa;AlCgzInB;;AkC3yIA;EACE,wB/BouByC;E+BnuBzC,qC/B3Ea;E+B4Eb,0C/B5Ea;AH03If;;AkCjzIA;ExBrFI,0DQ+H4D;AlB2wIhE;;AkCtyIA;EACE,uBAAiC;EACjC,uB/BmtBwC;E+BltBxC,sBAAgC;EAChC,gBAAgB;AlCyyIlB;;AkCtyIA;EACE,uBAAiC;EACjC,sBAAgC;AlCyyIlC;;AkCryIA;EACE,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,SAAS;EACT,OAAO;EACP,gB/B8sByC;AH0lH3C;;AkCryIA;;;EAGE,cAAc;EACd,WAAW;AlCwyIb;;AkCryIA;;ExBxHI,2CQsH4D;ERrH5D,4CQqH4D;AlB6yIhE;;AkCtyIA;;ExB/GI,+CQwG4D;ERvG5D,8CQuG4D;AlBmzIhE;;AkCpyIA;EAEI,mB/BurBsD;AH+mH1D;;Ac/3II;EoBuFJ;IAMI,aAAa;IACb,mBAAmB;IACnB,mB/BirBsD;I+BhrBtD,kB/BgrBsD;EHunHxD;EkChzIF;IAaM,YAAY;IACZ,kB/B2qBoD;I+B1qBpD,gBAAgB;IAChB,iB/ByqBoD;EH6nHxD;AACF;;AkC7xIA;EAII,mB/B2pBsD;AHkoH1D;;Acl5II;EoBiHJ;IAQI,aAAa;IACb,mBAAmB;ElC8xIrB;EkCvyIF;IAcM,YAAY;IACZ,gBAAgB;ElC4xIpB;EkC3yIF;IAkBQ,cAAc;IACd,cAAc;ElC4xIpB;EkC/yIF;IxBxJI,0BwBiLoC;IxBhLpC,6BwBgLoC;ElC0xItC;EkCnzIF;;IA8BY,0BAA0B;ElCyxIpC;EkCvzIF;;IAmCY,6BAA6B;ElCwxIvC;EkC3zIF;IxB1II,yBwBkLmC;IxBjLnC,4BwBiLmC;ElCuxIrC;EkC/zIF;;IA6CY,yBAAyB;ElCsxInC;EkCn0IF;;IAkDY,4BAA4B;ElCqxItC;AACF;;AkCzwIA;EAEI,sB/BglBsC;AH2rH1C;;Ac77II;EoBgLJ;IAMI,oB/B6lBiC;I+B7lBjC,e/B6lBiC;I+B5lBjC,wB/B6lBuC;I+B7lBvC,mB/B6lBuC;I+B5lBvC,UAAU;IACV,SAAS;ElC4wIX;EkCrxIF;IAYM,qBAAqB;IACrB,WAAW;ElC4wIf;AACF;;AkCnwIA;EAEI,gBAAgB;AlCqwIpB;;AkCvwIA;EAKM,gBAAgB;ExB5OlB,6BwB6OiC;ExB5OjC,4BwB4OiC;AlCuwIrC;;AkC7wIA;ExBrPI,yBwB+P8B;ExB9P9B,0BwB8P8B;AlCwwIlC;;AkClxIA;ExB9PI,gBwB4Q0B;EACxB,mB/BnC2B;AH2yIjC;;AmC1hJA;EACE,aAAa;EACb,eAAe;EACf,qBhC+hCsC;EgC9hCtC,mBhCiiCsC;EgC/hCtC,gBAAgB;EAChB,yBhCEgB;EOJd,sBP6OgC;AHkzIpC;;AmCzhJA;EAGI,oBhCqhCqC;AHqgHzC;;AmC7hJA;EAMM,qBAAqB;EACrB,qBhCihCmC;EgChhCnC,chCNY;EgCOZ,YhCshCuC;AHqgH7C;;AmCpiJA;EAoBI,0BAA0B;AnCohJ9B;;AmCxiJA;EAwBI,qBAAqB;AnCohJzB;;AmC5iJA;EA4BI,chC1Bc;AH8iJlB;;AoC3jJA;EACE,aAAa;E7BGb,eAAe;EACf,gBAAgB;EGAd,sBP6OgC;AHg1IpC;;AoC5jJA;EACE,kBAAkB;EAClB,cAAc;EACd,uBjCgxBwC;EiC/wBxC,iBjCqO+B;EiCpO/B,iBjCmxBsC;EiClxBtC,cjCwBe;EiCvBf,sBjCNa;EiCOb,yBjCJgB;AHmkJlB;;AoCvkJA;EAWI,UAAU;EACV,cjCkK8D;EiCjK9D,qBAAqB;EACrB,yBjCXc;EiCYd,qBjCXc;AH2kJlB;;AoC/kJA;EAmBI,UAAU;EACV,UjC4wBiC;EiC3wBjC,gDjCSa;AHujJjB;;AoC5jJA;EAGM,cAAc;E1BChB,+BP+MgC;EO9MhC,kCP8MgC;AH+2IpC;;AoClkJA;E1BVI,gCP6NgC;EO5NhC,mCP4NgC;AHo3IpC;;AoCvkJA;EAcI,UAAU;EACV,WjCvCW;EiCwCX,yBjCXa;EiCYb,qBjCZa;AHykJjB;;AoC9kJA;EAqBI,cjCvCc;EiCwCd,oBAAoB;EAEpB,YAAY;EACZ,sBjCjDW;EiCkDX,qBjC/Cc;AH2mJlB;;AqClnJE;EACE,uBlCyxBsC;EC9pBpC,kBAtCY;EiCnFd,gBlCsO6B;AH+4IjC;;AqChnJM;E3BwBF,8BPgN+B;EO/M/B,iCP+M+B;AH64InC;;AqChnJM;E3BKF,+BP8N+B;EO7N/B,kCP6N+B;AHk5InC;;AqCloJE;EACE,uBlCuxBqC;EC5pBnC,mBAtCY;EiCnFd,gBlCuO6B;AH85IjC;;AqChoJM;E3BwBF,8BPiN+B;EOhN/B,iCPgN+B;AH45InC;;AqChoJM;E3BKF,+BP+N+B;EO9N/B,kCP8N+B;AHi6InC;;AsChpJA;EACE,qBAAqB;EACrB,qBnCw5BsC;ECv1BpC,cAAW;EkC/Db,gBnC2R+B;EmC1R/B,cAAc;EACd,kBAAkB;EAClB,mBAAmB;EACnB,wBAAwB;E5BRtB,sBP6OgC;EiB5O9B,qIjB6b6I;AH+tInJ;;AoBvpJI;EkBNJ;IlBOM,gBAAgB;EpB2pJpB;AACF;;AKxpJE;EiCGI,qBAAqB;AtCypJ3B;;AsCvqJA;EAoBI,aAAa;AtCupJjB;;AsClpJA;EACE,kBAAkB;EAClB,SAAS;AtCqpJX;;AsC9oJA;EACE,oBnC63BsC;EmC53BtC,mBnC43BsC;EOh6BpC,oBPm6BqC;AHmxHzC;;AsCzoJE;ECjDA,WpCMa;EoCLb,yBpCkCe;AH4pJjB;;AKhrJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC8rJxC;;AuCjsJU;EAQJ,UAAU;EACV,+CpCuBW;AHsqJjB;;AsCxpJE;ECjDA,WpCMa;EoCLb,yBpCWgB;AHksJlB;;AK/rJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC6sJxC;;AuChtJU;EAQJ,UAAU;EACV,iDpCAY;AH4sJlB;;AsCvqJE;ECjDA,WpCMa;EoCLb,yBpCyCe;AHmrJjB;;AK9sJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC4tJxC;;AuC/tJU;EAQJ,UAAU;EACV,+CpC8BW;AH6rJjB;;AsCtrJE;ECjDA,WpCMa;EoCLb,yBpC2Ce;AHgsJjB;;AK7tJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC2uJxC;;AuC9uJU;EAQJ,UAAU;EACV,gDpCgCW;AH0sJjB;;AsCrsJE;ECjDA,cpCegB;EoCdhB,yBpCwCe;AHktJjB;;AK5uJE;EkCVI,cpCUY;EoCTZ,yBAAkC;AvC0vJxC;;AuC7vJU;EAQJ,UAAU;EACV,+CpC6BW;AH4tJjB;;AsCptJE;ECjDA,WpCMa;EoCLb,yBpCsCe;AHmuJjB;;AK3vJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvCywJxC;;AuC5wJU;EAQJ,UAAU;EACV,+CpC2BW;AH6uJjB;;AsCnuJE;ECjDA,cpCegB;EoCdhB,yBpCMgB;AHkxJlB;;AK1wJE;EkCVI,cpCUY;EoCTZ,yBAAkC;AvCwxJxC;;AuC3xJU;EAQJ,UAAU;EACV,iDpCLY;AH4xJlB;;AsClvJE;ECjDA,WpCMa;EoCLb,yBpCagB;AH0xJlB;;AKzxJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvCuyJxC;;AuC1yJU;EAQJ,UAAU;EACV,8CpCEY;AHoyJlB;;AwCnzJA;EACE,kBAAoD;EACpD,mBrCqzBsC;EqCnzBtC,yBrCKgB;EOJd,qBP8O+B;AHukJnC;;Ac9vJI;E0B5DJ;IAQI,kBrC+yBoC;EHwgItC;AACF;;AwCpzJA;EACE,gBAAgB;EAChB,eAAe;E9BTb,gB8BUsB;AxCuzJ1B;;AyCl0JA;EACE,kBAAkB;EAClB,wBtCq9ByC;EsCp9BzC,mBtCq9BsC;EsCp9BtC,6BAA6C;E/BH3C,sBP6OgC;AH4lJpC;;AyCj0JA;EAEE,cAAc;AzCm0JhB;;AyC/zJA;EACE,gBtCgR+B;AHkjJjC;;AyC1zJA;EACE,mBAAsD;AzC6zJxD;;AyC9zJA;EAKI,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,wBtCu7BuC;EsCt7BvC,cAAc;AzC6zJlB;;AyCnzJE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBywJlE;;A0Cn2JE;EACE,yBAAqC;A1Cs2JzC;;A0Cn2JE;EACE,cAA0B;A1Cs2J9B;;AyCj0JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBuxJlE;;A0Cj3JE;EACE,yBAAqC;A1Co3JzC;;A0Cj3JE;EACE,cAA0B;A1Co3J9B;;AyC/0JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBqyJlE;;A0C/3JE;EACE,yBAAqC;A1Ck4JzC;;A0C/3JE;EACE,cAA0B;A1Ck4J9B;;AyC71JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBmzJlE;;A0C74JE;EACE,yBAAqC;A1Cg5JzC;;A0C74JE;EACE,cAA0B;A1Cg5J9B;;AyC32JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBi0JlE;;A0C35JE;EACE,yBAAqC;A1C85JzC;;A0C35JE;EACE,cAA0B;A1C85J9B;;AyCz3JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlB+0JlE;;A0Cz6JE;EACE,yBAAqC;A1C46JzC;;A0Cz6JE;EACE,cAA0B;A1C46J9B;;AyCv4JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlB61JlE;;A0Cv7JE;EACE,yBAAqC;A1C07JzC;;A0Cv7JE;EACE,cAA0B;A1C07J9B;;AyCr5JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlB22JlE;;A0Cr8JE;EACE,yBAAqC;A1Cw8JzC;;A0Cr8JE;EACE,cAA0B;A1Cw8J9B;;A2Ch9JE;EACE;IAAO,2BAAuC;E3Co9JhD;E2Cn9JE;IAAK,wBAAwB;E3Cs9J/B;AACF;;A2Cz9JE;EACE;IAAO,2BAAuC;E3Co9JhD;E2Cn9JE;IAAK,wBAAwB;E3Cs9J/B;AACF;;A2Cn9JA;EACE,aAAa;EACb,YxC89BsC;EwC79BtC,gBAAgB;EvCoHZ,kBAtCY;EuC5EhB,yBxCJgB;EOJd,sBP6OgC;AHkvJpC;;A2Cl9JA;EACE,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;EAChB,WxChBa;EwCiBb,kBAAkB;EAClB,mBAAmB;EACnB,yBxCUe;EiB9BX,2BjB0+B4C;AHggIlD;;AoBr+JI;EuBOJ;IvBNM,gBAAgB;EpBy+JpB;AACF;;A2Cx9JA;ErBaE,qMAA6I;EqBX7I,0BxCw8BsC;AHmhIxC;;A2Cv9JE;EACE,0DxC08BkD;EwC18BlD,kDxC08BkD;AHghItD;;A2Cv9JM;EAJJ;IAKM,uBAAe;IAAf,eAAe;E3C29JrB;AACF;;A4CrgKA;EACE,aAAa;EACb,uBAAuB;A5CwgKzB;;A4CrgKA;EACE,OAAO;A5CwgKT;;A6C1gKA;EACE,aAAa;EACb,sBAAsB;EAGtB,eAAe;EACf,gBAAgB;A7C2gKlB;;A6ClgKA;EACE,WAAW;EACX,c1CPgB;E0CQhB,mBAAmB;A7CqgKrB;;AK3gKE;EwCUE,UAAU;EACV,c1Cbc;E0Ccd,qBAAqB;EACrB,yB1CrBc;AH0hKlB;;A6C/gKA;EAcI,c1CjBc;E0CkBd,yB1CzBc;AH8hKlB;;A6C5/JA;EACE,kBAAkB;EAClB,cAAc;EACd,wB1C88ByC;E0C58BzC,sB1CzCa;E0C0Cb,sC1ChCa;AH8hKf;;A6CpgKA;EnC7BI,+BPoOgC;EOnOhC,gCPmOgC;AHk0JpC;;A6CzgKA;EnCfI,mCPsNgC;EOrNhC,kCPqNgC;AHu0JpC;;A6C9gKA;EAkBI,c1ChDc;E0CiDd,oBAAoB;EACpB,sB1CxDW;AHwjKf;;A6CphKA;EAyBI,UAAU;EACV,W1C9DW;E0C+DX,yB1ClCa;E0CmCb,qB1CnCa;AHkiKjB;;A6C3hKA;EAgCI,mBAAmB;A7C+/JvB;;A6C/hKA;EAmCM,gB1CiK2B;E0ChK3B,qB1CgK2B;AHg2JjC;;A6Cl/JI;EACE,mBAAmB;A7Cq/JzB;;A6Ct/JI;EnCjCA,kCPsLgC;EOlMhC,0BmCmDwC;A7Cq/J5C;;A6C3/JI;EnC7CA,gCPkMgC;EOtLhC,4BmC4C0C;A7Cq/J9C;;A6ChgKI;EAeM,aAAa;A7Cq/JvB;;A6CpgKI;EAmBM,qB1C+HuB;E0C9HvB,oBAAoB;A7Cq/J9B;;A6CzgKI;EAuBQ,iB1C2HqB;E0C1HrB,sB1C0HqB;AH43JjC;;Ac/iKI;E+BiCA;IACE,mBAAmB;E7CkhKvB;E6CnhKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7CihK1C;E6CvhKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7CghK5C;E6C3hKE;IAeM,aAAa;E7C+gKrB;E6C9hKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7C8gK5B;E6CliKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EHo5J/B;AACF;;AcxkKI;E+BiCA;IACE,mBAAmB;E7C2iKvB;E6C5iKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7C0iK1C;E6ChjKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7CyiK5C;E6CpjKE;IAeM,aAAa;E7CwiKrB;E6CvjKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7CuiK5B;E6C3jKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EH66J/B;AACF;;AcjmKI;E+BiCA;IACE,mBAAmB;E7CokKvB;E6CrkKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7CmkK1C;E6CzkKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7CkkK5C;E6C7kKE;IAeM,aAAa;E7CikKrB;E6ChlKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7CgkK5B;E6CplKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EHs8J/B;AACF;;Ac1nKI;E+BiCA;IACE,mBAAmB;E7C6lKvB;E6C9lKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7C4lK1C;E6ClmKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7C2lK5C;E6CtmKE;IAeM,aAAa;E7C0lKrB;E6CzmKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7CylK5B;E6C7mKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EH+9J/B;AACF;;A6C5kKA;EAEI,qBAAqB;EACrB,oBAAoB;EnCjIpB,gBmCkIwB;A7C8kK5B;;A6CllKA;EAOM,mBAAmB;A7C+kKzB;;A6CtlKA;EAaM,sBAAsB;A7C6kK5B;;A8C1tKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmoKlE;;AKltKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6tKjD;;A8CpuKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8oKlE;;A8C1uKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmpKlE;;AKluKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6uKjD;;A8CpvKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8pKlE;;A8C1vKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmqKlE;;AKlvKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6vKjD;;A8CpwKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8qKlE;;A8C1wKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmrKlE;;AKlwKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6wKjD;;A8CpxKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8rKlE;;A8C1xKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmsKlE;;AKlxKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6xKjD;;A8CpyKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8sKlE;;A8C1yKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmtKlE;;AKlyKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6yKjD;;A8CpzKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8tKlE;;A8C1zKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmuKlE;;AKlzKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6zKjD;;A8Cp0KE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8uKlE;;A8C10KE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmvKlE;;AKl0KE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C60KjD;;A8Cp1KE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8vKlE;;A+C71KA;EACE,YAAY;E3C8HR,iBAtCY;E2CtFhB,gB5CiS+B;E4ChS/B,cAAc;EACd,W5CYa;E4CXb,yB5CCa;E4CAb,WAAW;A/Cg2Kb;;AK31KE;E0CDE,W5CMW;E4CLX,qBAAqB;A/Cg2KzB;;AK51KE;E0CCI,YAAY;A/C+1KlB;;A+Cp1KA;EACE,UAAU;EACV,6BAA6B;EAC7B,SAAS;EACT,wBAAgB;EAAhB,qBAAgB;EAAhB,gBAAgB;A/Cu1KlB;;A+Cj1KA;EACE,oBAAoB;A/Co1KtB;;AgD33KA;EACE,gB7Cy4BuC;E6Cx4BvC,gBAAgB;E5C6HZ,mBAtCY;E4CpFhB,2C7CEa;E6CDb,4BAA4B;EAC5B,oC7C04BmD;E6Cz4BnD,gD7CSa;E6CRb,mCAA2B;EAA3B,2BAA2B;EAC3B,UAAU;EtCLR,sB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Na;EiDOb,4BAA4B;EAC5B,oCjDEa;EOZX,qBP8O+B;AH+gLnC;;AoDlwLA;EAoBI,kBAAkB;EAClB,cAAc;EACd,WjD22BoC;EiD12BpC,cjD22BqC;EiD12BrC,gBjD2N+B;AHuhLnC;;AoD1wLA;EA4BM,kBAAkB;EAClB,cAAc;EACd,WAAW;EACX,yBAAyB;EACzB,mBAAmB;ApDkvLzB;;AoD7uLA;EACE,qBjD41BuC;AHo5JzC;;AoDjvLA;EAII,2BlC2F4D;AlBspLhE;;AoDrvLA;EAOM,SAAS;EACT,6BAAgE;EAChE,qCjDu1BiE;AH25JvE;;AoD3vLA;EAaM,WjD6L2B;EiD5L3B,6BAAgE;EAChE,sBjD7CS;AH+xLf;;AoD7uLA;EACE,mBjDw0BuC;AHw6JzC;;AoDjvLA;EAII,yBlCuE4D;EkCtE5D,ajDo0BqC;EiDn0BrC,YjDk0BoC;EiDj0BpC,gBAAgC;ApDivLpC;;AoDxvLA;EAUM,OAAO;EACP,oCAA2F;EAC3F,uCjDg0BiE;AHk7JvE;;AoD9vLA;EAgBM,SjDsK2B;EiDrK3B,oCAA2F;EAC3F,wBjDpES;AHszLf;;AoD7uLA;EACE,kBjDizBuC;AH+7JzC;;AoDjvLA;EAII,wBlCgD4D;AlBisLhE;;AoDrvLA;EAOM,MAAM;EACN,oCAA2F;EAC3F,wCjD4yBiE;AHs8JvE;;AoD3vLA;EAaM,QjDkJ2B;EiDjJ3B,oCAA2F;EAC3F,yBjDxFS;AH00Lf;;AoDjwLA;EAqBI,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,cAAc;EACd,WjDwxBoC;EiDvxBpC,oBAAsC;EACtC,WAAW;EACX,gCjD4wBuD;AHo+J3D;;AoD5uLA;EACE,oBjDixBuC;AH89JzC;;AoDhvLA;EAII,0BlCgB4D;EkCf5D,ajD6wBqC;EiD5wBrC,YjD2wBoC;EiD1wBpC,gBAAgC;ApDgvLpC;;AoDvvLA;EAUM,QAAQ;EACR,oCjDuwBmC;EiDtwBnC,sCjDywBiE;AHw+JvE;;AoD7vLA;EAgBM,UjD+G2B;EiD9G3B,oCjDiwBmC;EiDhwBnC,uBjD3HS;AH42Lf;;AoD3tLA;EACE,uBjDkuBwC;EiDjuBxC,gBAAgB;Eh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ACE,WpD4hC4B;EoD3hC5B,YpD2hC4B;AHkiK9B;;AwDhnMA;EAAqB,mCAAmC;AxDonMxD;;AwDnnMA;EAAqB,8BAA8B;AxDunMnD;;AwDtnMA;EAAqB,iCAAiC;AxD0nMtD;;AwDznMA;EAAqB,iCAAiC;AxD6nMtD;;AwD5nMA;EAAqB,sCAAsC;AxDgoM3D;;AwD/nMA;EAAqB,mCAAmC;AxDmoMxD;;AyDroME;EACE,oCAAmC;AzDwoMvC;;AK9nME;;;EoDLI,oCAAgD;AzDyoMtD;;AyD/oME;EACE,oCAAmC;AzDkpMvC;;AKxoME;;;EoDLI,oCAAgD;AzDmpMtD;;AyDzpME;EACE,oCAAmC;AzD4pMvC;;AKlpME;;;EoDLI,oCAAgD;AzD6pMtD;;AyDnqME;EACE,oCAAmC;AzDsqMvC;;AK5pME;;;EoDLI,oCAAgD;AzDuqMtD;;AyD7qME;EACE,oCAAmC;AzDgrMvC;;AKtqME;;;EoDLI,oCAAgD;AzDirMtD;;AyDvrME;EACE,oCAAmC;AzD0rMvC;;AKhrME;;;EoDLI,oCAAgD;AzD2rMtD;;AyDjsME;EACE,oCAAmC;AzDosMvC;;AK1rME;;;EoDLI,oCAAgD;AzDqsMtD;;AyD3sME;EACE,oCAAmC;AzD8sMvC;;AKpsME;;;EoDLI,oCAAgD;AzD+sMtD;;A0D9sMA;EACE,iCAAmC;A1DitMrC;;A0D9sMA;EACE,wCAAwC;A1DitM1C;;A2D5tMA;EAAkB,oCAAoD;A3DguMtE;;A2D/tMA;EAAkB,wCAAwD;A3DmuM1E;;A2DluMA;EAAkB,0CAA0D;A3DsuM5E;;A2DruMA;EAAkB,2CAA2D;A3DyuM7E;;A2DxuMA;EAAkB,yCAAyD;A3D4uM3E;;A2D1uMA;EAAmB,oBAAoB;A3D8uMvC;;A2D7uMA;EAAmB,wBAAwB;A3DivM3C;;A2DhvMA;EAAmB,0BAA0B;A3DovM7C;;A2DnvMA;EAAmB,2BAA2B;A3DuvM9C;;A2DtvMA;EAAmB,yBAAyB;A3D0vM5C;;A2DvvME;EACE,gCAA+B;A3D0vMnC;;A2D3vME;EACE,gCAA+B;A3D8vMnC;;A2D/vME;EACE,gCAA+B;A3DkwMnC;;A2DnwME;EACE,gCAA+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zpNI;EAAgC,8BAA8B;A9D6pNlE;;AcjpNI;EgDlDA;IAAgC,8BAA8B;E9DwsNhE;E8DvsNE;IAAgC,iCAAiC;E9D0sNnE;E8DzsNE;IAAgC,sCAAsC;E9D4sNxE;E8D3sNE;IAAgC,yCAAyC;E9D8sN3E;E8D5sNE;IAA8B,0BAA0B;E9D+sN1D;E8D9sNE;IAA8B,4BAA4B;E9DitN5D;E8DhtNE;IAA8B,kCAAkC;E9DmtNlE;E8DltNE;IAA8B,yBAAyB;E9DqtNzD;E8DptNE;IAA8B,uBAAuB;E9DutNvD;E8DttNE;IAA8B,uBAAuB;E9DytNvD;E8DxtNE;IAA8B,yBAAyB;E9D2tNzD;E8D1tNE;IAA8B,yBAAyB;E9D6tNzD;E8D3tNE;IAAoC,sCAAsC;E9D8tN5E;E8D7tNE;IAAoC,oCAAoC;E9DguN1E;E8D/tNE;IAAoC,kCAAkC;E9DkuNxE;E8DjuNE;IAAoC,yCAAyC;E9DouN/E;E8DnuNE;IAAoC,wCAAwC;E9DsuN9E;E8DpuNE;IAAiC,kCAAkC;E9DuuNrE;E8DtuNE;IAAiC,gCAAgC;E9DyuNnE;E8DxuNE;IAAiC,8BAA8B;E9D2uNjE;E8D1uNE;IAAiC,gCAAgC;E9D6uNnE;E8D5uNE;IAAiC,+BAA+B;E9D+uNlE;E8D7uNE;IAAkC,oCAAoC;E9DgvNxE;E8D/uNE;IAAkC,kCAAkC;E9DkvNtE;E8DjvNE;IAAkC,gCAAgC;E9DovNpE;E8DnvNE;IAAkC,uCAAuC;E9DsvN3E;E8DrvNE;IAAkC,sCAAsC;E9DwvN1E;E8DvvNE;IAAkC,iCAAiC;E9D0vNrE;E8DxvNE;IAAgC,2BAA2B;E9D2vN7D;E8D1vNE;IAAgC,iCAAiC;E9D6vNnE;E8D5vNE;IAAgC,+BAA+B;E9D+vNjE;E8D9vNE;IAAgC,6BAA6B;E9DiwN/D;E8DhwNE;IAAgC,+BAA+B;E9DmwNjE;E8DlwNE;IAAgC,8BAA8B;E9DqwNhE;AACF;;Ac1vNI;EgDlDA;IAAgC,8BAA8B;E9DizNhE;E8DhzNE;IAAgC,iCAAiC;E9DmzNnE;E8DlzNE;IAAgC,sCAAsC;E9DqzNxE;E8DpzNE;IAAgC,yCAAyC;E9DuzN3E;E8DrzNE;IAA8B,0BAA0B;E9DwzN1D;E8DvzNE;IAA8B,4BAA4B;E9D0zN5D;E8DzzNE;IAA8B,kCAAkC;E9D4zNlE;E8D3zNE;IAA8B,yBAAyB;E9D8zNzD;E8D7zNE;IAA8B,uBAAuB;E9Dg0NvD;E8D/zNE;IAA8B,uBAAuB;E9Dk0NvD;E8Dj0NE;IAA8B,yBAAyB;E9Do0NzD;E8Dn0NE;IAA8B,yBAAyB;E9Ds0NzD;E8Dp0NE;IAAoC,sCAAsC;E9Du0N5E;E8Dt0NE;IAAoC,oCAAoC;E9Dy0N1E;E8Dx0NE;IAAoC,kCAAkC;E9D20NxE;E8D10NE;IAAoC,yCAAyC;E9D60N/E;E8D50NE;IAAoC,wCAAwC;E9D+0N9E;E8D70NE;IAAiC,kCAAkC;E9Dg1NrE;E8D/0NE;IAAiC,gCAAgC;E9Dk1NnE;E8Dj1NE;IAAiC,8BAA8B;E9Do1NjE;E8Dn1NE;IAAiC,gCAAgC;E9Ds1NnE;E8Dr1NE;IAAiC,+BAA+B;E9Dw1NlE;E8Dt1NE;IAAkC,oCAAoC;E9Dy1NxE;E8Dx1NE;IAAkC,kCAAkC;E9D21NtE;E8D11NE;IAAkC,gCAAgC;E9D61NpE;E8D51NE;IAAkC,uCAAuC;E9D+1N3E;E8D91NE;IAAkC,sCAAsC;E9Di2N1E;E8Dh2NE;IAAkC,iCAAiC;E9Dm2NrE;E8Dj2NE;IAAgC,2BAA2B;E9Do2N7D;E8Dn2NE;IAAgC,iCAAiC;E9Ds2NnE;E8Dr2NE;IAAgC,+BAA+B;E9Dw2NjE;E8Dv2NE;IAAgC,6BAA6B;E9D02N/D;E8Dz2NE;IAAgC,+BAA+B;E9D42NjE;E8D32NE;IAAgC,8BAA8B;E9D82NhE;AACF;;Acn2NI;EgDlDA;IAAgC,8BAA8B;E9D05NhE;E8Dz5NE;IAAgC,iCAAiC;E9D45NnE;E8D35NE;IAAgC,sCAAsC;E9D85NxE;E8D75NE;IAAgC,yCAAyC;E9Dg6N3E;E8D95NE;IAA8B,0BAA0B;E9Di6N1D;E8Dh6NE;IAA8B,4BAA4B;E9Dm6N5D;E8Dl6NE;IAA8B,kCAAkC;E9Dq6NlE;E8Dp6NE;IAA8B,yBAAyB;E9Du6NzD;E8Dt6NE;IAA8B,uBAAuB;E9Dy6NvD;E8Dx6NE;IAA8B,uBAAuB;E9D26NvD;E8D16NE;IAA8B,yBAAyB;E9D66NzD;E8D56NE;IAA8B,yBAAyB;E9D+6NzD;E8D76NE;IAAoC,sCAAsC;E9Dg7N5E;E8D/6NE;IAAoC,oCAAoC;E9Dk7N1E;E8Dj7NE;IAAoC,kCAAkC;E9Do7NxE;E8Dn7NE;IAAoC,yCAAyC;E9Ds7N/E;E8Dr7NE;IAAoC,wCAAwC;E9Dw7N9E;E8Dt7NE;IAAiC,kCAAkC;E9Dy7NrE;E8Dx7NE;IAAiC,gCAAgC;E9D27NnE;E8D17NE;IAAiC,8BAA8B;E9D67NjE;E8D57NE;IAAiC,gCAAgC;E9D+7NnE;E8D97NE;IAAiC,+BAA+B;E9Di8NlE;E8D/7NE;IAAkC,oCAAoC;E9Dk8NxE;E8Dj8NE;IAAkC,kCAAkC;E9Do8NtE;E8Dn8NE;IAAkC,gCAAgC;E9Ds8NpE;E8Dr8NE;IAAkC,uCAAuC;E9Dw8N3E;E8Dv8NE;IAAkC,sCAAsC;E9D08N1E;E8Dz8NE;IAAkC,iCAAiC;E9D48NrE;E8D18NE;IAAgC,2BAA2B;E9D68N7D;E8D58NE;IAAgC,iCAAiC;E9D+8NnE;E8D98NE;IAAgC,+BAA+B;E9Di9NjE;E8Dh9NE;IAAgC,6BAA6B;E9Dm9N/D;E8Dl9NE;IAAgC,+BAA+B;E9Dq9NjE;E8Dp9NE;IAAgC,8BAA8B;E9Du9NhE;AACF;;Ac58NI;EgDlDA;IAAgC,8BAA8B;E9DmgOhE;E8DlgOE;IAAgC,iCAAiC;E9DqgOnE;E8DpgOE;IAAgC,sCAAsC;E9DugOxE;E8DtgOE;IAAgC,yCAAyC;E9DygO3E;E8DvgOE;IAA8B,0BAA0B;E9D0gO1D;E8DzgOE;IAA8B,4BAA4B;E9D4gO5D;E8D3gOE;IAA8B,kCAAkC;E9D8gOlE;E8D7gOE;IAA8B,yBAAyB;E9DghOzD;E8D/gOE;IAA8B,uBAAuB;E9DkhOvD;E8DjhOE;IAA8B,uBAAuB;E9DohOvD;E8DnhOE;IAA8B,yBAAyB;E9DshOzD;E8DrhOE;IAA8B,yBAAyB;E9DwhOzD;E8DthOE;IAAoC,sCAAsC;E9DyhO5E;E8DxhOE;IAAoC,oCAAoC;E9D2hO1E;E8D1hOE;IAAoC,kCAAkC;E9D6hOxE;E8D5hOE;IAAoC,yCAAyC;E9D+hO/E;E8D9hOE;IAAoC,wCAAwC;E9DiiO9E;E8D/hOE;IAAiC,kCAAkC;E9DkiOrE;E8DjiOE;IAAiC,gCAAgC;E9DoiOnE;E8DniOE;IAAiC,8BAA8B;E9DsiOjE;E8DriOE;IAAiC,gCAAgC;E9DwiOnE;E8DviOE;IAAiC,+BAA+B;E9D0iOlE;E8DxiOE;IAAkC,oCAAoC;E9D2iOxE;E8D1iOE;IAAkC,kCAAkC;E9D6iOtE;E8D5iOE;IAAkC,gCAAgC;E9D+iOpE;E8D9iOE;IAAkC,uCAAuC;E9DijO3E;E8DhjOE;IAAkC,sCAAsC;E9DmjO1E;E8DljOE;IAAkC,iCAAiC;E9DqjOrE;E8DnjOE;IAAgC,2BAA2B;E9DsjO7D;E8DrjOE;IAAgC,iCAAiC;E9DwjOnE;E8DvjOE;IAAgC,+BAA+B;E9D0jOjE;E8DzjOE;IAAgC,6BAA6B;E9D4jO/D;E8D3jOE;IAAgC,+BAA+B;E9D8jOjE;E8D7jOE;IAAgC,8BAA8B;E9DgkOhE;AACF;;A+D3mOI;EAAwB,sBAAsB;A/D+mOlD;;A+D9mOI;EAAwB,uBAAuB;A/DknOnD;;A+DjnOI;EAAwB,sBAAsB;A/DqnOlD;;AcjkOI;EiDtDA;IAAwB,sBAAsB;E/D4nOhD;E+D3nOE;IAAwB,uBAAuB;E/D8nOjD;E+D7nOE;IAAwB,sBAAsB;E/DgoOhD;AACF;;Ac7kOI;EiDtDA;IAAwB,sBAAsB;E/DwoOhD;E+DvoOE;IAAwB,uBAAuB;E/D0oOjD;E+DzoOE;IAAwB,sBAAsB;E/D4oOhD;AACF;;AczlOI;EiDtDA;IAAwB,sBAAsB;E/DopOhD;E+DnpOE;IAAwB,uBAAuB;E/DspOjD;E+DrpOE;IAAwB,sBAAsB;E/DwpOhD;AACF;;AcrmOI;EiDtDA;IAAwB,sBAAsB;E/DgqOhD;E+D/pOE;IAAwB,uBAAuB;E/DkqOjD;E+DjqOE;IAAwB,sBAAsB;E/DoqOhD;AACF;;AgE1qOE;EAAsB,yBAA2B;AhE8qOnD;;AgE9qOE;EAAsB,2BAA2B;AhEkrOnD;;AiEjrOE;EAAyB,2BAA8B;AjEqrOzD;;AiErrOE;EAAyB,6BAA8B;AjEyrOzD;;AiEzrOE;EAAyB,6BAA8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iCAAwC;AvEu/OlD;;AuEr/OQ;;EAEE,kCAA0C;AvEw/OpD;;AuEt/OQ;;EAEE,gCAAsC;AvEy/OhD;;AuExgPQ;EAAgC,0BAA4B;AvE4gPpE;;AuE3gPQ;;EAEE,8BAAoC;AvE8gP9C;;AuE5gPQ;;EAEE,gCAAwC;AvE+gPlD;;AuE7gPQ;;EAEE,iCAA0C;AvEghPpD;;AuE9gPQ;;EAEE,+BAAsC;AvEihPhD;;AuEhiPQ;EAAgC,wBAA4B;AvEoiPpE;;AuEniPQ;;EAEE,4BAAoC;AvEsiP9C;;AuEpiPQ;;EAEE,8BAAwC;AvEuiPlD;;AuEriPQ;;EAEE,+BAA0C;AvEwiPpD;;AuEtiPQ;;EAEE,6BAAsC;AvEyiPhD;;AuExjPQ;EAAgC,0BAA4B;AvE4jPpE;;AuE3jPQ;;EAEE,8BAAoC;AvE8jP9C;;AuE5jPQ;;EAEE,gCAAwC;AvE+jPlD;;AuE7jPQ;;EAEE,iCAA0C;AvEgkPpD;;AuE9jPQ;;EAEE,+BAAsC;AvEikPhD;;AuEhlPQ;EAAgC,wBAA4B;AvEolPpE;;AuEnlPQ;;EAEE,4BAAoC;AvEslP9C;;AuEplPQ;;EAEE,8BAAwC;AvEulPlD;;AuErlPQ;;EAEE,+BAA0C;AvEwlPpD;;AuEtlPQ;;EAEE,6BAAsC;AvEylPhD;;AuEjlPQ;EAAwB,2BAA2B;AvEqlP3D;;AuEplPQ;;EAEE,+BAA+B;AvEulPzC;;AuErlPQ;;EAEE,iCAAiC;AvEwlP3C;;AuEtlPQ;;EAEE,kCAAkC;AvEylP5C;;AuEvlPQ;;EAEE,gCAAgC;AvE0lP1C;;AuEzmPQ;EAAwB,0BAA2B;AvE6mP3D;;AuE5mPQ;;EAEE,8BAA+B;AvE+mPzC;;AuE7mPQ;;EAEE,gCAAiC;AvEgnP3C;;AuE9mPQ;;EAEE,iCAAkC;AvEinP5C;;AuE/mPQ;;EAEE,+BAAgC;AvEknP1C;;AuEjoPQ;EAAwB,wBAA2B;AvEqoP3D;;AuEpoPQ;;EAEE,4BAA+B;AvEuoPzC;;AuEroPQ;;EAEE,8BAAiC;AvEwoP3C;;AuEtoPQ;;EAEE,+BAAkC;AvEyoP5C;;AuEvoPQ;;EAEE,6BAAgC;AvE0oP1C;;AuEzpPQ;EAAwB,0BAA2B;AvE6pP3D;;AuE5pPQ;;EAEE,8BAA+B;AvE+pPzC;;AuE7pPQ;;EAEE,gCAAiC;AvEgqP3C;;AuE9pPQ;;EAEE,iCAAkC;AvEiqP5C;;AuE/pPQ;;EAEE,+BAAgC;AvEkqP1C;;AuEjrPQ;EAAwB,wBAA2B;AvEqrP3D;;AuEprPQ;;EAEE,4BAA+B;AvEurPzC;;AuErrPQ;;EAEE,8BAAiC;AvEwrP3C;;AuEtrPQ;;EAEE,+BAAkC;AvEyrP5C;;AuEvrPQ;;EAEE,6BAAgC;AvE0rP1C;;AuEprPI;EAAmB,uBAAuB;AvEwrP9C;;AuEvrPI;;EAEE,2BAA2B;AvE0rPjC;;AuExrPI;;EAEE,6BAA6B;AvE2rPnC;;AuEzrPI;;EAEE,8BAA8B;AvE4rPpC;;AuE1rPI;;EAEE,4BAA4B;AvE6rPlC;;ActsPI;EyDlDI;IAAgC,oBAA4B;EvE6vPlE;EuE5vPM;;IAEE,wBAAoC;EvE8vP5C;EuE5vPM;;IAEE,0BAAwC;EvE8vPhD;EuE5vPM;;IAEE,2BAA0C;EvE8vPlD;EuE5vPM;;IAEE,yBAAsC;EvE8vP9C;EuE7wPM;IAAgC,0BAA4B;EvEgxPlE;EuE/wPM;;IAEE,8BAAoC;EvEixP5C;EuE/wPM;;IAEE,gCAAwC;EvEixPhD;EuE/wPM;;IAEE,iCAA0C;EvEixPlD;EuE/wPM;;IAEE,+BAAsC;EvEixP9C;EuEhyPM;IAAgC,yBAA4B;EvEmyPlE;EuElyPM;;IAEE,6BAAoC;EvEoyP5C;EuElyPM;;IAEE,+BAAwC;EvEoyPhD;EuElyPM;;IAEE,gCAA0C;EvEoyPlD;EuElyPM;;IAEE,8BAAsC;EvEoyP9C;EuEnzPM;IAAgC,uBAA4B;EvEszPlE;EuErzPM;;IAEE,2BAAoC;EvEuzP5C;EuErzPM;;IAEE,6BAAwC;EvEuzPhD;EuErzPM;;IAEE,8BAA0C;EvEuzPlD;EuErzPM;;IAEE,4BAAsC;EvEuzP9C;EuEt0PM;IAAgC,yBAA4B;EvEy0PlE;EuEx0PM;;IAEE,6BAAoC;EvE00P5C;EuEx0PM;;IAEE,+BAAwC;EvE00PhD;EuEx0PM;;IAEE,gCAA0C;EvE00PlD;EuEx0PM;;IAEE,8BAAsC;EvE00P9C;EuEz1PM;IAAgC,uBAA4B;EvE41PlE;EuE31PM;;IAEE,2BAAoC;EvE61P5C;EuE31PM;;IAEE,6BAAwC;EvE61PhD;EuE31PM;;IAEE,8BAA0C;EvE61PlD;EuE31PM;;IAEE,4BAAsC;EvE61P9C;EuE52PM;IAAgC,qBAA4B;EvE+2PlE;EuE92PM;;IAEE,yBAAoC;EvEg3P5C;EuE92PM;;IAEE,2BAAwC;EvEg3PhD;EuE92PM;;IAEE,4BAA0C;EvEg3PlD;EuE92PM;;IAEE,0BAAsC;EvEg3P9C;EuE/3PM;IAAgC,2BAA4B;EvEk4PlE;EuEj4PM;;IAEE,+BAAoC;EvEm4P5C;EuEj4PM;;IAEE,iCAAwC;EvEm4PhD;EuEj4PM;;IAEE,kCAA0C;EvEm4PlD;EuEj4PM;;IAEE,gCAAsC;EvEm4P9C;EuEl5PM;IAAgC,0BAA4B;EvEq5PlE;EuEp5PM;;IAEE,8BAAoC;EvEs5P5C;EuEp5PM;;IAEE,gCAAwC;EvEs5PhD;EuEp5PM;;IAEE,iCAA0C;EvEs5PlD;EuEp5PM;;IAEE,+BAAsC;EvEs5P9C;EuEr6PM;IAAgC,wBAA4B;EvEw6PlE;EuEv6PM;;IAEE,4BAAoC;EvEy6P5C;EuEv6PM;;IAEE,8BAAwC;EvEy6PhD;EuEv6PM;;IAEE,+BAA0C;EvEy6PlD;EuEv6PM;;IAEE,6BAAsC;EvEy6P9C;EuEx7PM;IAAgC,0BAA4B;EvE27PlE;EuE17PM;;IAEE,8BAAoC;EvE47P5C;EuE17PM;;IAEE,gCAAwC;EvE47PhD;EuE17PM;;IAEE,iCAA0C;EvE47PlD;EuE17PM;;IAEE,+BAAsC;EvE47P9C;EuE38PM;IAAgC,wBAA4B;EvE88PlE;EuE78PM;;IAEE,4BAAoC;EvE+8P5C;EuE78PM;;IAEE,8BAAwC;EvE+8PhD;EuE78PM;;IAEE,+BAA0C;EvE+8PlD;EuE78PM;;IAEE,6BAAsC;EvE+8P9C;EuEv8PM;IAAwB,2BAA2B;EvE08PzD;EuEz8PM;;IAEE,+BAA+B;EvE28PvC;EuEz8PM;;IAEE,iCAAiC;EvE28PzC;EuEz8PM;;IAEE,kCAAkC;EvE28P1C;EuEz8PM;;IAEE,gCAAgC;EvE28PxC;EuE19PM;IAAwB,0BAA2B;EvE69PzD;EuE59PM;;IAEE,8BAA+B;EvE89PvC;EuE59PM;;IAEE,gCAAiC;EvE89PzC;EuE59PM;;IAEE,iCAAkC;EvE89P1C;EuE59PM;;IAEE,+BAAgC;EvE89PxC;EuE7+PM;IAAwB,wBAA2B;EvEg/PzD;EuE/+PM;;IAEE,4BAA+B;EvEi/PvC;EuE/+PM;;IAEE,8BAAiC;EvEi/PzC;EuE/+PM;;IAEE,+BAAkC;EvEi/P1C;EuE/+PM;;IAEE,6BAAgC;EvEi/PxC;EuEhgQM;IAAwB,0BAA2B;EvEmgQzD;EuElgQM;;IAEE,8BAA+B;EvEogQvC;EuElgQM;;IAEE,gCAAiC;EvEogQzC;EuElgQM;;IAEE,iCAAkC;EvEogQ1C;EuElgQM;;IAEE,+BAAgC;EvEogQxC;EuEnhQM;IAAwB,wBAA2B;EvEshQzD;EuErhQM;;IAEE,4BAA+B;EvEuhQvC;EuErhQM;;IAEE,8BAAiC;EvEuhQzC;EuErhQM;;IAEE,+BAAkC;EvEuhQ1C;EuErhQM;;IAEE,6BAAgC;EvEuhQxC;EuEjhQE;IAAmB,uBAAuB;EvEohQ5C;EuEnhQE;;IAEE,2BAA2B;EvEqhQ/B;EuEnhQE;;IAEE,6BAA6B;EvEqhQjC;EuEnhQE;;IAEE,8BAA8B;EvEqhQlC;EuEnhQE;;IAEE,4BAA4B;EvEqhQhC;AACF;;Ac/hQI;EyDlDI;IAAgC,oBAA4B;EvEslQlE;EuErlQM;;IAEE,wBAAoC;EvEulQ5C;EuErlQM;;IAEE,0BAAwC;EvEulQhD;EuErlQM;;IAEE,2BAA0C;EvEulQlD;EuErlQM;;IAEE,yBAAsC;EvEulQ9C;EuEtmQM;IAAgC,0BAA4B;EvEymQlE;EuExmQM;;IAEE,8BAAoC;EvE0mQ5C;EuExmQM;;IAEE,gCAAwC;EvE0mQhD;EuExmQM;;IAEE,iCAA0C;EvE0mQlD;EuExmQM;;IAEE,+BAAsC;EvE0mQ9C;EuEznQM;IAAgC,yBAA4B;EvE4nQlE;EuE3nQM;;IAEE,6BAAoC;EvE6nQ5C;EuE3nQM;;IAEE,+BAAwC;EvE6nQhD;EuE3nQM;;IAEE,gCAA0C;EvE6nQlD;EuE3nQM;;IAEE,8BAAsC;EvE6nQ9C;EuE5oQM;IAAgC,uBAA4B;EvE+oQlE;EuE9oQM;;IAEE,2BAAoC;EvEgpQ5C;EuE9oQM;;IAEE,6BAAwC;EvEgpQhD;EuE9oQM;;IAEE,8BAA0C;EvEgpQlD;EuE9oQM;;IAEE,4BAAsC;EvEgpQ9C;EuE/pQM;IAAgC,yBAA4B;EvEkqQlE;EuEjqQM;;IAEE,6BAAoC;EvEmqQ5C;EuEjqQM;;IAEE,+BAAwC;EvEmqQhD;EuEjqQM;;IAEE,gCAA0C;EvEmqQlD;EuEjqQM;;IAEE,8BAAsC;EvEmqQ9C;EuElrQM;IAAgC,uBAA4B;EvEqrQlE;EuEprQM;;IAEE,2BAAoC;EvEsrQ5C;EuEprQM;;IAEE,6BAAwC;EvEsrQhD;EuEprQM;;IAEE,8BAA0C;EvEsrQlD;EuEprQM;;IAEE,4BAAsC;EvEsrQ9C;EuErsQM;IAAgC,qBAA4B;EvEwsQlE;EuEvsQM;;IAEE,yBAAoC;EvEysQ5C;EuEvsQM;;IAEE,2BAAwC;EvEysQhD;EuEvsQM;;IAEE,4BAA0C;EvEysQlD;EuEvsQM;;IAEE,0BAAsC;EvEysQ9C;EuExtQM;IAAgC,2BAA4B;EvE2tQlE;EuE1tQM;;IAEE,+BAAoC;EvE4tQ5C;EuE1tQM;;IAEE,iCAAwC;EvE4tQhD;EuE1tQM;;IAEE,kCAA0C;EvE4tQlD;EuE1tQM;;IAEE,gCAAsC;EvE4tQ9C;EuE3uQM;IAAgC,0BAA4B;EvE8uQlE;EuE7uQM;;IAEE,8BAAoC;EvE+uQ5C;EuE7uQM;;IAEE,gCAAwC;EvE+uQhD;EuE7uQM;;IAEE,iCAA0C;EvE+uQlD;EuE7uQM;;IAEE,+BAAsC;EvE+uQ9C;EuE9vQM;IAAgC,wBAA4B;EvEiwQlE;EuEhwQM;;IAEE,4BAAoC;EvEkwQ5C;EuEhwQM;;IAEE,8BAAwC;EvEkwQhD;EuEhwQM;;IAEE,+BAA0C;EvEkwQlD;EuEhwQM;;IAEE,6BAAsC;EvEkwQ9C;EuEjxQM;IAAgC,0BAA4B;EvEoxQlE;EuEnxQM;;IAEE,8BAAoC;EvEqxQ5C;EuEnxQM;;IAEE,gCAAwC;EvEqxQhD;EuEnxQM;;IAEE,iCAA0C;EvEqxQlD;EuEnxQM;;IAEE,+BAAsC;EvEqxQ9C;EuEpyQM;IAAgC,wBAA4B;EvEuyQlE;EuEtyQM;;IAEE,4BAAoC;EvEwyQ5C;EuEtyQM;;IAEE,8BAAwC;EvEwyQhD;EuEtyQM;;IAEE,+BAA0C;EvEwyQlD;EuEtyQM;;IAEE,6BAAsC;EvEwyQ9C;EuEhyQM;IAAwB,2BAA2B;EvEmyQzD;EuElyQM;;IAEE,+BAA+B;EvEoyQvC;EuElyQM;;IAEE,iCAAiC;EvEoyQzC;EuElyQM;;IAEE,kCAAkC;EvEoyQ1C;EuElyQM;;IAEE,gCAAgC;EvEoyQxC;EuEnzQM;IAAwB,0BAA2B;EvEszQzD;EuErzQM;;IAEE,8BAA+B;EvEuzQvC;EuErzQM;;IAEE,gCAAiC;EvEuzQzC;EuErzQM;;IAEE,iCAAkC;EvEuzQ1C;EuErzQM;;IAEE,+BAAgC;EvEuzQxC;EuEt0QM;IAAwB,wBAA2B;EvEy0QzD;EuEx0QM;;IAEE,4BAA+B;EvE00QvC;EuEx0QM;;IAEE,8BAAiC;EvE00QzC;EuEx0QM;;IAEE,+BAAkC;EvE00Q1C;EuEx0QM;;IAEE,6BAAgC;EvE00QxC;EuEz1QM;IAAwB,0BAA2B;EvE41QzD;EuE31QM;;IAEE,8BAA+B;EvE61QvC;EuE31QM;;IAEE,gCAAiC;EvE61QzC;EuE31QM;;IAEE,iCAAkC;EvE61Q1C;EuE31QM;;IAEE,+BAAgC;EvE61QxC;EuE52QM;IAAwB,wBAA2B;EvE+2QzD;EuE92QM;;IAEE,4BAA+B;EvEg3QvC;EuE92QM;;IAEE,8BAAiC;EvEg3QzC;EuE92QM;;IAEE,+BAAkC;EvEg3Q1C;EuE92QM;;IAEE,6BAAgC;EvEg3QxC;EuE12QE;IAAmB,uBAAuB;EvE62Q5C;EuE52QE;;IAEE,2BAA2B;EvE82Q/B;EuE52QE;;IAEE,6BAA6B;EvE82QjC;EuE52QE;;IAEE,8BAA8B;EvE82QlC;EuE52QE;;IAEE,4BAA4B;EvE82QhC;AACF;;Acx3QI;EyDlDI;IAAgC,oBAA4B;EvE+6QlE;EuE96QM;;IAEE,wBAAoC;EvEg7Q5C;EuE96QM;;IAEE,0BAAwC;EvEg7QhD;EuE96QM;;IAEE,2BAA0C;EvEg7QlD;EuE96QM;;IAEE,yBAAsC;EvEg7Q9C;EuE/7QM;IAAgC,0BAA4B;EvEk8QlE;EuEj8QM;;IAEE,8BAAoC;EvEm8Q5C;EuEj8QM;;IAEE,gCAAwC;EvEm8QhD;EuEj8QM;;IAEE,iCAA0C;EvEm8QlD;EuEj8QM;;IAEE,+BAAsC;EvEm8Q9C;EuEl9QM;IAAgC,yBAA4B;EvEq9QlE;EuEp9QM;;IAEE,6BAAoC;EvEs9Q5C;EuEp9QM;;IAEE,+BAAwC;EvEs9QhD;EuEp9QM;;IAEE,gCAA0C;EvEs9QlD;EuEp9QM;;IAEE,8BAAsC;EvEs9Q9C;EuEr+QM;IAAgC,uBAA4B;EvEw+QlE;EuEv+QM;;IAEE,2BAAoC;EvEy+Q5C;EuEv+QM;;IAEE,6BAAwC;EvEy+QhD;EuEv+QM;;IAEE,8BAA0C;EvEy+QlD;EuEv+QM;;IAEE,4BAAsC;EvEy+Q9C;EuEx/QM;IAAgC,yBAA4B;EvE2/QlE;EuE1/QM;;IAEE,6BAAoC;EvE4/Q5C;EuE1/QM;;IAEE,+BAAwC;EvE4/QhD;EuE1/QM;;IAEE,gCAA0C;EvE4/QlD;EuE1/QM;;IAEE,8BAAsC;EvE4/Q9C;EuE3gRM;IAAgC,uBAA4B;EvE8gRlE;EuE7gRM;;IAEE,2BAAoC;EvE+gR5C;EuE7gRM;;IAEE,6BAAwC;EvE+gRhD;EuE7gRM;;IAEE,8BAA0C;EvE+gRlD;EuE7gRM;;IAEE,4BAAsC;EvE+gR9C;EuE9hRM;IAAgC,qBAA4B;EvEiiRlE;EuEhiRM;;IAEE,yBAAoC;EvEkiR5C;EuEhiRM;;IAEE,2BAAwC;EvEkiRhD;EuEhiRM;;IAEE,4BAA0C;EvEkiRlD;EuEhiRM;;IAEE,0BAAsC;EvEkiR9C;EuEjjRM;IAAgC,2BAA4B;EvEojRlE;EuEnjRM;;IAEE,+BAAoC;EvEqjR5C;EuEnjRM;;IAEE,iCAAwC;EvEqjRhD;EuEnjRM;;IAEE,kCAA0C;EvEqjRlD;EuEnjRM;;IAEE,gCAAsC;EvEqjR9C;EuEpkRM;IAAgC,0BAA4B;EvEukRlE;EuEtkRM;;IAEE,8BAAoC;EvEwkR5C;EuEtkRM;;IAEE,gCAAwC;EvEwkRhD;EuEtkRM;;IAEE,iCAA0C;EvEwkRlD;EuEtkRM;;IAEE,+BAAsC;EvEwkR9C;EuEvlRM;IAAgC,wBAA4B;EvE0lRlE;EuEzlRM;;IAEE,4BAAoC;EvE2lR5C;EuEzlRM;;IAEE,8BAAwC;EvE2lRhD;EuEzlRM;;IAEE,+BAA0C;EvE2lRlD;EuEzlRM;;IAEE,6BAAsC;EvE2lR9C;EuE1mRM;IAAgC,0BAA4B;EvE6mRlE;EuE5mRM;;IAEE,8BAAoC;EvE8mR5C;EuE5mRM;;IAEE,gCAAwC;EvE8mRhD;EuE5mRM;;IAEE,iCAA0C;EvE8mRlD;EuE5mRM;;IAEE,+BAAsC;EvE8mR9C;EuE7nRM;IAAgC,wBAA4B;EvEgoRlE;EuE/nRM;;IAEE,4BAAoC;EvEioR5C;EuE/nRM;;IAEE,8BAAwC;EvEioRhD;EuE/nRM;;IAEE,+BAA0C;EvEioRlD;EuE/nRM;;IAEE,6BAAsC;EvEioR9C;EuEznRM;IAAwB,2BAA2B;EvE4nRzD;EuE3nRM;;IAEE,+BAA+B;EvE6nRvC;EuE3nRM;;IAEE,iCAAiC;EvE6nRzC;EuE3nRM;;IAEE,kCAAkC;EvE6nR1C;EuE3nRM;;IAEE,gCAAgC;EvE6nRxC;EuE5oRM;IAAwB,0BAA2B;EvE+oRzD;EuE9oRM;;IAEE,8BAA+B;EvEgpRvC;EuE9oRM;;IAEE,gCAAiC;EvEgpRzC;EuE9oRM;;IAEE,iCAAkC;EvEgpR1C;EuE9oRM;;IAEE,+BAAgC;EvEgpRxC;EuE/pRM;IAAwB,wBAA2B;EvEkqRzD;EuEjqRM;;IAEE,4BAA+B;EvEmqRvC;EuEjqRM;;IAEE,8BAAiC;EvEmqRzC;EuEjqRM;;IAEE,+BAAkC;EvEmqR1C;EuEjqRM;;IAEE,6BAAgC;EvEmqRxC;EuElrRM;IAAwB,0BAA2B;EvEqrRzD;EuEprRM;;IAEE,8BAA+B;EvEsrRvC;EuEprRM;;IAEE,gCAAiC;EvEsrRzC;EuEprRM;;IAEE,iCAAkC;EvEsrR1C;EuEprRM;;IAEE,+BAAgC;EvEsrRxC;EuErsRM;IAAwB,wBAA2B;EvEwsRzD;EuEvsRM;;IAEE,4BAA+B;EvEysRvC;EuEvsRM;;IAEE,8BAAiC;EvEysRzC;EuEvsRM;;IAEE,+BAAkC;EvEysR1C;EuEvsRM;;IAEE,6BAAgC;EvEysRxC;EuEnsRE;IAAmB,uBAAuB;EvEssR5C;EuErsRE;;IAEE,2BAA2B;EvEusR/B;EuErsRE;;IAEE,6BAA6B;EvEusRjC;EuErsRE;;IAEE,8BAA8B;EvEusRlC;EuErsRE;;IAEE,4BAA4B;EvEusRhC;AACF;;AcjtRI;EyDlDI;IAAgC,oBAA4B;EvEwwRlE;EuEvwRM;;IAEE,wBAAoC;EvEywR5C;EuEvwRM;;IAEE,0BAAwC;EvEywRhD;EuEvwRM;;IAEE,2BAA0C;EvEywRlD;EuEvwRM;;IAEE,yBAAsC;EvEywR9C;EuExxRM;IAAgC,0BAA4B;EvE2xRlE;EuE1xRM;;IAEE,8BAAoC;EvE4xR5C;EuE1xRM;;IAEE,gCAAwC;EvE4xRhD;EuE1xRM;;IAEE,iCAA0C;EvE4xRlD;EuE1xRM;;IAEE,+BAAsC;EvE4xR9C;EuE3yRM;IAAgC,yBAA4B;EvE8yRlE;EuE7yRM;;IAEE,6BAAoC;EvE+yR5C;EuE7yRM;;IAEE,+BAAwC;EvE+yRhD;EuE7yRM;;IAEE,gCAA0C;EvE+yRlD;EuE7yRM;;IAEE,8BAAsC;EvE+yR9C;EuE9zRM;IAAgC,uBAA4B;EvEi0RlE;EuEh0RM;;IAEE,2BAAoC;EvEk0R5C;EuEh0RM;;IAEE,6BAAwC;EvEk0RhD;EuEh0RM;;IAEE,8BAA0C;EvEk0RlD;EuEh0RM;;IAEE,4BAAsC;EvEk0R9C;EuEj1RM;IAAgC,yBAA4B;EvEo1RlE;EuEn1RM;;IAEE,6BAAoC;EvEq1R5C;EuEn1RM;;IAEE,+BAAwC;EvEq1RhD;EuEn1RM;;IAEE,gCAA0C;EvEq1RlD;EuEn1RM;;IAEE,8BAAsC;EvEq1R9C;EuEp2RM;IAAgC,uBAA4B;EvEu2RlE;EuEt2RM;;IAEE,2BAAoC;EvEw2R5C;EuEt2RM;;IAEE,6BAAwC;EvEw2RhD;EuEt2RM;;IAEE,8BAA0C;EvEw2RlD;EuEt2RM;;IAEE,4BAAsC;EvEw2R9C;EuEv3RM;IAAgC,qBAA4B;EvE03RlE;EuEz3RM;;IAEE,yBAAoC;EvE23R5C;EuEz3RM;;IAEE,2BAAwC;EvE23RhD;EuEz3RM;;IAEE,4BAA0C;EvE23RlD;EuEz3RM;;IAEE,0BAAsC;EvE23R9C;EuE14RM;IAAgC,2BAA4B;EvE64RlE;EuE54RM;;IAEE,+BAAoC;EvE84R5C;EuE54RM;;IAEE,iCAAwC;EvE84RhD;EuE54RM;;IAEE,kCAA0C;EvE84RlD;EuE54RM;;IAEE,gCAAsC;EvE84R9C;EuE75RM;IAAgC,0BAA4B;EvEg6RlE;EuE/5RM;;IAEE,8BAAoC;EvEi6R5C;EuE/5RM;;IAEE,gCAAwC;EvEi6RhD;EuE/5RM;;IAEE,iCAA0C;EvEi6RlD;EuE/5RM;;IAEE,+BAAsC;EvEi6R9C;EuEh7RM;IAAgC,wBAA4B;EvEm7RlE;EuEl7RM;;IAEE,4BAAoC;EvEo7R5C;EuEl7RM;;IAEE,8BAAwC;EvEo7RhD;EuEl7RM;;IAEE,+BAA0C;EvEo7RlD;EuEl7RM;;IAEE,6BAAsC;EvEo7R9C;EuEn8RM;IAAgC,0BAA4B;EvEs8RlE;EuEr8RM;;IAEE,8BAAoC;EvEu8R5C;EuEr8RM;;IAEE,gCAAwC;EvEu8RhD;EuEr8RM;;IAEE,iCAA0C;EvEu8RlD;EuEr8RM;;IAEE,+BAAsC;EvEu8R9C;EuEt9RM;IAAgC,wBAA4B;EvEy9RlE;EuEx9RM;;IAEE,4BAAoC;EvE09R5C;EuEx9RM;;IAEE,8BAAwC;EvE09RhD;EuEx9RM;;IAEE,+BAA0C;EvE09RlD;EuEx9RM;;IAEE,6BAAsC;EvE09R9C;EuEl9RM;IAAwB,2BAA2B;EvEq9RzD;EuEp9RM;;IAEE,+BAA+B;EvEs9RvC;EuEp9RM;;IAEE,iCAAiC;EvEs9RzC;EuEp9RM;;IAEE,kCAAkC;EvEs9R1C;EuEp9RM;;IAEE,gCAAgC;EvEs9RxC;EuEr+RM;IAAwB,0BAA2B;EvEw+RzD;EuEv+RM;;IAEE,8BAA+B;EvEy+RvC;EuEv+RM;;IAEE,gCAAiC;EvEy+RzC;EuEv+RM;;IAEE,iCAAkC;EvEy+R1C;EuEv+RM;;IAEE,+BAAgC;EvEy+RxC;EuEx/RM;IAAwB,wBAA2B;EvE2/RzD;EuE1/RM;;IAEE,4BAA+B;EvE4/RvC;EuE1/RM;;IAEE,8BAAiC;EvE4/RzC;EuE1/RM;;IAEE,+BAAkC;EvE4/R1C;EuE1/RM;;IAEE,6BAAgC;EvE4/RxC;EuE3gSM;IAAwB,0BAA2B;EvE8gSzD;EuE7gSM;;IAEE,8BAA+B;EvE+gSvC;EuE7gSM;;IAEE,gCAAiC;EvE+gSzC;EuE7gSM;;IAEE,iCAAkC;EvE+gS1C;EuE7gSM;;IAEE,+BAAgC;EvE+gSxC;EuE9hSM;IAAwB,wBAA2B;EvEiiSzD;EuEhiSM;;IAEE,4BAA+B;EvEkiSvC;EuEhiSM;;IAEE,8BAAiC;EvEkiSzC;EuEhiSM;;IAEE,+BAAkC;EvEkiS1C;EuEhiSM;;IAEE,6BAAgC;EvEkiSxC;EuE5hSE;IAAmB,uBAAuB;EvE+hS5C;EuE9hSE;;IAEE,2BAA2B;EvEgiS/B;EuE9hSE;;IAEE,6BAA6B;EvEgiSjC;EuE9hSE;;IAEE,8BAA8B;EvEgiSlC;EuE9hSE;;IAEE,4BAA4B;EvEgiShC;AACF;;AwEhmSA;EAAkB,4GAA8C;AxEomShE;;AwEhmSA;EAAiB,8BAA8B;AxEomS/C;;AwEnmSA;EAAiB,8BAA8B;AxEumS/C;;AwEtmSA;EAAiB,8BAA8B;AxE0mS/C;;AwEzmSA;ECTE,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AzEsnSrB;;AwEvmSI;EAAwB,2BAA2B;AxE2mSvD;;AwE1mSI;EAAwB,4BAA4B;AxE8mSxD;;AwE7mSI;EAAwB,6BAA6B;AxEinSzD;;Ac5kSI;E0DvCA;IAAwB,2BAA2B;ExEwnSrD;EwEvnSE;IAAwB,4BAA4B;ExE0nStD;EwEznSE;IAAwB,6BAA6B;ExE4nSvD;AACF;;AcxlSI;E0DvCA;IAAwB,2BAA2B;ExEooSrD;EwEnoSE;IAAwB,4BAA4B;ExEsoStD;EwEroSE;IAAwB,6BAA6B;ExEwoSvD;AACF;;AcpmSI;E0DvCA;IAAwB,2BAA2B;ExEgpSrD;EwE/oSE;IAAwB,4BAA4B;ExEkpStD;EwEjpSE;IAAwB,6BAA6B;ExEopSvD;AACF;;AchnSI;E0DvCA;IAAwB,2BAA2B;ExE4pSrD;EwE3pSE;IAAwB,4BAA4B;ExE8pStD;EwE7pSE;IAAwB,6BAA6B;ExEgqSvD;AACF;;AwE3pSA;EAAmB,oCAAoC;AxE+pSvD;;AwE9pSA;EAAmB,oCAAoC;AxEkqSvD;;AwEjqSA;EAAmB,qCAAqC;AxEqqSxD;;AwEjqSA;EAAuB,2BAA0C;AxEqqSjE;;AwEpqSA;EAAuB,+BAA4C;AxEwqSnE;;AwEvqSA;EAAuB,2BAA2C;AxE2qSlE;;AwE1qSA;EAAuB,2BAAyC;AxE8qShE;;AwE7qSA;EAAuB,8BAA2C;AxEirSlE;;AwEhrSA;EAAuB,6BAA6B;AxEorSpD;;AwEhrSA;EAAc,sBAAwB;AxEorStC;;A0E3tSE;EACE,yBAAwB;A1E8tS5B;;AKptSE;EqELM,yBAA0E;A1E6tSlF;;A0EnuSE;EACE,yBAAwB;A1EsuS5B;;AK5tSE;EqELM,yBAA0E;A1EquSlF;;A0E3uSE;EACE,yBAAwB;A1E8uS5B;;AKpuSE;EqELM,yBAA0E;A1E6uSlF;;A0EnvSE;EACE,yBAAwB;A1EsvS5B;;AK5uSE;EqELM,yBAA0E;A1EqvSlF;;A0E3vSE;EACE,yBAAwB;A1E8vS5B;;AKpvSE;EqELM,yBAA0E;A1E6vSlF;;A0EnwSE;EACE,yBAAwB;A1EswS5B;;AK5vSE;EqELM,yBAA0E;A1EqwSlF;;A0E3wSE;EACE,yBAAwB;A1E8wS5B;;AKpwSE;EqELM,yBAA0E;A1E6wSlF;;A0EnxSE;EACE,yBAAwB;A1EsxS5B;;AK5wSE;EqELM,yBAA0E;A1EqxSlF;;AwE9uSA;EAAa,yBAA6B;AxEkvS1C;;AwEjvSA;EAAc,yBAA6B;AxEqvS3C;;AwEnvSA;EAAiB,oCAAkC;AxEuvSnD;;AwEtvSA;EAAiB,0CAAkC;AxE0vSnD;;AwEtvSA;EGvDE,WAAW;EACX,kBAAkB;EAClB,iBAAiB;EACjB,6BAA6B;EAC7B,SAAS;A3EizSX;;AwE1vSA;EAAwB,gCAAgC;AxE8vSxD;;AwE5vSA;EACE,iCAAiC;EACjC,oCAAoC;AxE+vStC;;AwE1vSA;EAAc,yBAAyB;AxE8vSvC;;A4E/zSA;EACE,8BAA8B;A5Ek0ShC;;A4E/zSA;EACE,6BAA6B;A5Ek0S/B;;A6El0SE;E3EOF;;;I2EDM,4BAA4B;IAE5B,2BAA2B;E7Ek0S/B;E6E/zSE;IAEI,0BAA0B;E7Eg0ShC;E6EvzSE;IACE,6BAA6B;E7EyzSjC;EE3nSF;I2E/KM,gCAAgC;E7E6ySpC;E6E3ySE;;IAEE,yB1EzCY;I0E0CZ,wBAAwB;E7E6yS5B;E6ErySE;IACE,2BAA2B;E7EuyS/B;E6EpySE;;IAEE,wBAAwB;E7EsyS5B;E6EnySE;;;IAGE,UAAU;IACV,SAAS;E7EqySb;E6ElySE;;IAEE,uBAAuB;E7EoyS3B;E6E5xSE;IACE,Q1E4hCgC;EHkwQpC;EE10SF;I2E+CM,2BAA2C;E7E8xS/C;EYp3SA;IiEyFI,2BAA2C;E7E8xS/C;EiC52SF;I4CmFM,aAAa;E7E4xSjB;EsC33SF;IuCkGM,sB1EtFS;EHk3Sb;EgB/3SF;I6DuGM,oCAAoC;E7E2xSxC;E6E5xSE;;IAKI,iCAAmC;E7E2xSzC;EgB91SF;;I6D0EQ,oCAAsC;E7EwxS5C;EgB7wSF;I6DNM,cAAc;E7EsxSlB;EiB54SA;;;;I4D4HM,qB1EvHU;EH64ShB;EgBxySF;I6DuBM,cAAc;IACd,qB1E7HY;EHi5ShB;AACF;;A8E55SA;;EAEE,iBAAiB;EACjB,cAAc;A9E+5ShB;;A8El6SA;;EAMI,gBAAgB;A9Ei6SpB;;A8Ev6SA;;EAUI,YAAY;A9Ek6ShB;;A8E56SA;;EAcI,qBAAqB;EACrB,iBAAiB;A9Em6SrB;;A8El7SA;;EAmBI,iBAAiB;A9Eo6SrB;;A8Ev7SA;;EAuBI,sBAAsB;EACtB,kBAAkB;A9Eq6StB;;A8E77SA;;EA4BI,QAAQ;EACR,aAAa;EACb,iBAAiB;A9Es6SrB;;A8Ep8SA;;EAkCI,sBAAsB;EACtB,qBAAqB;A9Eu6SzB;;A8E18SA;;;;EAwCI,oBAAoB;EACpB,kB3EsM6B;AHmuSjC;;A8El9SA;;EA6CI,kCAAgD;A9E06SpD;;A8Ev9SA;;;;EAkDI,kC3EgMgC;AH4uSpC;;A8E99SA;;EAsDI,kC3E4LgC;AHivSpC;;A8En+SA;;EA0DI,qBAAqB;EACrB,qBAAqB;EACrB,qBAAqB;EACrB,iBAAiB;A9E86SrB;;A8E3+SA;;EAiEI,QAAQ;EACR,aAAa;A9E+6SjB;;A8Ej/SA;;EAsEI,cAAc;EACd,UAAU;EACV,gCAAgC;A9Eg7SpC;;A8Ex/SA;;;;EA6EI,cAAc;EACd,aAAa;A9Ek7SjB;;A8EhgTA;;EAkFI,0CAAiJ;EACjJ,+MAAqG;EACrG,yB3EqfwC;AH87R5C;;A8EvgTA;;EAwFI,sBAA4D;EAC5D,qBAAqB;A9Eo7SzB;;A8E7gTA;;EA6FQ,eAAsD;A9Eq7S9D;;A8ElhTA;;EAiGQ,2BAAgH;A9Es7SxH;;A8EvhTA;;EAuGQ,+BAA8E;A9Eq7StF;;A8E5hTA;;;;;;;;;;;;EAkHI,kCAAgD;A9Ey7SpD;;A8E3iTA;;;;;;;;;;;;EA2HI,kC3EuHgC;AHw0SpC;;A8E1jTA;;;;EAgII,kC3EkHgC;AH+0SpC;;A8EjkTA;;;;EAqII,kCAAgD;A9Em8SpD;;A8ExkTA;;;;EA0II,gBAAgB;A9Eq8SpB;;A8E/kTA;;;;;;;;EAiJI,sBAAsB;EACtB,oBAAoB;A9Ey8SxB;;A8E3lTA;;EAuJM,qB3E44BmC;E2E34BnC,eAAe;EAOf,c3ElJY;E2EmJZ,Y3E04BuC;AHyjR7C;;A8EnmTA;;EA2JQ,gBAAgB;EAChB,oB3Eu4BiC;AHskRzC;;A8EzmTA;;EAqKI,gBAAgB;EAChB,kBAAkB;A9Ey8StB;;A8E/mTA;;EA0KI,WAAW;A9E08Sf;;A8EpnTA;;EA8KI,8BAA8B;A9E28SlC;;A8EznTA;;EAmLM,oBAAoB;A9E28S1B;;A8E9nTA;;EAuLM,mBAAmB;A9E48SzB;;A8EnoTA;;EA2LM,eAAe;A9E68SrB;;A8ExoTA;;EA+LM,cAAc;A9E88SpB;;A8E7oTA;;EAoMI,cAAc;EACd,OAAO;A9E88SX;;A8EnpTA;;EAyMI,oBAAoB;EACpB,cAAc;A9E+8SlB;;A8EzpTA;;EA8MI,sBAAsB;EACtB,oBAAoB;A9Eg9SxB;;A8E/pTA;;EAmNI,sBAAsB;EACtB,qBAAqB;A9Ei9SzB;;A8ErqTA;;;;;;EA0NI,gBAAgB;EAChB,qBAAqB;A9Eo9SzB;;A8E/qTA;;EpEqBI,gCP6NgC;EO5NhC,mCP4NgC;EO/MhC,yBoEgMmC;EpE/LnC,4BoE+LmC;A9Eo9SvC;;A8EvrTA;;EpEqBI,0BoEoNoC;EpEnNpC,6BoEmNoC;EpEtMpC,+BP+MgC;EO9MhC,kCP8MgC;AH68SpC;;A8E/rTA;;EAkPI,uBAA+C;EAC/C,cAAc;A9Ek9SlB;;A8ErsTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9Ew9SlB;;A8E3sTA;;EAkPI,iBAA+C;EAC/C,cAAc;A9E89SlB;;A8EjtTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9Eo+SlB;;A8EvtTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9E0+SlB;;A8E7tTA;;EAkPI,iBAA+C;EAC/C,cAAc;A9Eg/SlB;;A8EnuTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9Es/SlB;;A8EzuTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9E4/SlB;;A8E/uTA;;EAkPI,iBAA+C;EAC/C,cAAc;A9EkgTlB;;A8ErvTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9EwgTlB;;A8E3vTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9E8gTlB;;AcrsTI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EqhThB;E8ExwTF;;IAkPI,uBAA+C;IAC/C,cAAc;E9E0hThB;E8E7wTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E+hThB;E8ElxTF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EoiThB;E8EvxTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EyiThB;E8E5xTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E8iThB;E8EjyTF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EmjThB;E8EtyTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EwjThB;E8E3yTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E6jThB;E8EhzTF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EkkThB;E8ErzTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EukThB;E8E1zTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4kThB;AACF;;AcpwTI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EolThB;E8Ev0TF;;IAkPI,uBAA+C;IAC/C,cAAc;E9EylThB;E8E50TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E8lThB;E8Ej1TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EmmThB;E8Et1TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EwmThB;E8E31TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E6mThB;E8Eh2TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EknThB;E8Er2TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EunThB;E8E12TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4nThB;E8E/2TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EioThB;E8Ep3TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EsoThB;E8Ez3TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E2oThB;AACF;;Acn0TI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EmpThB;E8Et4TF;;IAkPI,uBAA+C;IAC/C,cAAc;E9EwpThB;E8E34TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E6pThB;E8Eh5TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EkqThB;E8Er5TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EuqThB;E8E15TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4qThB;E8E/5TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EirThB;E8Ep6TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EsrThB;E8Ez6TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E2rThB;E8E96TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EgsThB;E8En7TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EqsThB;E8Ex7TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E0sThB;AACF;;Acl4TI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EktThB;E8Er8TF;;IAkPI,uBAA+C;IAC/C,cAAc;E9EutThB;E8E18TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4tThB;E8E/8TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EiuThB;E8Ep9TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EsuThB;E8Ez9TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E2uThB;E8E99TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EgvThB;E8En+TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EqvThB;E8Ex+TF;;IAkPI,wBAA+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","file":"bootstrap-rtl.css","sourcesContent":["/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n @import \"functions\";\n @import \"variables\";\n @import \"mixins\";\n @import \"root\";\n @import \"reboot\";\n @import \"type\";\n @import \"images\";\n @import \"code\";\n @import \"grid\";\n @import \"tables\";\n @import \"forms\";\n @import \"buttons\";\n @import \"transitions\";\n @import \"dropdown\";\n @import \"button-group\";\n @import \"input-group\";\n @import \"custom-forms\";\n @import \"nav\";\n @import \"navbar\";\n @import \"card\";\n @import \"breadcrumb\";\n @import \"pagination\";\n @import \"badge\";\n @import \"jumbotron\";\n @import \"alert\";\n @import \"progress\";\n @import \"media\";\n @import \"list-group\";\n @import \"close\";\n @import \"toasts\";\n @import \"modal\";\n @import \"tooltip\";\n @import \"popover\";\n @import \"carousel\";\n @import \"spinners\";\n @import \"utilities\";\n @import \"print\";\n\n@import \"rtl\";\n","/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-wrap: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container, .container-sm, .container-md {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container, .container-sm, .container-md, .container-lg {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container, .container-sm, .container-md, .container-lg, .container-xl {\n max-width: 1140px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.row-cols-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-right: 8.333333%;\n}\n\n.offset-2 {\n margin-right: 16.666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.333333%;\n}\n\n.offset-5 {\n margin-right: 41.666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.333333%;\n}\n\n.offset-8 {\n margin-right: 66.666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.333333%;\n}\n\n.offset-11 {\n margin-right: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.333333%;\n }\n .offset-sm-2 {\n margin-right: 16.666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.333333%;\n }\n .offset-sm-5 {\n margin-right: 41.666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.333333%;\n }\n .offset-sm-8 {\n margin-right: 66.666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.333333%;\n }\n .offset-sm-11 {\n margin-right: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-md-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.333333%;\n }\n .offset-md-2 {\n margin-right: 16.666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.333333%;\n }\n .offset-md-5 {\n margin-right: 41.666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.333333%;\n }\n .offset-md-8 {\n margin-right: 66.666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.333333%;\n }\n .offset-md-11 {\n margin-right: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.333333%;\n }\n .offset-lg-2 {\n margin-right: 16.666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.333333%;\n }\n .offset-lg-5 {\n margin-right: 41.666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.333333%;\n }\n .offset-lg-8 {\n margin-right: 66.666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.333333%;\n }\n .offset-lg-11 {\n margin-right: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.333333%;\n }\n .offset-xl-2 {\n margin-right: 16.666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.333333%;\n }\n .offset-xl-5 {\n margin-right: 41.666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.333333%;\n }\n .offset-xl-8 {\n margin-right: 66.666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.333333%;\n }\n .offset-xl-11 {\n margin-right: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input[disabled] ~ .form-check-label,\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 0%;\n min-width: 0;\n margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n left: 0;\n z-index: -1;\n width: 1rem;\n height: 1.25rem;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n display: none;\n}\n\n.custom-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input[disabled] ~ .custom-file-label,\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: 1.4rem;\n padding: 0;\n background-color: transparent;\n appearance: none;\n}\n\n.custom-range:focus {\n outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n transition: none;\n }\n}\n\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar .container,\n.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n min-height: 1px;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n flex-shrink: 0;\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n flex: 1 0 0%;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion > .card {\n overflow: hidden;\n}\n\n.accordion > .card:not(:last-of-type) {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.accordion > .card:not(:first-of-type) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.accordion > .card > .card-header {\n border-radius: 0;\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 3;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 3;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .badge {\n transition: none;\n }\n}\n\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\n\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\n\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\n\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\n\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\n\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\n\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\n\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\n\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n\n.list-group-item + .list-group-item.active {\n margin-top: -1px;\n border-top-width: 1px;\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n\n.list-group-horizontal .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n\n.list-group-horizontal .list-group-item.active {\n margin-top: 0;\n}\n\n.list-group-horizontal .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n}\n\n.list-group-horizontal .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n.list-group-flush .list-group-item {\n border-right-width: 0;\n border-left-width: 0;\n border-radius: 0;\n}\n\n.list-group-flush .list-group-item:first-child {\n border-top-width: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n appearance: none;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(10px);\n opacity: 0;\n border-radius: 0.25rem;\n}\n\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n opacity: 1;\n}\n\n.toast.show {\n display: block;\n opacity: 1;\n}\n\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n transform: none;\n}\n\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n display: flex;\n max-height: calc(100% - 1rem);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n content: \"\";\n}\n\n.modal-dialog-centered.modal-dialog-scrollable {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: 0.75rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: calc(0.3rem - 1px);\n border-bottom-left-radius: calc(0.3rem - 1px);\n}\n\n.modal-footer > * {\n margin: 0.25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc(-0.5rem - 1px);\n}\n\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc(-0.5rem - 1px);\n}\n\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n transition: opacity 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n\n.rtl,\n[dir=\"rtl\"] {\n text-align: right;\n direction: rtl;\n}\n\n.rtl .nav,\n[dir=\"rtl\"] .nav {\n padding-right: 0;\n}\n\n.rtl .navbar-nav .nav-item,\n[dir=\"rtl\"] .navbar-nav .nav-item {\n float: right;\n}\n\n.rtl .navbar-nav .nav-item + .nav-item,\n[dir=\"rtl\"] .navbar-nav .nav-item + .nav-item {\n margin-right: inherit;\n margin-left: 1rem;\n}\n\n.rtl th,\n[dir=\"rtl\"] th {\n text-align: right;\n}\n\n.rtl .alert-dismissible,\n[dir=\"rtl\"] .alert-dismissible {\n padding-right: 1.25rem;\n padding-left: 4rem;\n}\n\n.rtl .dropdown-menu,\n[dir=\"rtl\"] .dropdown-menu {\n right: 0;\n left: inherit;\n text-align: right;\n}\n\n.rtl .checkbox label,\n[dir=\"rtl\"] .checkbox label {\n padding-right: 1.25rem;\n padding-left: inherit;\n}\n\n.rtl .btn-group > .btn:not(:first-child),\n.rtl .btn-group > .btn-group:not(:first-child),\n[dir=\"rtl\"] .btn-group > .btn:not(:first-child),\n[dir=\"rtl\"] .btn-group > .btn-group:not(:first-child) {\n margin-left: initial;\n margin-right: -1px;\n}\n\n.rtl .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle),\n[dir=\"rtl\"] .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.rtl .btn-group > .btn:last-child:not(:first-child),\n.rtl .btn-group > .dropdown-toggle:not(:first-child),\n[dir=\"rtl\"] .btn-group > .btn:last-child:not(:first-child),\n[dir=\"rtl\"] .btn-group > .dropdown-toggle:not(:first-child) {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child,\n[dir=\"rtl\"] .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .custom-control,\n[dir=\"rtl\"] .custom-control {\n padding-right: 1.5rem;\n padding-left: inherit;\n margin-right: inherit;\n margin-left: 1rem;\n}\n\n.rtl .custom-control-indicator,\n[dir=\"rtl\"] .custom-control-indicator {\n right: 0;\n left: inherit;\n}\n\n.rtl .custom-file-label::after,\n[dir=\"rtl\"] .custom-file-label::after {\n right: initial;\n left: -1px;\n border-radius: .25rem 0 0 .25rem;\n}\n\n.rtl .custom-control-label::after,\n.rtl .custom-control-label::before,\n[dir=\"rtl\"] .custom-control-label::after,\n[dir=\"rtl\"] .custom-control-label::before {\n right: -1.5rem;\n left: inherit;\n}\n\n.rtl .custom-select,\n[dir=\"rtl\"] .custom-select {\n padding: 0.375rem 0.75rem 0.375rem 1.75rem;\n background: #fff url(\"data:image/svg+xml,\") no-repeat left 0.75rem center;\n background-size: 8px 10px;\n}\n\n.rtl .custom-switch,\n[dir=\"rtl\"] .custom-switch {\n padding-right: 2.25rem;\n padding-left: inherit;\n}\n\n.rtl .custom-switch .custom-control-label::before,\n[dir=\"rtl\"] .custom-switch .custom-control-label::before {\n right: -2.25rem;\n}\n\n.rtl .custom-switch .custom-control-label::after,\n[dir=\"rtl\"] .custom-switch .custom-control-label::after {\n right: calc(-2.25rem + 2px);\n}\n\n.rtl .custom-switch .custom-control-input:checked ~ .custom-control-label::after,\n[dir=\"rtl\"] .custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n transform: translateX(-0.75rem);\n}\n\n.rtl .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.rtl .input-group > .input-group-append:last-child > .input-group-text:not(:last-child),\n.rtl .input-group > .input-group-append:not(:last-child) > .btn,\n.rtl .input-group > .input-group-append:not(:last-child) > .input-group-text,\n.rtl .input-group > .input-group-prepend > .btn,\n.rtl .input-group > .input-group-prepend > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n[dir=\"rtl\"] .input-group > .input-group-append:last-child > .input-group-text:not(:last-child),\n[dir=\"rtl\"] .input-group > .input-group-append:not(:last-child) > .btn,\n[dir=\"rtl\"] .input-group > .input-group-append:not(:last-child) > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-prepend > .btn,\n[dir=\"rtl\"] .input-group > .input-group-prepend > .input-group-text {\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.rtl .input-group > .input-group-append > .btn,\n.rtl .input-group > .input-group-append > .input-group-text,\n.rtl .input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.rtl .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child),\n.rtl .input-group > .input-group-prepend:not(:first-child) > .btn,\n.rtl .input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-append > .btn,\n[dir=\"rtl\"] .input-group > .input-group-append > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n[dir=\"rtl\"] .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child),\n[dir=\"rtl\"] .input-group > .input-group-prepend:not(:first-child) > .btn,\n[dir=\"rtl\"] .input-group > .input-group-prepend:not(:first-child) > .input-group-text {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .input-group > .custom-select:not(:first-child),\n.rtl .input-group > .form-control:not(:first-child),\n[dir=\"rtl\"] .input-group > .custom-select:not(:first-child),\n[dir=\"rtl\"] .input-group > .form-control:not(:first-child) {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .input-group > .custom-select:not(:last-child),\n.rtl .input-group > .form-control:not(:last-child),\n[dir=\"rtl\"] .input-group > .custom-select:not(:last-child),\n[dir=\"rtl\"] .input-group > .form-control:not(:last-child) {\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.rtl .input-group > .custom-select:not(:last-child):not(:first-child),\n.rtl .input-group > .form-control:not(:last-child):not(:first-child),\n[dir=\"rtl\"] .input-group > .custom-select:not(:last-child):not(:first-child),\n[dir=\"rtl\"] .input-group > .form-control:not(:last-child):not(:first-child) {\n border-radius: 0;\n}\n\n.rtl .radio input,\n.rtl .radio-inline,\n.rtl .checkbox input,\n.rtl .checkbox-inline input,\n[dir=\"rtl\"] .radio input,\n[dir=\"rtl\"] .radio-inline,\n[dir=\"rtl\"] .checkbox input,\n[dir=\"rtl\"] .checkbox-inline input {\n margin-right: -1.25rem;\n margin-left: inherit;\n}\n\n.rtl .breadcrumb-item + .breadcrumb-item,\n[dir=\"rtl\"] .breadcrumb-item + .breadcrumb-item {\n padding-right: 0.5rem;\n padding-left: 0;\n color: #6c757d;\n content: \"/\";\n}\n\n.rtl .breadcrumb-item + .breadcrumb-item::before,\n[dir=\"rtl\"] .breadcrumb-item + .breadcrumb-item::before {\n padding-right: 0;\n padding-left: 0.5rem;\n}\n\n.rtl .list-group,\n[dir=\"rtl\"] .list-group {\n padding-right: 0;\n padding-left: 40px;\n}\n\n.rtl .close,\n[dir=\"rtl\"] .close {\n float: left;\n}\n\n.rtl .modal-header .close,\n[dir=\"rtl\"] .modal-header .close {\n margin: -15px auto -15px -15px;\n}\n\n.rtl .modal-footer > :not(:first-child),\n[dir=\"rtl\"] .modal-footer > :not(:first-child) {\n margin-right: .25rem;\n}\n\n.rtl .modal-footer > :not(:last-child),\n[dir=\"rtl\"] .modal-footer > :not(:last-child) {\n margin-left: .25rem;\n}\n\n.rtl .modal-footer > :first-child,\n[dir=\"rtl\"] .modal-footer > :first-child {\n margin-right: 0;\n}\n\n.rtl .modal-footer > :last-child,\n[dir=\"rtl\"] .modal-footer > :last-child {\n margin-left: 0;\n}\n\n.rtl .alert-dismissible .close,\n[dir=\"rtl\"] .alert-dismissible .close {\n right: inherit;\n left: 0;\n}\n\n.rtl .dropdown-toggle::after,\n[dir=\"rtl\"] .dropdown-toggle::after {\n margin-right: .255em;\n margin-left: 0;\n}\n\n.rtl .form-check-input,\n[dir=\"rtl\"] .form-check-input {\n margin-right: -1.25rem;\n margin-left: inherit;\n}\n\n.rtl .form-check-label,\n[dir=\"rtl\"] .form-check-label {\n padding-right: 1.25rem;\n padding-left: inherit;\n}\n\n.rtl .pagination,\n.rtl .list-unstyled,\n.rtl .list-inline,\n[dir=\"rtl\"] .pagination,\n[dir=\"rtl\"] .list-unstyled,\n[dir=\"rtl\"] .list-inline {\n padding-right: 0;\n padding-left: inherit;\n}\n\n.rtl .pagination .page-item:first-child .page-link,\n[dir=\"rtl\"] .pagination .page-item:first-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rtl .pagination .page-item:last-child .page-link,\n[dir=\"rtl\"] .pagination .page-item:last-child .page-link {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rtl .offset-1,\n[dir=\"rtl\"] .offset-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-2,\n[dir=\"rtl\"] .offset-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n}\n\n.rtl .offset-3,\n[dir=\"rtl\"] .offset-3 {\n margin-right: 25%;\n margin-left: 0;\n}\n\n.rtl .offset-4,\n[dir=\"rtl\"] .offset-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-5,\n[dir=\"rtl\"] .offset-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n}\n\n.rtl .offset-6,\n[dir=\"rtl\"] .offset-6 {\n margin-right: 50%;\n margin-left: 0;\n}\n\n.rtl .offset-7,\n[dir=\"rtl\"] .offset-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-8,\n[dir=\"rtl\"] .offset-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n}\n\n.rtl .offset-9,\n[dir=\"rtl\"] .offset-9 {\n margin-right: 75%;\n margin-left: 0;\n}\n\n.rtl .offset-10,\n[dir=\"rtl\"] .offset-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-11,\n[dir=\"rtl\"] .offset-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n}\n\n@media (min-width: 576px) {\n .rtl .offset-sm-0,\n [dir=\"rtl\"] .offset-sm-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-sm-1,\n [dir=\"rtl\"] .offset-sm-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-2,\n [dir=\"rtl\"] .offset-sm-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-sm-3,\n [dir=\"rtl\"] .offset-sm-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-sm-4,\n [dir=\"rtl\"] .offset-sm-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-5,\n [dir=\"rtl\"] .offset-sm-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-sm-6,\n [dir=\"rtl\"] .offset-sm-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-sm-7,\n [dir=\"rtl\"] .offset-sm-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-8,\n [dir=\"rtl\"] .offset-sm-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-sm-9,\n [dir=\"rtl\"] .offset-sm-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-sm-10,\n [dir=\"rtl\"] .offset-sm-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-11,\n [dir=\"rtl\"] .offset-sm-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .rtl .offset-md-0,\n [dir=\"rtl\"] .offset-md-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-md-1,\n [dir=\"rtl\"] .offset-md-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-2,\n [dir=\"rtl\"] .offset-md-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-md-3,\n [dir=\"rtl\"] .offset-md-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-md-4,\n [dir=\"rtl\"] .offset-md-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-5,\n [dir=\"rtl\"] .offset-md-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-md-6,\n [dir=\"rtl\"] .offset-md-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-md-7,\n [dir=\"rtl\"] .offset-md-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-8,\n [dir=\"rtl\"] .offset-md-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-md-9,\n [dir=\"rtl\"] .offset-md-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-md-10,\n [dir=\"rtl\"] .offset-md-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-11,\n [dir=\"rtl\"] .offset-md-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .rtl .offset-lg-0,\n [dir=\"rtl\"] .offset-lg-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-lg-1,\n [dir=\"rtl\"] .offset-lg-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-2,\n [dir=\"rtl\"] .offset-lg-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-lg-3,\n [dir=\"rtl\"] .offset-lg-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-lg-4,\n [dir=\"rtl\"] .offset-lg-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-5,\n [dir=\"rtl\"] .offset-lg-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-lg-6,\n [dir=\"rtl\"] .offset-lg-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-lg-7,\n [dir=\"rtl\"] .offset-lg-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-8,\n [dir=\"rtl\"] .offset-lg-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-lg-9,\n [dir=\"rtl\"] .offset-lg-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-lg-10,\n [dir=\"rtl\"] .offset-lg-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-11,\n [dir=\"rtl\"] .offset-lg-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .rtl .offset-xl-0,\n [dir=\"rtl\"] .offset-xl-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-xl-1,\n [dir=\"rtl\"] .offset-xl-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-2,\n [dir=\"rtl\"] .offset-xl-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-xl-3,\n [dir=\"rtl\"] .offset-xl-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-xl-4,\n [dir=\"rtl\"] .offset-xl-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-5,\n [dir=\"rtl\"] .offset-xl-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-xl-6,\n [dir=\"rtl\"] .offset-xl-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-xl-7,\n [dir=\"rtl\"] .offset-xl-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-8,\n [dir=\"rtl\"] .offset-xl-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-xl-9,\n [dir=\"rtl\"] .offset-xl-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-xl-10,\n [dir=\"rtl\"] .offset-xl-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-11,\n [dir=\"rtl\"] .offset-xl-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n.rtl .mr-0,\n[dir=\"rtl\"] .mr-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.rtl .ml-0,\n[dir=\"rtl\"] .ml-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.rtl mx-0,\n[dir=\"rtl\"] mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.rtl .mr-1,\n[dir=\"rtl\"] .mr-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n}\n\n.rtl .ml-1,\n[dir=\"rtl\"] .ml-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n}\n\n.rtl mx-1,\n[dir=\"rtl\"] mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.rtl .mr-2,\n[dir=\"rtl\"] .mr-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n}\n\n.rtl .ml-2,\n[dir=\"rtl\"] .ml-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n}\n\n.rtl mx-2,\n[dir=\"rtl\"] mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.rtl .mr-3,\n[dir=\"rtl\"] .mr-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n}\n\n.rtl .ml-3,\n[dir=\"rtl\"] .ml-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n}\n\n.rtl mx-3,\n[dir=\"rtl\"] mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.rtl .mr-4,\n[dir=\"rtl\"] .mr-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n}\n\n.rtl .ml-4,\n[dir=\"rtl\"] .ml-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n}\n\n.rtl mx-4,\n[dir=\"rtl\"] mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.rtl .mr-5,\n[dir=\"rtl\"] .mr-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n}\n\n.rtl .ml-5,\n[dir=\"rtl\"] .ml-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n}\n\n.rtl mx-5,\n[dir=\"rtl\"] mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.rtl .pr-0,\n[dir=\"rtl\"] .pr-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.rtl .pl-0,\n[dir=\"rtl\"] .pl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.rtl px-0,\n[dir=\"rtl\"] px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.rtl .pr-1,\n[dir=\"rtl\"] .pr-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n}\n\n.rtl .pl-1,\n[dir=\"rtl\"] .pl-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n}\n\n.rtl px-1,\n[dir=\"rtl\"] px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.rtl .pr-2,\n[dir=\"rtl\"] .pr-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n}\n\n.rtl .pl-2,\n[dir=\"rtl\"] .pl-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n}\n\n.rtl px-2,\n[dir=\"rtl\"] px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.rtl .pr-3,\n[dir=\"rtl\"] .pr-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n}\n\n.rtl .pl-3,\n[dir=\"rtl\"] .pl-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n}\n\n.rtl px-3,\n[dir=\"rtl\"] px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.rtl .pr-4,\n[dir=\"rtl\"] .pr-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n}\n\n.rtl .pl-4,\n[dir=\"rtl\"] .pl-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n}\n\n.rtl px-4,\n[dir=\"rtl\"] px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.rtl .pr-5,\n[dir=\"rtl\"] .pr-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n}\n\n.rtl .pl-5,\n[dir=\"rtl\"] .pl-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n}\n\n.rtl px-5,\n[dir=\"rtl\"] px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.rtl .mr-auto,\n[dir=\"rtl\"] .mr-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n}\n\n.rtl .ml-auto,\n[dir=\"rtl\"] .ml-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n}\n\n.rtl .mx-auto,\n[dir=\"rtl\"] .mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .rtl .mr-sm-0,\n [dir=\"rtl\"] .mr-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-sm-0,\n [dir=\"rtl\"] .ml-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-sm-0,\n [dir=\"rtl\"] mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-sm-1,\n [dir=\"rtl\"] .mr-sm-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-sm-1,\n [dir=\"rtl\"] .ml-sm-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-sm-1,\n [dir=\"rtl\"] mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-sm-2,\n [dir=\"rtl\"] .mr-sm-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-sm-2,\n [dir=\"rtl\"] .ml-sm-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-sm-2,\n [dir=\"rtl\"] mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-sm-3,\n [dir=\"rtl\"] .mr-sm-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-sm-3,\n [dir=\"rtl\"] .ml-sm-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-sm-3,\n [dir=\"rtl\"] mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-sm-4,\n [dir=\"rtl\"] .mr-sm-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-sm-4,\n [dir=\"rtl\"] .ml-sm-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-sm-4,\n [dir=\"rtl\"] mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-sm-5,\n [dir=\"rtl\"] .mr-sm-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-sm-5,\n [dir=\"rtl\"] .ml-sm-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-sm-5,\n [dir=\"rtl\"] mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-sm-0,\n [dir=\"rtl\"] .pr-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-sm-0,\n [dir=\"rtl\"] .pl-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-sm-0,\n [dir=\"rtl\"] px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-sm-1,\n [dir=\"rtl\"] .pr-sm-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-sm-1,\n [dir=\"rtl\"] .pl-sm-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-sm-1,\n [dir=\"rtl\"] px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-sm-2,\n [dir=\"rtl\"] .pr-sm-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-sm-2,\n [dir=\"rtl\"] .pl-sm-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-sm-2,\n [dir=\"rtl\"] px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-sm-3,\n [dir=\"rtl\"] .pr-sm-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-sm-3,\n [dir=\"rtl\"] .pl-sm-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-sm-3,\n [dir=\"rtl\"] px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-sm-4,\n [dir=\"rtl\"] .pr-sm-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-sm-4,\n [dir=\"rtl\"] .pl-sm-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-sm-4,\n [dir=\"rtl\"] px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-sm-5,\n [dir=\"rtl\"] .pr-sm-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-sm-5,\n [dir=\"rtl\"] .pl-sm-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-sm-5,\n [dir=\"rtl\"] px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-sm-auto,\n [dir=\"rtl\"] .mr-sm-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-sm-auto,\n [dir=\"rtl\"] .ml-sm-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-sm-auto,\n [dir=\"rtl\"] .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .rtl .mr-md-0,\n [dir=\"rtl\"] .mr-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-md-0,\n [dir=\"rtl\"] .ml-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-md-0,\n [dir=\"rtl\"] mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-md-1,\n [dir=\"rtl\"] .mr-md-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-md-1,\n [dir=\"rtl\"] .ml-md-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-md-1,\n [dir=\"rtl\"] mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-md-2,\n [dir=\"rtl\"] .mr-md-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-md-2,\n [dir=\"rtl\"] .ml-md-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-md-2,\n [dir=\"rtl\"] mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-md-3,\n [dir=\"rtl\"] .mr-md-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-md-3,\n [dir=\"rtl\"] .ml-md-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-md-3,\n [dir=\"rtl\"] mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-md-4,\n [dir=\"rtl\"] .mr-md-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-md-4,\n [dir=\"rtl\"] .ml-md-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-md-4,\n [dir=\"rtl\"] mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-md-5,\n [dir=\"rtl\"] .mr-md-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-md-5,\n [dir=\"rtl\"] .ml-md-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-md-5,\n [dir=\"rtl\"] mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-md-0,\n [dir=\"rtl\"] .pr-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-md-0,\n [dir=\"rtl\"] .pl-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-md-0,\n [dir=\"rtl\"] px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-md-1,\n [dir=\"rtl\"] .pr-md-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-md-1,\n [dir=\"rtl\"] .pl-md-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-md-1,\n [dir=\"rtl\"] px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-md-2,\n [dir=\"rtl\"] .pr-md-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-md-2,\n [dir=\"rtl\"] .pl-md-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-md-2,\n [dir=\"rtl\"] px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-md-3,\n [dir=\"rtl\"] .pr-md-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-md-3,\n [dir=\"rtl\"] .pl-md-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-md-3,\n [dir=\"rtl\"] px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-md-4,\n [dir=\"rtl\"] .pr-md-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-md-4,\n [dir=\"rtl\"] .pl-md-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-md-4,\n [dir=\"rtl\"] px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-md-5,\n [dir=\"rtl\"] .pr-md-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-md-5,\n [dir=\"rtl\"] .pl-md-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-md-5,\n [dir=\"rtl\"] px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-md-auto,\n [dir=\"rtl\"] .mr-md-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-md-auto,\n [dir=\"rtl\"] .ml-md-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-md-auto,\n [dir=\"rtl\"] .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .rtl .mr-lg-0,\n [dir=\"rtl\"] .mr-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-lg-0,\n [dir=\"rtl\"] .ml-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-lg-0,\n [dir=\"rtl\"] mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-lg-1,\n [dir=\"rtl\"] .mr-lg-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-lg-1,\n [dir=\"rtl\"] .ml-lg-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-lg-1,\n [dir=\"rtl\"] mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-lg-2,\n [dir=\"rtl\"] .mr-lg-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-lg-2,\n [dir=\"rtl\"] .ml-lg-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-lg-2,\n [dir=\"rtl\"] mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-lg-3,\n [dir=\"rtl\"] .mr-lg-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-lg-3,\n [dir=\"rtl\"] .ml-lg-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-lg-3,\n [dir=\"rtl\"] mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-lg-4,\n [dir=\"rtl\"] .mr-lg-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-lg-4,\n [dir=\"rtl\"] .ml-lg-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-lg-4,\n [dir=\"rtl\"] mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-lg-5,\n [dir=\"rtl\"] .mr-lg-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-lg-5,\n [dir=\"rtl\"] .ml-lg-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-lg-5,\n [dir=\"rtl\"] mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-lg-0,\n [dir=\"rtl\"] .pr-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-lg-0,\n [dir=\"rtl\"] .pl-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-lg-0,\n [dir=\"rtl\"] px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-lg-1,\n [dir=\"rtl\"] .pr-lg-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-lg-1,\n [dir=\"rtl\"] .pl-lg-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-lg-1,\n [dir=\"rtl\"] px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-lg-2,\n [dir=\"rtl\"] .pr-lg-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-lg-2,\n [dir=\"rtl\"] .pl-lg-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-lg-2,\n [dir=\"rtl\"] px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-lg-3,\n [dir=\"rtl\"] .pr-lg-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-lg-3,\n [dir=\"rtl\"] .pl-lg-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-lg-3,\n [dir=\"rtl\"] px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-lg-4,\n [dir=\"rtl\"] .pr-lg-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-lg-4,\n [dir=\"rtl\"] .pl-lg-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-lg-4,\n [dir=\"rtl\"] px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-lg-5,\n [dir=\"rtl\"] .pr-lg-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-lg-5,\n [dir=\"rtl\"] .pl-lg-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-lg-5,\n [dir=\"rtl\"] px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-lg-auto,\n [dir=\"rtl\"] .mr-lg-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-lg-auto,\n [dir=\"rtl\"] .ml-lg-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-lg-auto,\n [dir=\"rtl\"] .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .rtl .mr-xl-0,\n [dir=\"rtl\"] .mr-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-xl-0,\n [dir=\"rtl\"] .ml-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-xl-0,\n [dir=\"rtl\"] mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-xl-1,\n [dir=\"rtl\"] .mr-xl-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-xl-1,\n [dir=\"rtl\"] .ml-xl-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-xl-1,\n [dir=\"rtl\"] mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-xl-2,\n [dir=\"rtl\"] .mr-xl-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-xl-2,\n [dir=\"rtl\"] .ml-xl-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-xl-2,\n [dir=\"rtl\"] mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-xl-3,\n [dir=\"rtl\"] .mr-xl-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-xl-3,\n [dir=\"rtl\"] .ml-xl-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-xl-3,\n [dir=\"rtl\"] mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-xl-4,\n [dir=\"rtl\"] .mr-xl-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-xl-4,\n [dir=\"rtl\"] .ml-xl-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-xl-4,\n [dir=\"rtl\"] mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-xl-5,\n [dir=\"rtl\"] .mr-xl-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-xl-5,\n [dir=\"rtl\"] .ml-xl-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-xl-5,\n [dir=\"rtl\"] mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-xl-0,\n [dir=\"rtl\"] .pr-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-xl-0,\n [dir=\"rtl\"] .pl-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-xl-0,\n [dir=\"rtl\"] px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-xl-1,\n [dir=\"rtl\"] .pr-xl-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-xl-1,\n [dir=\"rtl\"] .pl-xl-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-xl-1,\n [dir=\"rtl\"] px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-xl-2,\n [dir=\"rtl\"] .pr-xl-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-xl-2,\n [dir=\"rtl\"] .pl-xl-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-xl-2,\n [dir=\"rtl\"] px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-xl-3,\n [dir=\"rtl\"] .pr-xl-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-xl-3,\n [dir=\"rtl\"] .pl-xl-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-xl-3,\n [dir=\"rtl\"] px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-xl-4,\n [dir=\"rtl\"] .pr-xl-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-xl-4,\n [dir=\"rtl\"] .pl-xl-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-xl-4,\n [dir=\"rtl\"] px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-xl-5,\n [dir=\"rtl\"] .pr-xl-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-xl-5,\n [dir=\"rtl\"] .pl-xl-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-xl-5,\n [dir=\"rtl\"] px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-xl-auto,\n [dir=\"rtl\"] .mr-xl-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-xl-auto,\n [dir=\"rtl\"] .ml-xl-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-xl-auto,\n [dir=\"rtl\"] .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n.rtl .text-right,\n[dir=\"rtl\"] .text-right {\n text-align: left !important;\n}\n\n.rtl .text-left,\n[dir=\"rtl\"] .text-left {\n text-align: right !important;\n}\n\n@media (min-width: 576px) {\n .rtl .text-sm-right,\n [dir=\"rtl\"] .text-sm-right {\n text-align: left !important;\n }\n .rtl .text-sm-left,\n [dir=\"rtl\"] .text-sm-left {\n text-align: right !important;\n }\n}\n\n@media (min-width: 768px) {\n .rtl .text-md-right,\n [dir=\"rtl\"] .text-md-right {\n text-align: left !important;\n }\n .rtl .text-md-left,\n [dir=\"rtl\"] .text-md-left {\n text-align: right !important;\n }\n}\n\n@media (min-width: 992px) {\n .rtl .text-lg-right,\n [dir=\"rtl\"] .text-lg-right {\n text-align: left !important;\n }\n .rtl .text-lg-left,\n [dir=\"rtl\"] .text-lg-left {\n text-align: right !important;\n }\n}\n\n@media (min-width: 1200px) {\n .rtl .text-xl-right,\n [dir=\"rtl\"] .text-xl-right {\n text-align: left !important;\n }\n .rtl .text-xl-left,\n [dir=\"rtl\"] .text-xl-left {\n text-align: right !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-rtl.css.map */","// Do not forget to update getting-started/theming.md!\n:root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `