From 73f507f60556407b6c78eb61d2208d9550b8d94b Mon Sep 17 00:00:00 2001 From: Necati Meral Date: Wed, 19 Feb 2020 10:58:36 +0100 Subject: [PATCH 01/60] Updated `HttpAPi.Client` projects to target `netstandard2.0` This makes the usage of clients in traditional .netfx applications (WinForms) possible --- .../src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj | 6 ++---- .../Volo.Abp.Account.HttpApi.Client.csproj | 2 +- .../Volo.Blogging.HttpApi.Client.csproj | 2 +- .../Volo.Docs.HttpApi.Client.csproj | 2 +- .../Volo.Abp.FeatureManagement.HttpApi.Client.csproj | 2 +- .../Volo.Abp.Identity.HttpApi.Client.csproj | 6 ++---- .../Volo.Abp.PermissionManagement.HttpApi.Client.csproj | 2 +- .../Volo.Abp.TenantManagement.HttpApi.Client.csproj | 2 +- 8 files changed, 10 insertions(+), 14 deletions(-) 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 461a0c35f5..99f480ee63 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 @@ -1,18 +1,16 @@ - + - netcoreapp3.1 + netstandard2.0 Volo.Abp.Http.Client Volo.Abp.Http.Client $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false false false - true - Library diff --git a/modules/account/src/Volo.Abp.Account.HttpApi.Client/Volo.Abp.Account.HttpApi.Client.csproj b/modules/account/src/Volo.Abp.Account.HttpApi.Client/Volo.Abp.Account.HttpApi.Client.csproj index 89679b3e22..aef884dbe2 100644 --- a/modules/account/src/Volo.Abp.Account.HttpApi.Client/Volo.Abp.Account.HttpApi.Client.csproj +++ b/modules/account/src/Volo.Abp.Account.HttpApi.Client/Volo.Abp.Account.HttpApi.Client.csproj @@ -4,7 +4,7 @@ - netcoreapp3.1 + netstandard2.0 Volo.Abp.Account.HttpApi.Client Volo.Abp.Account.HttpApi.Client diff --git a/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj b/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj index 754382f89c..68b3775baa 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj +++ b/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj @@ -4,7 +4,7 @@ - netcoreapp3.1 + netstandard2.0 Volo.Blogging.HttpApi.Client Volo.Blogging.HttpApi.Client diff --git a/modules/docs/src/Volo.Docs.HttpApi.Client/Volo.Docs.HttpApi.Client.csproj b/modules/docs/src/Volo.Docs.HttpApi.Client/Volo.Docs.HttpApi.Client.csproj index f527001c45..5df5515e32 100644 --- a/modules/docs/src/Volo.Docs.HttpApi.Client/Volo.Docs.HttpApi.Client.csproj +++ b/modules/docs/src/Volo.Docs.HttpApi.Client/Volo.Docs.HttpApi.Client.csproj @@ -4,7 +4,7 @@ - netcoreapp3.1 + netstandard2.0 Volo.Docs.HttpApi.Client Volo.Docs.HttpApi.Client diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi.Client/Volo.Abp.FeatureManagement.HttpApi.Client.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi.Client/Volo.Abp.FeatureManagement.HttpApi.Client.csproj index 1a784f6e6c..a6dd5772e8 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi.Client/Volo.Abp.FeatureManagement.HttpApi.Client.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi.Client/Volo.Abp.FeatureManagement.HttpApi.Client.csproj @@ -4,7 +4,7 @@ - netcoreapp3.1 + netstandard2.0 diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj index 11fd0a40b6..5bff2432a7 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj @@ -1,18 +1,16 @@ - + - netcoreapp3.1 + netstandard2.0 Volo.Abp.Identity.HttpApi.Client Volo.Abp.Identity.HttpApi.Client $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false false false - Library - true diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo.Abp.PermissionManagement.HttpApi.Client.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo.Abp.PermissionManagement.HttpApi.Client.csproj index 8360442b75..a198deb9eb 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo.Abp.PermissionManagement.HttpApi.Client.csproj +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo.Abp.PermissionManagement.HttpApi.Client.csproj @@ -4,7 +4,7 @@ - netcoreapp3.1 + netstandard2.0 Volo.Abp.PermissionManagement.HttpApi.Client Volo.Abp.PermissionManagement.HttpApi.Client $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.csproj index 9c36b1b29e..263d7b4048 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.csproj @@ -4,7 +4,7 @@ - netcoreapp3.1 + netstandard2.0 Volo.Abp.TenantManagement.HttpApi.Client Volo.Abp.TenantManagement.HttpApi.Client $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; From aac3b9584a7d6be611ca3a72f753f21a98f936de Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 20 Feb 2020 13:38:58 +0300 Subject: [PATCH 02/60] ABP CLI Replace Packages with Previews resolves https://github.com/abpframework/abp/issues/2837 --- .../Volo/Abp/Cli/AbpCliCoreModule.cs | 2 + .../Commands/SwitchNightlyPreviewCommand.cs | 44 +++++ .../Abp/Cli/Commands/SwitchStableCommand.cs | 44 +++++ .../Volo/Abp/Cli/Commands/UpdateCommand.cs | 2 +- .../PackageSourceSwitcher.cs | 179 ++++++++++++++++++ 5 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchNightlyPreviewCommand.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchStableCommand.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index 34bf95fdf1..63fb4f8eee 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -30,6 +30,8 @@ namespace Volo.Abp.Cli options.Commands["login"] = typeof(LoginCommand); options.Commands["logout"] = typeof(LogoutCommand); options.Commands["suite"] = typeof(SuiteCommand); + options.Commands["switch-to-preview"] = typeof(SwitchNightlyPreviewCommand); + options.Commands["switch-to-stable"] = typeof(SwitchStableCommand); }); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchNightlyPreviewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchNightlyPreviewCommand.cs new file mode 100644 index 0000000000..9f0862258f --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchNightlyPreviewCommand.cs @@ -0,0 +1,44 @@ +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.ProjectModification; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.Commands +{ + public class SwitchNightlyPreviewCommand : IConsoleCommand, ITransientDependency + { + private readonly PackageSourceSwitcher _packageSourceSwitcher; + + public SwitchNightlyPreviewCommand(PackageSourceSwitcher packageSourceSwitcher) + { + _packageSourceSwitcher = packageSourceSwitcher; + } + + public async Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + await _packageSourceSwitcher.SwitchToPreview(commandLineArgs); + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(" abp switch-to-preview [options]"); + sb.AppendLine(""); + sb.AppendLine("Options:"); + sb.AppendLine("-sp|--solution-path"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); + + return sb.ToString(); + } + + public string GetShortDescription() + { + return "Switches packages to nightly preview ABP version."; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchStableCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchStableCommand.cs new file mode 100644 index 0000000000..333583e96d --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchStableCommand.cs @@ -0,0 +1,44 @@ +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.ProjectModification; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.Commands +{ + public class SwitchStableCommand : IConsoleCommand, ITransientDependency + { + private readonly PackageSourceSwitcher _packageSourceSwitcher; + + public SwitchStableCommand(PackageSourceSwitcher packageSourceSwitcher) + { + _packageSourceSwitcher = packageSourceSwitcher; + } + + public async Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + await _packageSourceSwitcher.SwitchToStable(commandLineArgs); + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(" abp switch-to-stable [options]"); + sb.AppendLine(""); + sb.AppendLine("Options:"); + sb.AppendLine("-sp|--solution-path"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); + + return sb.ToString(); + } + + public string GetShortDescription() + { + return "Switches packages to stable ABP version from preview version."; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs index d201790c94..5e15c25a0c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs @@ -94,7 +94,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(""); sb.AppendLine("Usage:"); sb.AppendLine(""); - sb.AppendLine(" abp update [options]"); + sb.AppendLine(" abp update [options]"); sb.AppendLine(""); sb.AppendLine("Options:"); sb.AppendLine("-p|--include-previews (if supported by the template)"); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs new file mode 100644 index 0000000000..605459b6c4 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs @@ -0,0 +1,179 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using System.Xml; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Cli.Args; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class PackageSourceSwitcher : ITransientDependency + { + public ILogger Logger { get; set; } + + public PackageSourceSwitcher() + { + Logger = NullLogger.Instance; + } + + public async Task SwitchToPreview(CommandLineArgs commandLineArgs) + { + await Switch(commandLineArgs, SwitchTarget.Preview); + } + + public async Task SwitchToStable(CommandLineArgs commandLineArgs) + { + await Switch(commandLineArgs, SwitchTarget.Stable); + } + + private async Task Switch(CommandLineArgs commandLineArgs, SwitchTarget target) + { + var solutionPath = GetSolutionPath(commandLineArgs); + + Logger.LogInformation($"Packages on solution \"{Path.GetFileName(solutionPath)}\" are being switched to {target}."); + Logger.LogInformation(""); + + var projectFiles = GetCsprojFiles(solutionPath); + + foreach (var projectFile in projectFiles) + { + Logger.LogInformation($"Packages on project \"{Path.GetFileName(projectFile)}\" are being switched to {target}."); + + var content = File.ReadAllText(projectFile); + + var doc = new XmlDocument() { PreserveWhitespace = true }; + + doc.Load(GenerateStreamFromString(content)); + + doc = SwitchPackagesInDocument(doc, content, target); + + File.WriteAllText(projectFile, doc.OuterXml); + } + + + Logger.LogInformation(""); + Logger.LogInformation($"Packages on solution \"{Path.GetFileName(solutionPath)}\" are switched to {target}."); + } + + private XmlDocument SwitchPackagesInDocument(XmlDocument doc, string content, SwitchTarget target) + { + Check.NotNull(content, nameof(content)); + + var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[@Include]"); + + foreach (XmlNode node in nodes) + { + var packageName = node.Attributes["Include"].Value; + + if (!packageName.StartsWith("Volo.Abp")) + { + continue; + } + + var version = node.Attributes["Version"].Value; + + XmlNode newNode = GetNewReferenceNode(doc, packageName, version, target); + + node.ParentNode.ReplaceChild(newNode, node); + } + + return doc; + } + + private XmlElement GetNewReferenceNode(XmlDocument doc, string packageName, string version, SwitchTarget target) + { + var newNode = doc.CreateElement("PackageReference"); + var newVersion = ""; + + if (target == SwitchTarget.Stable) + { + var versonSplitted = version.Split("-"); + + newVersion = versonSplitted.Length >= 2 ? + version.Split("-")[0] : version; + } + if (target == SwitchTarget.Preview) + { + var versonSplitted = version.Split("-"); + + newVersion = versonSplitted.Length < 2 ? + version + $"-preview{GetFormattedDate()}" : version; + } + + var includeAttr = doc.CreateAttribute("Include"); + includeAttr.Value = packageName; + newNode.Attributes.Append(includeAttr); + + var versionAttr = doc.CreateAttribute("Version"); + versionAttr.Value = newVersion; + newNode.Attributes.Append(versionAttr); + return newNode; + } + + private string GetFormattedDate() + { + var formattedDate = ""; + var today = DateTime.Now; + + formattedDate += today.Year; + formattedDate += (today.Month < 10 ? "0" + today.Month : today.Month.ToString()); + formattedDate += (today.Day < 10 ? "0" + today.Day : today.Day.ToString()); + + return formattedDate; + } + + private List GetCsprojFiles(string slnPath) + { + return Directory.GetFiles(Path.GetDirectoryName(slnPath), "*.csproj", SearchOption.AllDirectories).ToList(); + } + + private string GetSolutionPath(CommandLineArgs commandLineArgs) + { + var solutionPath = commandLineArgs.Options.GetOrNull(Options.SolutionPath.Short, Options.SolutionPath.Long); + + if (solutionPath == null) + { + try + { + solutionPath = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln").Single(); + } + catch (Exception) + { + Logger.LogError("There is no solution or more that one solution in current directory."); + throw; + } + } + + return solutionPath; + } + + private static Stream GenerateStreamFromString(string s) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(s); + writer.Flush(); + stream.Position = 0; + return stream; + } + + public static class Options + { + public static class SolutionPath + { + public const string Short = "sp"; + public const string Long = "solution-path"; + } + } + + enum SwitchTarget + { + Preview, + Stable + } + } +} From 866a5b8b96857322cf40e4ba582ed57625e583fa Mon Sep 17 00:00:00 2001 From: Necati Meral Date: Fri, 21 Feb 2020 10:32:13 +0100 Subject: [PATCH 03/60] Created new framework package `Volo.Abp.Http.Client.IdentityModel.Relay` Package contains the 'pass-through' authenticator-implementation which previously was in `Volo.Abp.Http.Client.IdentityModel.IdentityModelRemoteServiceHttpClientAuthenticator`. Since the `IdentityModelRemoteServiceHttpClientAuthenticator` implementation (without requiring `IHttpContextAccessor`) is required for basic clients (which should be able to target net-standard or netfx) this package was splitted into `Volo.Abp.Http.Client.IdentityModel.Relay` to support the known behavior of just passing the token around. WARNING: This commit contains a breaking change for existing backend applications which use automagic C# clients! --- framework/Volo.Abp.sln | 18 +++++-- .../FodyWeavers.xml | 3 ++ .../FodyWeavers.xsd | 30 ++++++++++++ .../Properties/launchSettings.json | 27 +++++++++++ ...Abp.Http.Client.IdentityModel.Relay.csproj | 23 +++++++++ .../Relay/AbpHttpClientIdentityModelModule.cs | 13 +++++ ...moteServiceHttpClientRelayAuthenticator.cs | 48 +++++++++++++++++++ .../Volo.Abp.Http.Client.IdentityModel.csproj | 6 +-- ...delRemoteServiceHttpClientAuthenticator.cs | 27 +---------- 9 files changed, 160 insertions(+), 35 deletions(-) create mode 100644 framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xml create mode 100644 framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xsd create mode 100644 framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Properties/launchSettings.json create mode 100644 framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo.Abp.Http.Client.IdentityModel.Relay.csproj create mode 100644 framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/AbpHttpClientIdentityModelModule.cs create mode 100644 framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/IdentityModelRemoteServiceHttpClientRelayAuthenticator.cs diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index b731aff187..ee45583895 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -1,4 +1,5 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 + +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.28922.388 MinimumVisualStudioVersion = 10.0.40219.1 @@ -252,13 +253,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.ObjectMapping.Test EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Ddd.Application.Contracts", "src\Volo.Abp.Ddd.Application.Contracts\Volo.Abp.Ddd.Application.Contracts.csproj", "{73559227-EBF0-475F-835B-1FF0CD9132AA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Minify", "src\Volo.Abp.Minify\Volo.Abp.Minify.csproj", "{928DC30D-C078-4BB4-A9F8-FE7252C67DC6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Minify", "src\Volo.Abp.Minify\Volo.Abp.Minify.csproj", "{928DC30D-C078-4BB4-A9F8-FE7252C67DC6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Minify.Tests", "test\Volo.Abp.Minify.Tests\Volo.Abp.Minify.Tests.csproj", "{E69182B3-350A-43F5-A935-5EBBEBECEF97}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Minify.Tests", "test\Volo.Abp.Minify.Tests\Volo.Abp.Minify.Tests.csproj", "{E69182B3-350A-43F5-A935-5EBBEBECEF97}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Serilog", "src\Volo.Abp.AspNetCore.Serilog\Volo.Abp.AspNetCore.Serilog.csproj", "{3B801003-BE74-49ED-9749-DA5E99F45EBF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Serilog", "src\Volo.Abp.AspNetCore.Serilog\Volo.Abp.AspNetCore.Serilog.csproj", "{3B801003-BE74-49ED-9749-DA5E99F45EBF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Serilog.Tests", "test\Volo.Abp.AspNetCore.Serilog.Tests\Volo.Abp.AspNetCore.Serilog.Tests.csproj", "{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Serilog.Tests", "test\Volo.Abp.AspNetCore.Serilog.Tests\Volo.Abp.AspNetCore.Serilog.Tests.csproj", "{9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Http.Client.IdentityModel.Relay", "src\Volo.Abp.Http.Client.IdentityModel.Relay\Volo.Abp.Http.Client.IdentityModel.Relay.csproj", "{925AF101-2203-409C-9C3B-03917316858F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -774,6 +777,10 @@ Global {9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}.Debug|Any CPU.Build.0 = Debug|Any CPU {9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}.Release|Any CPU.ActiveCfg = Release|Any CPU {9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62}.Release|Any CPU.Build.0 = Release|Any CPU + {925AF101-2203-409C-9C3B-03917316858F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {925AF101-2203-409C-9C3B-03917316858F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {925AF101-2203-409C-9C3B-03917316858F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {925AF101-2203-409C-9C3B-03917316858F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -906,6 +913,7 @@ Global {E69182B3-350A-43F5-A935-5EBBEBECEF97} = {447C8A77-E5F0-4538-8687-7383196D04EA} {3B801003-BE74-49ED-9749-DA5E99F45EBF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {9CAA07ED-FE5C-4427-A6FA-6C6CB5B4CC62} = {447C8A77-E5F0-4538-8687-7383196D04EA} + {925AF101-2203-409C-9C3B-03917316858F} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xml b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xsd b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/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.Http.Client.IdentityModel.Relay/Properties/launchSettings.json b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Properties/launchSettings.json new file mode 100644 index 0000000000..d56e5c65b7 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:52306/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Volo.Abp.Http.Client.IdentityModel": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:52307/" + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo.Abp.Http.Client.IdentityModel.Relay.csproj b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo.Abp.Http.Client.IdentityModel.Relay.csproj new file mode 100644 index 0000000000..8974420c46 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo.Abp.Http.Client.IdentityModel.Relay.csproj @@ -0,0 +1,23 @@ + + + + + + + netcoreapp3.1 + Volo.Abp.Http.Client.IdentityModel.Relay + Volo.Abp.Http.Client.IdentityModel.Relay + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + true + Library + + + + + + + + diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/AbpHttpClientIdentityModelModule.cs b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/AbpHttpClientIdentityModelModule.cs new file mode 100644 index 0000000000..086d3de06d --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/AbpHttpClientIdentityModelModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.IdentityModel; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Http.Client.IdentityModel.Relay +{ + [DependsOn( + typeof(AbpHttpClientIdentityModelModule) + )] + public class AbpHttpClientIdentityModelRelayModule : AbpModule + { + + } +} diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/IdentityModelRemoteServiceHttpClientRelayAuthenticator.cs b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/IdentityModelRemoteServiceHttpClientRelayAuthenticator.cs new file mode 100644 index 0000000000..25a1fc771c --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.Relay/Volo/Abp/Http/Client/IdentityModel/Relay/IdentityModelRemoteServiceHttpClientRelayAuthenticator.cs @@ -0,0 +1,48 @@ +using System.Threading.Tasks; +using IdentityModel.Client; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Http; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client.Authentication; +using Volo.Abp.IdentityModel; + +namespace Volo.Abp.Http.Client.IdentityModel.Relay +{ + [Dependency(ReplaceServices = true)] + public class IdentityModelRemoteServiceHttpClientRelayAuthenticator : IdentityModelRemoteServiceHttpClientAuthenticator, ITransientDependency + { + public IHttpContextAccessor HttpContextAccessor { get; set; } + + public IdentityModelRemoteServiceHttpClientRelayAuthenticator( + IIdentityModelAuthenticationService identityModelAuthenticationService) + : base(identityModelAuthenticationService) + { + } + + public override async Task Authenticate(RemoteServiceHttpClientAuthenticateContext context) + { + if (context.RemoteService.GetUseCurrentAccessToken() != false) + { + var accessToken = await GetAccessTokenFromHttpContextOrNullAsync(); + if (accessToken != null) + { + context.Request.SetBearerToken(accessToken); + return; + } + } + + await base.Authenticate(context); + } + + protected virtual async Task GetAccessTokenFromHttpContextOrNullAsync() + { + var httpContext = HttpContextAccessor?.HttpContext; + if (httpContext == null) + { + return null; + } + + return await httpContext.GetTokenAsync("access_token"); + } + } +} diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj index e62293964a..d8eef1ba5d 100644 --- a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo.Abp.Http.Client.IdentityModel.csproj @@ -1,18 +1,16 @@ - + - netcoreapp3.1 + netstandard2.0 Volo.Abp.Http.Client.IdentityModel Volo.Abp.Http.Client.IdentityModel $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false false false - true - Library diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs index 25763efbd5..5d9a85e0c5 100644 --- a/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel/Volo/Abp/Http/Client/IdentityModel/IdentityModelRemoteServiceHttpClientAuthenticator.cs @@ -1,7 +1,5 @@ using System.Threading.Tasks; using IdentityModel.Client; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Http; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client.Authentication; using Volo.Abp.IdentityModel; @@ -11,8 +9,6 @@ namespace Volo.Abp.Http.Client.IdentityModel [Dependency(ReplaceServices = true)] public class IdentityModelRemoteServiceHttpClientAuthenticator : IRemoteServiceHttpClientAuthenticator, ITransientDependency { - public IHttpContextAccessor HttpContextAccessor { get; set; } - protected IIdentityModelAuthenticationService IdentityModelAuthenticationService { get; } public IdentityModelRemoteServiceHttpClientAuthenticator( @@ -21,33 +17,12 @@ namespace Volo.Abp.Http.Client.IdentityModel IdentityModelAuthenticationService = identityModelAuthenticationService; } - public async Task Authenticate(RemoteServiceHttpClientAuthenticateContext context) + public virtual async Task Authenticate(RemoteServiceHttpClientAuthenticateContext context) { - if (context.RemoteService.GetUseCurrentAccessToken() != false) - { - var accessToken = await GetAccessTokenFromHttpContextOrNullAsync(); - if (accessToken != null) - { - context.Request.SetBearerToken(accessToken); - return; - } - } - await IdentityModelAuthenticationService.TryAuthenticateAsync( context.Client, context.RemoteService.GetIdentityClient() ); } - - protected virtual async Task GetAccessTokenFromHttpContextOrNullAsync() - { - var httpContext = HttpContextAccessor?.HttpContext; - if (httpContext == null) - { - return null; - } - - return await httpContext.GetTokenAsync("access_token"); - } } } From 06196ceb6509491ee64a177a21d1ede8586f7a05 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 21 Feb 2020 15:31:12 +0300 Subject: [PATCH 04/60] refactor & enhancements --- .../Volo/Abp/Cli/Commands/SuiteCommand.cs | 1 - .../ProjectModification/MyGetApiResponse.cs | 11 +++ .../Cli/ProjectModification/MyGetPackage.cs | 15 ++++ .../MyGetPackageListFinder.cs | 50 ++++++++++++ .../ProjectModification/PackageSourceAdder.cs | 76 +++++++++++++++++++ .../PackageSourceSwitcher.cs | 68 +++++++++-------- .../VoloNugetPackagesVersionUpdater.cs | 42 +++++++--- 7 files changed, 223 insertions(+), 40 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetApiResponse.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackage.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackageListFinder.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs index a13621ea22..227f006307 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs @@ -1,5 +1,4 @@ using System; -using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Logging; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetApiResponse.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetApiResponse.cs new file mode 100644 index 0000000000..9a32d8d6fc --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetApiResponse.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class MyGetApiResponse + { + public string _date { get; set; } + + public List Packages { get; set; } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackage.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackage.cs new file mode 100644 index 0000000000..e5ef40ca17 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackage.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class MyGetPackage + { + public string PackageType { get; set; } + + public string Id { get; set; } + + public List Versions { get; set; } + + public List Dates { get; set; } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackageListFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackageListFinder.cs new file mode 100644 index 0000000000..17a43e6dc7 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackageListFinder.cs @@ -0,0 +1,50 @@ +using System; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Newtonsoft.Json; +using Volo.Abp.Cli.Http; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class MyGetPackageListFinder : ISingletonDependency + { + private MyGetApiResponse _response; + + public ILogger Logger { get; set; } + + public MyGetPackageListFinder() + { + Logger = NullLogger.Instance; + } + + public async Task GetPackages() + { + if (_response != null) + { + return _response; + } + + try + { + using (var client = new CliHttpClient(TimeSpan.FromMinutes(10))) + { + var responseMessage = await client.GetAsync( + $"{CliUrls.WwwAbpIo}api/myget/packages/" + ); + + _response = JsonConvert.DeserializeObject(Encoding.Default.GetString(await responseMessage.Content.ReadAsByteArrayAsync())); + } + } + catch (Exception) + { + Logger.LogError("Unable to get latest preview version."); + throw; + } + + return _response; + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs new file mode 100644 index 0000000000..3e651b3bf1 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs @@ -0,0 +1,76 @@ +using System; +using System.IO; +using System.Xml; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class PackageSourceAdder: ITransientDependency + { + public ILogger Logger { get; set; } + + public PackageSourceAdder() + { + Logger = NullLogger.Instance; + } + + public void Add(string sourceKey, string sourceValue) + { + var nugetConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + "NuGet", "NuGet.Config"); + + if (!File.Exists(nugetConfigPath)) + { + return; + } + + var fileContent = File.ReadAllText(nugetConfigPath); + + if (fileContent.Contains($"\"{sourceValue}\"")) + { + return; + } + + Logger.LogInformation($"Adding \"{sourceValue}\" ({sourceKey}) to nuget sources..."); + + try + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + + doc.Load(GenerateStreamFromString(fileContent)); + + var sourceNodes = doc.SelectNodes("/configuration/packageSources"); + + var newNode = doc.CreateElement("add"); + + var includeAttr = doc.CreateAttribute("key"); + includeAttr.Value = sourceKey; + newNode.Attributes.Append(includeAttr); + + var versionAttr = doc.CreateAttribute("value"); + versionAttr.Value = sourceValue; + newNode.Attributes.Append(versionAttr); + + sourceNodes?[0]?.AppendChild(newNode); + + File.WriteAllText(nugetConfigPath, doc.OuterXml); + } + catch + { + Logger.LogWarning($"Adding \"{sourceValue}\" ({sourceKey}) to nuget sources FAILED."); + } + } + + private static Stream GenerateStreamFromString(string s) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(s); + writer.Flush(); + stream.Position = 0; + return stream; + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs index 605459b6c4..0baef6841a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs @@ -7,21 +7,31 @@ using System.Xml; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.NuGet; using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.ProjectModification { public class PackageSourceSwitcher : ITransientDependency { + private readonly MyGetPackageListFinder _myGetPackageListFinder; + private readonly NuGetService _nuGetService; + private readonly PackageSourceAdder _packageSourceAdder; + public ILogger Logger { get; set; } - public PackageSourceSwitcher() + public PackageSourceSwitcher(MyGetPackageListFinder myGetPackageListFinder, NuGetService nuGetService, PackageSourceAdder packageSourceAdder) { + _myGetPackageListFinder = myGetPackageListFinder; + _nuGetService = nuGetService; + _packageSourceAdder = packageSourceAdder; Logger = NullLogger.Instance; } public async Task SwitchToPreview(CommandLineArgs commandLineArgs) { + _packageSourceAdder.Add("ABP Nightly", "https://www.myget.org/F/abp-nightly/api/v3/index.json"); + await Switch(commandLineArgs, SwitchTarget.Preview); } @@ -33,6 +43,7 @@ namespace Volo.Abp.Cli.ProjectModification private async Task Switch(CommandLineArgs commandLineArgs, SwitchTarget target) { var solutionPath = GetSolutionPath(commandLineArgs); + var latestStableAbpVersion = target == SwitchTarget.Stable ? (await _nuGetService.GetLatestVersionOrNullAsync("Volo.Abp")).ToString() : null; Logger.LogInformation($"Packages on solution \"{Path.GetFileName(solutionPath)}\" are being switched to {target}."); Logger.LogInformation(""); @@ -49,17 +60,16 @@ namespace Volo.Abp.Cli.ProjectModification doc.Load(GenerateStreamFromString(content)); - doc = SwitchPackagesInDocument(doc, content, target); + doc = await SwitchPackagesInDocument(doc, content, target, latestStableAbpVersion); File.WriteAllText(projectFile, doc.OuterXml); } - Logger.LogInformation(""); Logger.LogInformation($"Packages on solution \"{Path.GetFileName(solutionPath)}\" are switched to {target}."); } - private XmlDocument SwitchPackagesInDocument(XmlDocument doc, string content, SwitchTarget target) + private async Task SwitchPackagesInDocument(XmlDocument doc, string content, SwitchTarget target, string latestStableAbpVersion = null) { Check.NotNull(content, nameof(content)); @@ -76,33 +86,27 @@ namespace Volo.Abp.Cli.ProjectModification var version = node.Attributes["Version"].Value; - XmlNode newNode = GetNewReferenceNode(doc, packageName, version, target); + XmlNode newNode = null; + + if (target == SwitchTarget.Stable) + { + newNode = GetNewStableReferenceNode(doc, packageName, version, latestStableAbpVersion); + } + else if (target == SwitchTarget.Preview) + { + var packageList = (await _myGetPackageListFinder.GetPackages()).Packages; + newNode = GetNewPreviewReferenceNode(doc, packageName, version, packageList); + } - node.ParentNode.ReplaceChild(newNode, node); + node.ParentNode?.ReplaceChild(newNode, node); } return doc; } - private XmlElement GetNewReferenceNode(XmlDocument doc, string packageName, string version, SwitchTarget target) + private XmlElement GetNewStableReferenceNode(XmlDocument doc, string packageName, string version, string newVersion) { var newNode = doc.CreateElement("PackageReference"); - var newVersion = ""; - - if (target == SwitchTarget.Stable) - { - var versonSplitted = version.Split("-"); - - newVersion = versonSplitted.Length >= 2 ? - version.Split("-")[0] : version; - } - if (target == SwitchTarget.Preview) - { - var versonSplitted = version.Split("-"); - - newVersion = versonSplitted.Length < 2 ? - version + $"-preview{GetFormattedDate()}" : version; - } var includeAttr = doc.CreateAttribute("Include"); includeAttr.Value = packageName; @@ -114,16 +118,20 @@ namespace Volo.Abp.Cli.ProjectModification return newNode; } - private string GetFormattedDate() + private XmlElement GetNewPreviewReferenceNode(XmlDocument doc, string packageName, string version, List packageList) { - var formattedDate = ""; - var today = DateTime.Now; + var newVersion = packageList.FirstOrDefault(p => p.Id == packageName)?.Versions.LastOrDefault() ?? version; - formattedDate += today.Year; - formattedDate += (today.Month < 10 ? "0" + today.Month : today.Month.ToString()); - formattedDate += (today.Day < 10 ? "0" + today.Day : today.Day.ToString()); + var newNode = doc.CreateElement("PackageReference"); + + var includeAttr = doc.CreateAttribute("Include"); + includeAttr.Value = packageName; + newNode.Attributes.Append(includeAttr); - return formattedDate; + var versionAttr = doc.CreateAttribute("Version"); + versionAttr.Value = newVersion; + newNode.Attributes.Append(versionAttr); + return newNode; } private List GetCsprojFiles(string slnPath) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs index d5756a4566..3d1f2ff4ca 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs @@ -1,6 +1,7 @@ using System; using NuGet.Versioning; using System.IO; +using System.Linq; using System.Threading.Tasks; using System.Xml; using Volo.Abp.Cli.NuGet; @@ -13,11 +14,13 @@ namespace Volo.Abp.Cli.ProjectModification public class VoloNugetPackagesVersionUpdater : ITransientDependency { private readonly NuGetService _nuGetService; + private readonly MyGetPackageListFinder _myGetPackageListFinder; public ILogger Logger { get; set; } - public VoloNugetPackagesVersionUpdater(NuGetService nuGetService) + public VoloNugetPackagesVersionUpdater(NuGetService nuGetService, MyGetPackageListFinder myGetPackageListFinder) { _nuGetService = nuGetService; + _myGetPackageListFinder = myGetPackageListFinder; Logger = NullLogger.Instance; } @@ -67,23 +70,44 @@ namespace Volo.Abp.Cli.ProjectModification continue; } - var versionAttribute = package.Attributes["Version"]; - packageId = package.Attributes["Include"].Value; - var packageVersion = SemanticVersion.Parse(versionAttribute.Value); + + var versionAttribute = package.Attributes["Version"]; + var currentVersion = versionAttribute.Value; + var packageVersion = SemanticVersion.Parse(currentVersion); Logger.LogDebug("Checking package: \"{0}\" - Current version: {1}", packageId, packageVersion); - var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId, includePreviews); - if (latestVersion != null && packageVersion < latestVersion) + if (currentVersion.Contains("preview") || includePreviews) { - Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, packageVersion.ToString(), latestVersion.ToString()); - versionAttribute.Value = latestVersion.ToString(); + var latestVersion = (await _myGetPackageListFinder.GetPackages()).Packages + .FirstOrDefault(p => p.Id == packageId) + ?.Versions.LastOrDefault(); + + if (currentVersion != latestVersion) + { + Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, currentVersion, latestVersion); + versionAttribute.Value = latestVersion; + } + else + { + Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, currentVersion); + } } else { - Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, packageVersion); + var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId); + + if (latestVersion != null && packageVersion < latestVersion) + { + Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, packageVersion.ToString(), latestVersion.ToString()); + versionAttribute.Value = latestVersion.ToString(); + } + else + { + Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, packageVersion); + } } } From 75bb5d645327a839af9fb6285d7a195d84339b3c Mon Sep 17 00:00:00 2001 From: Necati Meral Date: Fri, 21 Feb 2020 16:01:26 +0100 Subject: [PATCH 05/60] Implemented `IParameterTypeComparer` to be used in `ApiDescriptionFinder` The `CrossPlatformParameterTypeComparer` handles type differences in .net-core and .net-framework by replacing the assembly names with placeholders. This implementation works in all environments because the `CrossPlatformParameterTypeComparer` inherits the default behavior and (once) checks the current framework. --- .../DynamicProxying/ApiDescriptionFinder.cs | 10 +++-- .../CrossPlatformParameterTypeComparer.cs | 43 ++++++++++++++++++ .../DynamicProxying/EnvironmentHelper.cs | 44 +++++++++++++++++++ .../DynamicProxying/IParameterTypeComparer.cs | 19 ++++++++ .../DynamicProxying/ParameterTypeComparer.cs | 16 +++++++ 5 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/CrossPlatformParameterTypeComparer.cs create mode 100644 framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/EnvironmentHelper.cs create mode 100644 framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/IParameterTypeComparer.cs create mode 100644 framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ParameterTypeComparer.cs diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs index 9b9c8e804c..6f8b5da376 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs @@ -18,17 +18,21 @@ namespace Volo.Abp.Http.Client.DynamicProxying protected IApiDescriptionCache Cache { get; } + protected IParameterTypeComparer ParameterTypeComparer { get; } + private static readonly JsonSerializerSettings SharedJsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; public ApiDescriptionFinder( - IApiDescriptionCache cache, - IDynamicProxyHttpClientFactory httpClientFactory) + IApiDescriptionCache cache, + IDynamicProxyHttpClientFactory httpClientFactory, + IParameterTypeComparer parameterTypeComparer) { Cache = cache; HttpClientFactory = httpClientFactory; + ParameterTypeComparer = parameterTypeComparer; CancellationTokenProvider = NullCancellationTokenProvider.Instance; } @@ -57,7 +61,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying for (int i = 0; i < methodParameters.Length; i++) { - if (action.ParametersOnMethod[i].TypeAsString != methodParameters[i].ParameterType.GetFullNameWithAssemblyName()) + if (!ParameterTypeComparer.TypeMatches(action.ParametersOnMethod[i], methodParameters[i])) { found = false; break; diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/CrossPlatformParameterTypeComparer.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/CrossPlatformParameterTypeComparer.cs new file mode 100644 index 0000000000..e9142ffe3f --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/CrossPlatformParameterTypeComparer.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Modeling; + +namespace Volo.Abp.Http.Client.DynamicProxying +{ + /// + /// Compares the server-side parameter-type with the local parameter-type considering differences between + /// the .net-core and the traditional .net-framework. + /// Inspired by 'https://github.com/akkadotnet/akka.net/pull/2947/files' + /// + public class CrossPlatformParameterTypeComparer : ParameterTypeComparer, ITransientDependency + { + const string Placeholder = "%COREFX%"; + const string NetCoreLib = "System.Private.CoreLib"; + const string NetFxLib = "mscorlib"; + + static readonly bool runsOnNetFx; + + static CrossPlatformParameterTypeComparer() + { + runsOnNetFx = string.IsNullOrEmpty(EnvironmentHelper.RuntimeNetCoreVersion); + } + + public override bool TypeMatches(MethodParameterApiDescriptionModel actionParameter, ParameterInfo methodParameter) + { + if (runsOnNetFx) + { + // Compare the server's DotnetCore type relative to the current, traditional framework type + // by replacing framework assemblies with an placeholder string. + return actionParameter.TypeAsString.Replace(NetCoreLib, Placeholder) + == methodParameter.ParameterType.GetFullNameWithAssemblyName().Replace(NetFxLib, Placeholder); + } + else + { + return base.TypeMatches(actionParameter, methodParameter); + } + } + } +} diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/EnvironmentHelper.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/EnvironmentHelper.cs new file mode 100644 index 0000000000..0ed914e419 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/EnvironmentHelper.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; + +namespace Volo.Abp.Http.Client.DynamicProxying +{ + /// + /// Provide helpers to check the environment where the current ABP app is currently running + /// + static class EnvironmentHelper + { + /// + /// Initializes the class. + /// + static EnvironmentHelper() + { + RuntimeNetCoreVersion = GetNetCoreVersion(); + } + + /// + /// Gets the runtime net core version. + /// + /// + /// If the is null the app is running on a .net Classic environment + /// + public static string RuntimeNetCoreVersion { get; } + + /// + /// Gets the net core version. + /// + static string GetNetCoreVersion() + { + var assembly = typeof(System.Runtime.GCSettings).GetTypeInfo().Assembly; + var assemblyPath = assembly.CodeBase.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); + int netCoreAppIndex = Array.IndexOf(assemblyPath, "Microsoft.NETCore.App"); + if (netCoreAppIndex > 0 && netCoreAppIndex < assemblyPath.Length - 2) + { + return assemblyPath[netCoreAppIndex + 1]; + } + return null; + } + } +} diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/IParameterTypeComparer.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/IParameterTypeComparer.cs new file mode 100644 index 0000000000..079029bf93 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/IParameterTypeComparer.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using Volo.Abp.Http.Modeling; + +namespace Volo.Abp.Http.Client.DynamicProxying +{ + public interface IParameterTypeComparer + { + /// + /// Compares the given parameters. + /// + /// The parameter description retreived from the server (depends on the server's runtime) + /// The local parameter info (depends on the client's runtime) + /// + public bool TypeMatches(MethodParameterApiDescriptionModel actionParameter, ParameterInfo methodParameter); + } +} diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ParameterTypeComparer.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ParameterTypeComparer.cs new file mode 100644 index 0000000000..6551ba3108 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ParameterTypeComparer.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using Volo.Abp.Http.Modeling; + +namespace Volo.Abp.Http.Client.DynamicProxying +{ + public class ParameterTypeComparer : IParameterTypeComparer + { + public virtual bool TypeMatches(MethodParameterApiDescriptionModel actionParameter, ParameterInfo methodParameter) + { + return actionParameter.TypeAsString == methodParameter.ParameterType.GetFullNameWithAssemblyName(); + } + } +} From 37f0f3e9324f184e1f5769a3678a7c868a132b87 Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Mon, 24 Feb 2020 17:33:23 +0300 Subject: [PATCH 06/60] Fixed error when expected UserId is string but not guid --- .../Security/Principal/AbpClaimsIdentityExtensions.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Security/System/Security/Principal/AbpClaimsIdentityExtensions.cs b/framework/src/Volo.Abp.Security/System/Security/Principal/AbpClaimsIdentityExtensions.cs index 694fb7baa6..f4e4bba1a0 100644 --- a/framework/src/Volo.Abp.Security/System/Security/Principal/AbpClaimsIdentityExtensions.cs +++ b/framework/src/Volo.Abp.Security/System/Security/Principal/AbpClaimsIdentityExtensions.cs @@ -17,8 +17,11 @@ namespace System.Security.Principal { return null; } - - return Guid.Parse(userIdOrNull.Value); + if (Guid.TryParse(userIdOrNull.Value, out Guid result)) + { + return result; + } + return null; } public static Guid? FindUserId([NotNull] this IIdentity identity) From 5fcf2659be6f5c253b9367af620045c1612ae654 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 25 Feb 2020 11:15:09 +0800 Subject: [PATCH 07/60] Make AbpResourceOwnerPasswordValidator return detailed reason. --- .../IdentityServer/Localization/Resources/en.json | 6 +++++- .../IdentityServer/Localization/Resources/tr.json | 6 +++++- .../Localization/Resources/zh-Hans.json | 6 +++++- .../Localization/Resources/zh-Hant.json | 6 +++++- .../AbpResourceOwnerPasswordValidator.cs | 15 ++++++++++++--- 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/en.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/en.json index 6b2757a963..f974297b06 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/en.json +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/en.json @@ -3,6 +3,10 @@ "texts": { "Volo.IdentityServer:DuplicateIdentityResourceName": "Identity Resource name already exist: {Name}", "Volo.IdentityServer:DuplicateApiResourceName": "Api Resource name already exist: {Name}", - "Volo.IdentityServer:DuplicateClientId": "ClientId already exist: {ClientId}" + "Volo.IdentityServer:DuplicateClientId": "ClientId already exist: {ClientId}", + "UserLockedOut": "The user account has been locked out due to invalid login attempts. Please wait a while and try again.", + "InvalidUserNameOrPassword": "Invalid username or password!", + "LoginIsNotAllowed": "You are not allowed to login! You need to confirm your email/phone number.", + "InvalidUsername": "Invalid username or password!" } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/tr.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/tr.json index 9340b7999f..60f7a75a77 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/tr.json +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/tr.json @@ -3,6 +3,10 @@ "texts": { "Volo.IdentityServer:DuplicateIdentityResourceName": "Identity Resource adı zaten mevcut: {Name}", "Volo.IdentityServer:DuplicateApiResourceName": "Api Resource adı zaten mevcut: {Name}", - "Volo.IdentityServer:DuplicateClientId": "ClientId already zaten mevcut: {ClientId}" + "Volo.IdentityServer:DuplicateClientId": "ClientId already zaten mevcut: {ClientId}", + "UserLockedOut": "Kullanıcı hesabı hatalı giriş denemeleri nedeniyle kilitlenmiştir. Lütfen bir süre bekleyip tekrar deneyin.", + "InvalidUserNameOrPassword": "Kullanıcı adı ya da şifre geçersiz!", + "LoginIsNotAllowed": "Giriş yapamazsınız! E-posta adresinizi ya da telefon numaranızı doğrulamanız gerekiyor.", + "InvalidUsername": "Kullanıcı adı ya da şifre geçersiz!" } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json index b2d186e8b4..ac175e574d 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json @@ -3,6 +3,10 @@ "texts": { "Volo.IdentityServer:DuplicateIdentityResourceName": "Identity资源名称已存在: {Name}", "Volo.IdentityServer:DuplicateApiResourceName": "Api资源名称已存在: {Name}", - "Volo.IdentityServer:DuplicateClientId": "ClientId已经存在: {ClientId}" + "Volo.IdentityServer:DuplicateClientId": "ClientId已经存在: {ClientId}", + "UserLockedOut": "登录失败,用户账户已被锁定.请稍后再试.", + "InvalidUserNameOrPassword": "用户名或密码错误!", + "LoginIsNotAllowed": "无法登录!你需要验证邮箱地址/手机号.", + "InvalidUsername": "用户名或密码错误!" } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hant.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hant.json index 859e8c29b7..0ffeae8f81 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hant.json +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hant.json @@ -3,6 +3,10 @@ "texts": { "Volo.IdentityServer:DuplicateIdentityResourceName": "Identity資源名稱已存在: {Name}", "Volo.IdentityServer:DuplicateApiResourceName": "Api資源名稱已存在: {Name}", - "Volo.IdentityServer:DuplicateClientId": "ClientId已經存在: {ClientId}" + "Volo.IdentityServer:DuplicateClientId": "ClientId已經存在: {ClientId}", + "UserLockedOut": "登錄失敗,用戶賬戶已被鎖定.請稍後再試.", + "InvalidUserNameOrPassword": "用戶名或密碼錯誤!", + "LoginIsNotAllowed": "無法登錄!妳需要驗證郵箱地址/手機號.", + "InvalidUsername": "用戶名或密碼錯誤!" } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs index 68489a1bdb..ce11a167e1 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs @@ -8,7 +8,9 @@ using IdentityServer4.Models; using IdentityServer4.Services; using IdentityServer4.Validation; using Microsoft.AspNetCore.Identity; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; +using Volo.Abp.IdentityServer.Localization; using Volo.Abp.Security.Claims; using Volo.Abp.Uow; using Volo.Abp.Validation; @@ -22,17 +24,20 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity private readonly IEventService _events; private readonly UserManager _userManager; private readonly ILogger> _logger; + private readonly IStringLocalizer _localizer; public AbpResourceOwnerPasswordValidator( UserManager userManager, SignInManager signInManager, IEventService events, - ILogger> logger) + ILogger> logger, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; _events = events; _logger = logger; + _localizer = localizer; } /// @@ -44,8 +49,8 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity public virtual async Task ValidateAsync(ResourceOwnerPasswordValidationContext context) { await ReplaceEmailToUsernameOfInputIfNeeds(context); - var user = await _userManager.FindByNameAsync(context.UserName); + string errorDescription; if (user != null) { var result = await _signInManager.CheckPasswordSignInAsync(user, context.Password, true); @@ -72,25 +77,29 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity { _logger.LogInformation("Authentication failed for username: {username}, reason: locked out", context.UserName); await _events.RaiseAsync(new UserLoginFailureEvent(context.UserName, "locked out", interactive: false)); + errorDescription = _localizer["UserLockedOut"]; } else if (result.IsNotAllowed) { _logger.LogInformation("Authentication failed for username: {username}, reason: not allowed", context.UserName); await _events.RaiseAsync(new UserLoginFailureEvent(context.UserName, "not allowed", interactive: false)); + errorDescription = _localizer["LoginIsNotAllowed"]; } else { _logger.LogInformation("Authentication failed for username: {username}, reason: invalid credentials", context.UserName); await _events.RaiseAsync(new UserLoginFailureEvent(context.UserName, "invalid credentials", interactive: false)); + errorDescription = _localizer["InvalidUserNameOrPassword"]; } } else { _logger.LogInformation("No user found matching username: {username}", context.UserName); await _events.RaiseAsync(new UserLoginFailureEvent(context.UserName, "invalid username", interactive: false)); + errorDescription = _localizer["InvalidUsername"]; } - context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant); + context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, errorDescription); } protected virtual async Task ReplaceEmailToUsernameOfInputIfNeeds(ResourceOwnerPasswordValidationContext context) From 7f640f7cc68403262ee38e8b0bcab36ac7e15090 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 28 Feb 2020 17:00:56 +0300 Subject: [PATCH 08/60] doc: update the bookstore tutorial --- .../2019-08-16 v0_19_Release/Post.md | 2 +- docs/en/Getting-Started-Angular-Template.md | 2 +- ...Getting-Started-AspNetCore-MVC-Template.md | 2 +- docs/en/Startup-Templates/Application.md | 6 +- docs/en/Tutorials/Angular/Part-I.md | 661 +------- docs/en/Tutorials/Angular/Part-II.md | 589 +------ docs/en/Tutorials/Angular/Part-III.md | 180 +- .../images/bookstore-actions-buttons.png | Bin 32739 -> 0 bytes .../images/bookstore-angular-file-tree.png | Bin 103142 -> 0 bytes .../Angular/images/bookstore-book-list.png | Bin 90299 -> 0 bytes .../bookstore-creating-book-list-terminal.png | Bin 99450 -> 0 bytes ...okstore-creating-books-module-terminal.png | Bin 49301 -> 0 bytes .../bookstore-final-actions-dropdown.png | Bin 15155 -> 0 bytes .../bookstore-initial-book-list-page.png | Bin 50062 -> 0 bytes ...okstore-initial-books-page-with-layout.png | Bin 59064 -> 0 bytes .../images/bookstore-initial-books-page.png | Bin 29186 -> 0 bytes .../bookstore-service-terminal-output.png | Bin 101434 -> 0 bytes docs/en/Tutorials/AspNetCore-Mvc/Part-I.md | 478 +----- docs/en/Tutorials/AspNetCore-Mvc/Part-II.md | 434 +---- docs/en/Tutorials/AspNetCore-Mvc/Part-III.md | 168 +- .../images/bookstore-book-list.png | Bin 33481 -> 0 bytes .../bookstore-localization-files-v2.png | Bin 6323 -> 0 bytes .../bookstore-pmc-add-book-migration-v2.png | Bin 7712 -> 0 bytes .../images/bookstore-swagger.png | Bin 35254 -> 0 bytes docs/en/Tutorials/Index.md | 6 - docs/en/Tutorials/Part-1.md | 1117 +++++++++++++ docs/en/Tutorials/Part-2.md | 1447 +++++++++++++++++ .../images/bookstore-actions-buttons.png | Bin 0 -> 29435 bytes .../images/bookstore-add-create-dialog-v2.png | Bin .../images/bookstore-add-edit-dialog.png | Bin .../images/bookstore-add-index-page-v2.png | Bin .../images/bookstore-angular-file-tree.png | Bin 0 -> 246634 bytes .../images/bookstore-appservice-tests.png | Bin .../images/bookstore-backend-solution-v2.png | Bin .../images/bookstore-book-list-2.png | Bin .../Tutorials/images/bookstore-book-list.png | Bin 0 -> 62133 bytes .../images/bookstore-books-table-actions.png | Bin .../images/bookstore-books-table.png | Bin .../images/bookstore-confirmation-popup.png | Bin .../images/bookstore-create-dialog-2.png | Bin .../images/bookstore-create-dialog.png | Bin .../bookstore-create-project-angular.png | Bin 0 -> 24546 bytes .../images/bookstore-create-project-mvc.png | Bin 0 -> 181404 bytes .../images/bookstore-create-template.png | Bin .../bookstore-creating-book-list-terminal.png | Bin 0 -> 25327 bytes ...okstore-creating-books-module-terminal.png | Bin 0 -> 23145 bytes .../images/bookstore-database-tables-ef.png | Bin 0 -> 53560 bytes .../bookstore-database-tables-mongodb.png | Bin 0 -> 42687 bytes .../images/bookstore-edit-modal.png | Bin .../images/bookstore-empty-new-book-modal.png | Bin .../bookstore-final-actions-dropdown.png | Bin 0 -> 13747 bytes .../images/bookstore-generate-state-books.png | Bin 0 -> 17624 bytes .../images/bookstore-homepage.png | Bin .../images/bookstore-index-js-file-v2.png | Bin .../bookstore-initial-book-list-page.png | Bin 0 -> 11811 bytes ...okstore-initial-books-page-with-layout.png | Bin 0 -> 10922 bytes .../bookstore-localization-files-v2.png | Bin 0 -> 6123 bytes .../images/bookstore-menu-items.png | Bin .../bookstore-migrations-applied-angular.png | Bin 0 -> 69174 bytes .../bookstore-migrations-applied-mvc.png | Bin 0 -> 199590 bytes .../images/bookstore-new-book-button.png | Bin .../images/bookstore-new-book-form-v2.png | Bin .../images/bookstore-new-book-form.png | Bin .../images/bookstore-new-menu-item.png | Bin 0 -> 6087 bytes ...bookstore-open-package-manager-console.png | Bin 0 -> 123776 bytes .../bookstore-pmc-add-book-migration-v2.png | Bin 0 -> 34181 bytes .../bookstore-pmc-add-book-migration.png | Bin .../bookstore-service-terminal-output.png | Bin 0 -> 17888 bytes .../bookstore-solution-structure-angular.png | Bin 0 -> 11845 bytes .../bookstore-solution-structure-mvc.png} | Bin .../bookstore-start-project-angular.png | Bin 0 -> 40858 bytes .../images/bookstore-start-project-mvc.png | Bin 0 -> 144467 bytes .../images/bookstore-swagger-api.png | Bin .../bookstore-swagger-book-dto-properties.png | Bin 0 -> 44547 bytes .../en/Tutorials/images/bookstore-swagger.png | Bin 0 -> 829976 bytes .../images/bookstore-test-explorer.png | Bin ...ookstore-test-js-proxy-getlist-network.png | Bin .../bookstore-test-js-proxy-getlist.png | Bin .../bookstore-test-projects-angular.png | Bin 0 -> 13218 bytes .../bookstore-test-projects-mvc.png} | Bin .../images/bookstore-test-projects-v2.png | Bin 0 -> 6864 bytes .../images/bookstore-test-projects-v3.png | Bin ...tore-update-database-after-book-entity.png | Bin 0 -> 76838 bytes .../images/bookstore-user-management.png | Bin .../bookstore-visual-studio-solution-v3.png | Bin 0 -> 12919 bytes .../images/mozilla-self-signed-cert-error.png | Bin 0 -> 42949 bytes docs/en/Tutorials/part-3.md | 198 +++ docs/en/docs-nav.json | 17 +- docs/en/docs-params.json | 28 + 89 files changed, 2830 insertions(+), 2505 deletions(-) delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-actions-buttons.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-angular-file-tree.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-book-list.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-creating-book-list-terminal.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-creating-books-module-terminal.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-final-actions-dropdown.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-initial-book-list-page.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-initial-books-page-with-layout.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-initial-books-page.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-service-terminal-output.png delete mode 100644 docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-book-list.png delete mode 100644 docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-localization-files-v2.png delete mode 100644 docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-pmc-add-book-migration-v2.png delete mode 100644 docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-swagger.png delete mode 100644 docs/en/Tutorials/Index.md create mode 100644 docs/en/Tutorials/Part-1.md create mode 100644 docs/en/Tutorials/Part-2.md create mode 100644 docs/en/Tutorials/images/bookstore-actions-buttons.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-add-create-dialog-v2.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-add-edit-dialog.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-add-index-page-v2.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-angular-file-tree.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-appservice-tests.png (100%) rename docs/en/Tutorials/{Angular => }/images/bookstore-backend-solution-v2.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-book-list-2.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-book-list.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-books-table-actions.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-books-table.png (100%) rename docs/en/Tutorials/{Angular => }/images/bookstore-confirmation-popup.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-create-dialog-2.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-create-dialog.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-create-project-angular.png create mode 100644 docs/en/Tutorials/images/bookstore-create-project-mvc.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-create-template.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-creating-book-list-terminal.png create mode 100644 docs/en/Tutorials/images/bookstore-creating-books-module-terminal.png create mode 100644 docs/en/Tutorials/images/bookstore-database-tables-ef.png create mode 100644 docs/en/Tutorials/images/bookstore-database-tables-mongodb.png rename docs/en/Tutorials/{Angular => }/images/bookstore-edit-modal.png (100%) rename docs/en/Tutorials/{Angular => }/images/bookstore-empty-new-book-modal.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-final-actions-dropdown.png create mode 100644 docs/en/Tutorials/images/bookstore-generate-state-books.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-homepage.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-index-js-file-v2.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-initial-book-list-page.png create mode 100644 docs/en/Tutorials/images/bookstore-initial-books-page-with-layout.png create mode 100644 docs/en/Tutorials/images/bookstore-localization-files-v2.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-menu-items.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-migrations-applied-angular.png create mode 100644 docs/en/Tutorials/images/bookstore-migrations-applied-mvc.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-new-book-button.png (100%) rename docs/en/Tutorials/{Angular => }/images/bookstore-new-book-form-v2.png (100%) rename docs/en/Tutorials/{Angular => }/images/bookstore-new-book-form.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-new-menu-item.png create mode 100644 docs/en/Tutorials/images/bookstore-open-package-manager-console.png create mode 100644 docs/en/Tutorials/images/bookstore-pmc-add-book-migration-v2.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-pmc-add-book-migration.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-service-terminal-output.png create mode 100644 docs/en/Tutorials/images/bookstore-solution-structure-angular.png rename docs/en/Tutorials/{AspNetCore-Mvc/images/bookstore-visual-studio-solution-v3.png => images/bookstore-solution-structure-mvc.png} (100%) create mode 100644 docs/en/Tutorials/images/bookstore-start-project-angular.png create mode 100644 docs/en/Tutorials/images/bookstore-start-project-mvc.png rename docs/en/Tutorials/{Angular => }/images/bookstore-swagger-api.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-swagger-book-dto-properties.png create mode 100644 docs/en/Tutorials/images/bookstore-swagger.png rename docs/en/Tutorials/{Angular => }/images/bookstore-test-explorer.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-test-js-proxy-getlist-network.png (100%) rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-test-js-proxy-getlist.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-test-projects-angular.png rename docs/en/Tutorials/{AspNetCore-Mvc/images/bookstore-test-projects-v2.png => images/bookstore-test-projects-mvc.png} (100%) create mode 100644 docs/en/Tutorials/images/bookstore-test-projects-v2.png rename docs/en/Tutorials/{Angular => }/images/bookstore-test-projects-v3.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-update-database-after-book-entity.png rename docs/en/Tutorials/{AspNetCore-Mvc => }/images/bookstore-user-management.png (100%) create mode 100644 docs/en/Tutorials/images/bookstore-visual-studio-solution-v3.png create mode 100644 docs/en/Tutorials/images/mozilla-self-signed-cert-error.png create mode 100644 docs/en/Tutorials/part-3.md create mode 100644 docs/en/docs-params.json diff --git a/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md b/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md index eec70c5566..a9cdb9b2af 100644 --- a/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md +++ b/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md @@ -12,7 +12,7 @@ Finally, ABP has a **SPA UI** option with the latest [Angular](https://angular.i * Created Angular UI packages for the modules like account, identity and tenant-management. * Created a minimal startup template that authenticates using IdentityServer and uses the ASP.NET Core backend. This template uses the packages mentioned above. * Worked on the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) and the [download page](https://abp.io/get-started) to be able to generate projects with the new UI option. -* Created a [tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Angular/Part-I) to jump start with the new UI option. +* Created a [tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=NG) to jump start with the new UI option. We've created the template, document and infrastructure based on the latest Angular tools and trends: diff --git a/docs/en/Getting-Started-Angular-Template.md b/docs/en/Getting-Started-Angular-Template.md index d6d3b84be8..0fe6a62b04 100644 --- a/docs/en/Getting-Started-Angular-Template.md +++ b/docs/en/Getting-Started-Angular-Template.md @@ -123,4 +123,4 @@ The startup template includes the **identity management** and **tenant managemen ### What's Next? -* [Application development tutorial](Tutorials/Angular/Part-I.md) +* [Application development tutorial](Tutorials/Part-1.md?UI=NG) diff --git a/docs/en/Getting-Started-AspNetCore-MVC-Template.md b/docs/en/Getting-Started-AspNetCore-MVC-Template.md index 563ce0182d..fd8ef3a81a 100644 --- a/docs/en/Getting-Started-AspNetCore-MVC-Template.md +++ b/docs/en/Getting-Started-AspNetCore-MVC-Template.md @@ -101,4 +101,4 @@ The startup template includes the **identity management** and **tenant managemen ### What's Next? -* [Application development tutorial](Tutorials/AspNetCore-Mvc/Part-I.md) +* [Application development tutorial](Tutorials/Part-1.md?UI=MVC) diff --git a/docs/en/Startup-Templates/Application.md b/docs/en/Startup-Templates/Application.md index 1fbf1be8e2..d25feb490a 100644 --- a/docs/en/Startup-Templates/Application.md +++ b/docs/en/Startup-Templates/Application.md @@ -5,8 +5,8 @@ This template provides a layered application structure based on the [Domain Driven Design](../Domain-Driven-Design.md) (DDD) practices. This document explains the solution structure and projects in details. If you want to start quickly, follow the guides below: * See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) to create a new solution and run it for this template (uses MVC as the UI framework and Entity Framework Core as the database provider). -* See the [ASP.NET Core MVC Application Development Tutorial](../Tutorials/AspNetCore-Mvc/Part-I.md) to learn how to develop applications using this template (uses MVC as the UI framework and Entity Framework Core as the database provider). -* See the [Angular Application Development Tutorial](../Tutorials/Angular/Part-I.md) to learn how to develop applications using this template (uses Angular as the UI framework and MongoDB as the database provider). +* See the [ASP.NET Core MVC Application Development Tutorial](../Tutorials/Part-1.md?UI=MVC) to learn how to develop applications using this template (uses MVC as the UI framework and Entity Framework Core as the database provider). +* See the [Angular Application Development Tutorial](../Tutorials/Part-1.md?UI=NG) to learn how to develop applications using this template (uses Angular as the UI framework and MongoDB as the database provider). ## How to Start With? @@ -270,4 +270,4 @@ The files under the `angular/src/environments` folder has the essential configur ## What's Next? - See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) to create a new solution and run it for this template. -- See the [ASP.NET Core MVC Tutorial](../Tutorials/AspNetCore-Mvc/Part-I.md) to learn how to develop applications using this template. +- See the [ASP.NET Core MVC Tutorial](../Tutorials/Part-1.md?UI=MVC) to learn how to develop applications using this template. diff --git a/docs/en/Tutorials/Angular/Part-I.md b/docs/en/Tutorials/Angular/Part-I.md index 6d5f91bce7..65a7dc5714 100644 --- a/docs/en/Tutorials/Angular/Part-I.md +++ b/docs/en/Tutorials/Angular/Part-I.md @@ -1,659 +1,6 @@ -## Angular Tutorial - Part I +# Tutorials -### About this Tutorial +## Application Development -In this tutorial series, you will build an application that is used to manage a list of books & their authors. **Angular** will be used as the UI framework and **MongoDB** will be used as the database provider. - -This is the first part of the Angular tutorial series. See all parts: - -- **Part I: Create the project and a book list page (this tutorial)** -- [Part II: Create, Update and Delete books](Part-II.md) -- [Part III: Integration Tests](Part-III.md) - -You can access to the **source code** of the application from the [GitHub repository](https://github.com/abpframework/abp/tree/dev/samples/BookStore-Angular-MongoDb). - -### Creating the Project - -Create a new project named `Acme.BookStore` by selecting the Angular as the UI framework and MongoDB as the database provider, create the database and run the application by following the [Getting Started document](../../Getting-Started-Angular-Template.md). - -### Solution Structure (Backend) - -This is how the layered solution structure looks after it's created: - -![bookstore-backend-solution](images/bookstore-backend-solution-v2.png) - -> You can see the [Application template document](../../Startup-Templates/Application.md) to understand the solution structure in details. However, you will understand the basics with this tutorial. - -### Create the Book Entity - -Domain layer in the startup template is separated into two projects: - -- `Acme.BookStore.Domain` contains your [entities](../../Entities.md), [domain services](../../Domain-Services.md) and other core domain objects. -- `Acme.BookStore.Domain.Shared` contains constants, enums or other domain related objects those can be shared with clients. - -Define [entities](../../Entities.md) in the **domain layer** (`Acme.BookStore.Domain` project) of the solution. The main entity of the application is the `Book`. Create a class, named `Book`, in the `Acme.BookStore.Domain` project as shown below: - -```C# -using System; -using Volo.Abp.Domain.Entities.Auditing; - -namespace Acme.BookStore -{ - public class Book : AuditedAggregateRoot - { - public string Name { get; set; } - - public BookType Type { get; set; } - - public DateTime PublishDate { get; set; } - - public float Price { get; set; } - } -} -``` - -- ABP has two fundamental base classes for entities: `AggregateRoot` and `Entity`. **Aggregate Root** is one of the **Domain Driven Design (DDD)** concepts. See [entity document](../../Entities.md) for details and best practices. -- `Book` entity inherits `AuditedAggregateRoot` which adds some auditing properties (`CreationTime`, `CreatorId`, `LastModificationTime`... etc.) on top of the `AggregateRoot` class. -- `Guid` is the **primary key type** of the `Book` entity. - -#### BookType Enum - -Define the `BookType` enum in the `Acme.BookStore.Domain.Shared` project: - -```C# -namespace Acme.BookStore -{ - public enum BookType - { - Undefined, - Adventure, - Biography, - Dystopia, - Fantastic, - Horror, - Science, - ScienceFiction, - Poetry - } -} -``` - -#### Add Book Entity to Your DbContext - -Add a `IMongoCollection` property to the `BookStoreMongoDbContext` inside the `Acme.BookStore.MongoDB` project: - -```csharp -public class BookStoreMongoDbContext : AbpMongoDbContext -{ - public IMongoCollection Books => Collection(); - ... -} -``` - -#### Add Seed (Sample) Data - -This section is optional, but it would be good to have an initial data in the database in the first run. ABP provides a [data seed system](../../Data-Seeding.md). Create a class deriving from the `IDataSeedContributor` in the `.Domain` project: - -```csharp -using System; -using System.Threading.Tasks; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; - -namespace Acme.BookStore -{ - public class BookStoreDataSeederContributor - : IDataSeedContributor, ITransientDependency - { - private readonly IRepository _bookRepository; - - public BookStoreDataSeederContributor(IRepository bookRepository) - { - _bookRepository = bookRepository; - } - - public async Task SeedAsync(DataSeedContext context) - { - if (await _bookRepository.GetCountAsync() > 0) - { - return; - } - - await _bookRepository.InsertAsync( - new Book - { - Name = "1984", - Type = BookType.Dystopia, - PublishDate = new DateTime(1949, 6, 8), - Price = 19.84f - } - ); - - await _bookRepository.InsertAsync( - new Book - { - Name = "The Hitchhiker's Guide to the Galaxy", - Type = BookType.ScienceFiction, - PublishDate = new DateTime(1995, 9, 27), - Price = 42.0f - } - ); - } - } -} - -``` - -`BookStoreDataSeederContributor` simply inserts two books into database if there is no book added before. ABP automatically discovers and executes this class when you seed the database by running the `Acme.BookStore.DbMigrator` project. - -### Create the Application Service - -The next step is to create an [application service](../../Application-Services.md) to manage (create, list, update, delete...) the books. Application layer in the startup template is separated into two projects: - -- `Acme.BookStore.Application.Contracts` mainly contains your DTOs and application service interfaces. -- `Acme.BookStore.Application` contains the implementations of your application services. - -#### BookDto - -Create a DTO class named `BookDto` into the `Acme.BookStore.Application.Contracts` project: - -```C# -using System; -using Volo.Abp.Application.Dtos; - -namespace Acme.BookStore -{ - public class BookDto : AuditedEntityDto - { - public string Name { get; set; } - - public BookType Type { get; set; } - - public DateTime PublishDate { get; set; } - - public float Price { get; set; } - } -} -``` - -- **DTO** classes are used to **transfer data** between the _presentation layer_ and the _application layer_. See the [Data Transfer Objects document](../../Data-Transfer-Objects.md) for more details. -- `BookDto` is used to transfer book data to the presentation layer in order to show the book information on the UI. -- `BookDto` is derived from the `AuditedEntityDto` which has audit properties just like the `Book` class defined above. - -It will be needed to convert `Book` entities to `BookDto` objects while returning books to the presentation layer. [AutoMapper](https://automapper.org) library can automate this conversion when you define the proper mapping. Startup template comes with AutoMapper configured, so you can just define the mapping in the `BookStoreApplicationAutoMapperProfile` class in the `Acme.BookStore.Application` project: - -```csharp -using AutoMapper; - -namespace Acme.BookStore -{ - public class BookStoreApplicationAutoMapperProfile : Profile - { - public BookStoreApplicationAutoMapperProfile() - { - CreateMap(); - } - } -} -``` - -#### CreateUpdateBookDto - -Create a DTO class named `CreateUpdateBookDto` into the `Acme.BookStore.Application.Contracts` project: - -```c# -using System; -using System.ComponentModel.DataAnnotations; - -namespace Acme.BookStore -{ - public class CreateUpdateBookDto - { - [Required] - [StringLength(128)] - public string Name { get; set; } - - [Required] - public BookType Type { get; set; } = BookType.Undefined; - - [Required] - public DateTime PublishDate { get; set; } - - [Required] - public float Price { get; set; } - } -} -``` - -- This DTO class is used to get book information from the user interface while creating or updating a book. -- It defines data annotation attributes (like `[Required]`) to define validations for the properties. DTOs are [automatically validated](../../Validation.md) by the ABP framework. - -Next, add a mapping in `BookStoreApplicationAutoMapperProfile` from the `CreateUpdateBookDto` object to the `Book` entity: - -```csharp -CreateMap(); -``` - -#### IBookAppService - -Define an interface named `IBookAppService` in the `Acme.BookStore.Application.Contracts` project: - -```C# -using System; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; - -namespace Acme.BookStore -{ - public interface IBookAppService : - ICrudAppService< //Defines CRUD methods - BookDto, //Used to show books - Guid, //Primary key of the book entity - PagedAndSortedResultRequestDto, //Used for paging/sorting on getting a list of books - CreateUpdateBookDto, //Used to create a new book - CreateUpdateBookDto> //Used to update a book - { - - } -} -``` - -- Defining interfaces for application services is not required by the framework. However, it's suggested as a best practice. -- `ICrudAppService` defines common **CRUD** methods: `GetAsync`, `GetListAsync`, `CreateAsync`, `UpdateAsync` and `DeleteAsync`. It's not required to extend it. Instead, you could inherit from the empty `IApplicationService` interface and define your own methods manually. -- There are some variations of the `ICrudAppService` where you can use separated DTOs for each method. - -#### BookAppService - -Implement the `IBookAppService` as named `BookAppService` in the `Acme.BookStore.Application` project: - -```C# -using System; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; -using Volo.Abp.Domain.Repositories; - -namespace Acme.BookStore -{ - public class BookAppService : - CrudAppService, - IBookAppService - { - public BookAppService(IRepository repository) - : base(repository) - { - - } - } -} -``` - -- `BookAppService` is derived from `CrudAppService<...>` which implements all the CRUD methods defined above. -- `BookAppService` injects `IRepository` which is the default repository for the `Book` entity. ABP automatically creates default repositories for each aggregate root (or entity). See the [repository document](../../Repositories.md). -- `BookAppService` uses `IObjectMapper` to convert `Book` objects to `BookDto` objects and `CreateUpdateBookDto` objects to `Book` objects. The Startup template uses the [AutoMapper](http://automapper.org/) library as the object mapping provider. You defined the mappings before, so it will work as expected. - -### Auto API Controllers - -You normally create **Controllers** to expose application services as **HTTP API** endpoints. Thus allowing browser or 3rd-party clients to call them via AJAX. ABP can [**automagically**](../../AspNetCore/Auto-API-Controllers.md) configures your application services as MVC API Controllers by convention. - -#### Swagger UI - -The startup template is configured to run the [swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the `Acme.BookStore.HttpApi.Host` application and enter `https://localhost:XXXX/swagger/` (replace XXXX by your own port) as URL on your browser. - -You will see some built-in service endpoints as well as the `Book` service and its REST-style endpoints: - -![bookstore-swagger](images/bookstore-swagger-api.png) - -Swagger has a nice UI to test APIs. You can try to execute the `[GET] /api/app/book` API to get a list of books. - -### Create the Books Page - -In this tutorial; - -- [Angular CLI](https://angular.io/cli) will be used to create modules, components and services -- [NGXS](https://ngxs.gitbook.io/ngxs/) will be used as the state management library -- [Ng Bootstrap](https://ng-bootstrap.github.io/#/home) will be used as the UI component library. -- [Visual Studio Code](https://code.visualstudio.com/) will be used as the code editor (you can use your favorite editor). - -#### Install NPM Packages - -Open a terminal window and go to `angular` folder and then run `yarn` command for installing NPM packages: - -``` -yarn -``` - -#### BooksModule - -Run the following command line to create a new module, named `BooksModule`: - -```bash -yarn ng generate module books --route books --module app.module -``` - -![creating-books-module.terminal](images/bookstore-creating-books-module-terminal.png) - -Run `yarn start`, wait Angular to run the application and open `http://localhost:4200/books` on a browser: - -![initial-books-page](images/bookstore-initial-books-page.png) - -#### Routing - -Open the `app-routing.module.ts` and replace `books` as shown below: - -```js -import { ApplicationLayoutComponent } from '@abp/ng.theme.basic'; - -//... -{ - path: 'books', - component: ApplicationLayoutComponent, - loadChildren: () => import('./books/books.module').then(m => m.BooksModule), - data: { - routes: { - name: 'Books', - } as ABP.Route, - }, -}, -``` - -`ApplicationLayoutComponent` configuration sets the application layout to the new page. If you would like to see your route on the navigation bar (main menu) you must also add the `data` object with `name` property in your route. - -![initial-books-page](images/bookstore-initial-books-page-with-layout.png) - -#### Book List Component - -First, replace the `books.component.html` to the following line to place the router-outlet: - -```html - -``` - -Then run the command below on the terminal in the root folder to generate a new component, named book-list: - -```bash -yarn ng generate component books/book-list -``` - -![creating-books-list-terminal](images/bookstore-creating-book-list-terminal.png) - -Import the `SharedModule` to the `BooksModule` to reuse some components and services defined in: - -```js -import { SharedModule } from '../shared/shared.module'; - -@NgModule({ - //... - imports: [ - //... - SharedModule, - ], -}) -export class BooksModule {} -``` - -Then, update the `routes` in the `books-routing.module.ts` to add the new book-list component: - -```js -import { BookListComponent } from './book-list/book-list.component'; - -const routes: Routes = [ - { - path: '', - component: BooksComponent, - children: [{ path: '', component: BookListComponent }], - }, -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class BooksRoutingModule {} -``` - -![initial-book-list-page](images/bookstore-initial-book-list-page.png) - -#### Create BooksState - -Run the following command in the terminal to create a new state, named `BooksState`: - -```shell -yarn ng generate ngxs-schematic:state books -``` - -This command creates several new files and edits `app.modules.ts` to import the `NgxsModule` with the new state: - -```js -// app.module.ts - -import { BooksState } from './store/states/books.state'; - -@NgModule({ - imports: [ - //... - NgxsModule.forRoot([BooksState]), - ], - //... -}) -export class AppModule {} -``` - -#### Get Books Data from Backend - -First, create data types to map data returning from the backend (you can check swagger UI or your backend API to know the data format). - -Modify the `books.ts` as shown below: - -```js -export namespace Books { - export interface State { - books: Response; - } - - export interface Response { - items: Book[]; - totalCount: number; - } - - export interface Book { - name: string; - type: BookType; - publishDate: string; - price: number; - lastModificationTime: string; - lastModifierId: string; - creationTime: string; - creatorId: string; - id: string; - } - - export enum BookType { - Undefined, - Adventure, - Biography, - Dystopia, - Fantastic, - Horror, - Science, - ScienceFiction, - Poetry, - } -} -``` - -Added `Book` interface that represents a book object and `BookType` enum represents a book category. - -#### BooksService - -Now, create a new service, named `BooksService` to perform HTTP calls to the server: - -```bash -yarn ng generate service books/shared/books -``` - -![service-terminal-output](images/bookstore-service-terminal-output.png) - -Modify `books.service.ts` as shown below: - -```js -import { Injectable } from '@angular/core'; -import { RestService } from '@abp/ng.core'; -import { Books } from '../../store/models'; -import { Observable } from 'rxjs'; - -@Injectable({ - providedIn: 'root', -}) -export class BooksService { - constructor(private restService: RestService) {} - - get(): Observable { - return this.restService.request({ - method: 'GET', - url: '/api/app/book' - }); - } -} -``` - -Added the `get` method to get the list of books by performing an HTTP request to the related endpoint. - -Replace `books.actions.ts` content as shown below: - -```js -export class GetBooks { - static readonly type = '[Books] Get'; -} -``` - -#### Implement the BooksState - -Open the `books.state.ts` and change the file as shown below: - -```js -import { State, Action, StateContext, Selector } from '@ngxs/store'; -import { GetBooks } from '../actions/books.actions'; -import { Books } from '../models/books'; -import { BooksService } from '../../books/shared/books.service'; -import { tap } from 'rxjs/operators'; - -@State({ - name: 'BooksState', - defaults: { books: {} } as Books.State, -}) -export class BooksState { - @Selector() - static getBooks(state: Books.State) { - return state.books.items || []; - } - - constructor(private booksService: BooksService) {} - - @Action(GetBooks) - get(ctx: StateContext) { - return this.booksService.get().pipe( - tap(booksResponse => { - ctx.patchState({ - books: booksResponse, - }); - }), - ); - } -} -``` - -Added the `GetBooks` action that uses the `BookService` defined above to get the books and patch the state. - -> NGXS requires to return the observable without subscribing it, as done in this sample (in the get function). - -#### BookListComponent - -Modify the `book-list.component.ts` as shown below: - -```js -import { Component, OnInit } from '@angular/core'; -import { Store, Select } from '@ngxs/store'; -import { BooksState } from '../../store/states'; -import { Observable } from 'rxjs'; -import { Books } from '../../store/models'; -import { GetBooks } from '../../store/actions'; - -@Component({ - selector: 'app-book-list', - templateUrl: './book-list.component.html', - styleUrls: ['./book-list.component.scss'], -}) -export class BookListComponent implements OnInit { - @Select(BooksState.getBooks) - books$: Observable; - - booksType = Books.BookType; - - loading = false; - - constructor(private store: Store) {} - - ngOnInit() { - this.loading = true; - this.store.dispatch(new GetBooks()).subscribe(() => { - this.loading = false; - }); - } -} -``` - -> See the [Dispatching Actions](https://ngxs.gitbook.io/ngxs/concepts/store#dispatching-actions) and [Select](https://ngxs.gitbook.io/ngxs/concepts/select) on the NGXS documentation for more information on these NGXS features. - -Replace `book-list.component.html` content as shown below: - -```html -
-
-
-
-
- Books -
-
-
-
-
- - - - Book name - Book type - Publish date - Price - - - - - {%{{{ data.name }}}%} - {%{{{ booksType[data.type] }}}%} - {%{{{ data.publishDate | date }}}%} - {%{{{ data.price }}}%} - - - -
-
-``` - -> We've used [PrimeNG table](https://www.primefaces.org/primeng/#/table) in this component. - -The resulting books page is shown below: - -![bookstore-book-list](images/bookstore-book-list.png) - -And this is the folder & file structure by the end of this tutorial: - - - -> This tutorial follows the [Angular Style Guide](https://angular.io/guide/styleguide#file-tree). - -### Next Part - -See the [next part](Part-II.md) of this tutorial. +* [With ASP.NET Core MVC / Razor Pages UI](../Part-1?UI=MVC) +* [With Angular UI](../Part-1?UI=NG) diff --git a/docs/en/Tutorials/Angular/Part-II.md b/docs/en/Tutorials/Angular/Part-II.md index 6d1c563600..65a7dc5714 100644 --- a/docs/en/Tutorials/Angular/Part-II.md +++ b/docs/en/Tutorials/Angular/Part-II.md @@ -1,587 +1,6 @@ -## Angular Tutorial - Part II +# Tutorials -### About this Tutorial +## Application Development -This is the second part of the Angular tutorial series. See all parts: - -- [Part I: Create the project and a book list page](Part-I.md) -- **Part II: Create, Update and Delete books (this tutorial)** -- [Part III: Integration Tests](Part-III.md) - -You can access to the **source code** of the application from the [GitHub repository](https://github.com/abpframework/abp/tree/dev/samples/BookStore-Angular-MongoDb). - -### Creating a New Book - -In this section, you will learn how to create a new modal dialog form to create a new book. - -#### Type Definition - -Create an interface, named `CreateUpdateBookInput` in the `books.ts` as shown below: - -```js -export namespace Books { - //... - export interface CreateUpdateBookInput { - name: string; - type: BookType; - publishDate: string; - price: number; - } -} -``` - -`CreateUpdateBookInput` interface matches the `CreateUpdateBookDto` in the backend. - -#### Service Method - -Open the `books.service.ts` and add a new method, named `create` to perform an HTTP POST request to the server: - -```js -create(createBookInput: Books.CreateUpdateBookInput): Observable { - return this.restService.request({ - method: 'POST', - url: '/api/app/book', - body: createBookInput - }); -} -``` - -- `restService.request` function gets generic parameters for the types sent to and received from the server. This example sends a `CreateUpdateBookInput` object and receives a `Book` object (you can set `void` for request or return type if not used). - -#### State Definitions - -Add the `CreateUpdateBook` action to the `books.actions.ts` as shown below: - -```js -import { Books } from '../models'; - -export class CreateUpdateBook { - static readonly type = '[Books] Create Update Book'; - constructor(public payload: Books.CreateUpdateBookInput) {} -} -``` - -Open `books.state.ts` and define the `save` method that will listen to a `CreateUpdateBook` action to create a book: - -```js -import { ... , CreateUpdateBook } from '../actions/books.actions'; -import { ... , switchMap } from 'rxjs/operators'; -//... -@Action(CreateUpdateBook) -save(ctx: StateContext, action: CreateUpdateBook) { - return this.booksService - .create(action.payload) - .pipe(switchMap(() => ctx.dispatch(new GetBooks()))); -} -``` - -When the `SaveBook` action dispatched, the save method is executed. It call `create` method of the `BooksService` defined before. After the service call, `BooksState` dispatches the `GetBooks` action to get books again from the server to refresh the page. - -#### Add a Modal to BookListComponent - -Open the `book-list.component.html` and add the `abp-modal` to show/hide the modal to create a new book. - -```html - - -

New Book

-
- - - - - - -
-``` - -`abp-modal` is a pre-built component to show modals. While you could use another approach to show a modal, `abp-modal` provides additional benefits. - -Add a button, labeled `New book` to show the modal: - -```html -
-
-
- Books -
-
-
- -
-
-``` - -Open the `book-list.component.ts` and add `isModalOpen` variable and `createBook` method to show/hide the modal. - -```js -isModalOpen = false; - -//... - -createBook() { - this.isModalOpen = true; -} -``` - -![empty-modal](images/bookstore-empty-new-book-modal.png) - -#### Create a Reactive Form - -> [Reactive forms](https://angular.io/guide/reactive-forms) provide a model-driven approach to handling form inputs whose values change over time. - -Add a `form` variable and inject a `FormBuilder` service to the `book-list.component.ts` as shown below (remember add the import statement). - -```js -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; - -form: FormGroup; - -constructor( - //... - private fb: FormBuilder -) {} -``` - -> The [FormBuilder](https://angular.io/api/forms/FormBuilder) service provides convenient methods for generating controls. It reduces the amount of boilerplate needed to build complex forms. - -Add the `buildForm` method to create book form. - -```js -buildForm() { - this.form = this.fb.group({ - name: ['', Validators.required], - type: [null, Validators.required], - publishDate: [null, Validators.required], - price: [null, Validators.required], - }); -} -``` - -- The `group` method of `FormBuilder` (`fb`) creates a `FormGroup`. -- Added `Validators.required` static method that validates the related form element. - -Modify the `createBook` method as shown below: - -```js -createBook() { - this.buildForm(); - this.isModalOpen = true; -} -``` - -#### Create the DOM Elements of the Form - -Open `book-list.component.html` and add the form in the body template of the modal. - -```html - -
-
- * - -
- -
- * - -
- -
- * - -
- -
- * - -
-
-
-``` - -- This template creates a form with Name, Price, Type and Publish date fields. - -> We've used [NgBootstrap datepicker](https://ng-bootstrap.github.io/#/components/datepicker/overview) in this component. - -#### Datepicker Requirements - -You need to import `NgbDatepickerModule` to the `books.module.ts`: - -```js -import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; - -@NgModule({ - imports: [ - // ... - NgbDatepickerModule, - ], -}) -export class BooksModule {} -``` - -Then open the `book-list.component.ts` and add `providers` as shown below: - -```js -import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; - -@Component({ - // ... - providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }], -}) -export class BookListComponent implements OnInit { -// ... -``` - -> The `NgbDateAdapter` converts Datepicker value to `Date` type. See the [datepicker adapters](https://ng-bootstrap.github.io/#/components/datepicker/overview) for more details. - -#### Create the Book Type Array - -Open the `book-list.component.ts` and then create an array, named `bookTypeArr`: - -```js -//... -booksType = Books.BookType; - -bookTypeArr = Object.keys(Books.BookType).filter( - bookType => typeof this.booksType[bookType] === 'number' -); -``` - -The `bookTypeArr` contains the fields of the `BookType` enum. Resulting array is shown below: - -```js -['Adventure', 'Biography', 'Dystopia', 'Fantastic' ...] -``` - -This array was used in the previous form template (in the `ngFor` loop). - - -![new-book-form](images/bookstore-new-book-form.png) - -#### Saving the Book - -Open the `book-list.component.html` and add an `abp-button` to save the form. - -```html - - - - -``` - -This adds a save button to the bottom area of the modal: - -![bookstore-new-book-form-v2](images/bookstore-new-book-form-v2.png) - -Then define a `save` method in the `BookListComponent`: - -```js -//... -import { ..., CreateUpdateBook } from '../../store/actions'; -//... -save() { - if (this.form.invalid) { - return; - } - - this.store.dispatch(new CreateUpdateBook(this.form.value)).subscribe(() => { - this.isModalOpen = false; - this.form.reset(); - }); -} -``` - -### Updating An Existing Book - -#### BooksService - -Open the `books.service.ts` and then add the `getById` and `update` methods. - -```js -getById(id: string): Observable { - return this.restService.request({ - method: 'GET', - url: `/api/app/book/${id}` - }); -} - -update(updateBookInput: Books.CreateUpdateBookInput, id: string): Observable { - return this.restService.request({ - method: 'PUT', - url: `/api/app/book/${id}`, - body: updateBookInput - }); -} -``` - -#### CreateUpdateBook Action - -Open the `books.actions.ts` and add `id` parameter to the `CreateUpdateBook` action: - -```js -export class CreateUpdateBook { - static readonly type = '[Books] Create Update Book'; - constructor(public payload: Books.CreateUpdateBookInput, public id?: string) {} -} -``` - -Open `books.state.ts` and modify the `save` method as show below: - -```js -@Action(CreateUpdateBook) -save(ctx: StateContext, action: CreateUpdateBook) { - let request; - - if (action.id) { - request = this.booksService.update(action.payload, action.id); - } else { - request = this.booksService.create(action.payload); - } - - return request.pipe(switchMap(() => ctx.dispatch(new GetBooks()))); -} -``` - -#### BookListComponent - -Inject `BooksService` dependency by adding it to the `book-list.component.ts` constructor and add a variable named `selectedBook`. - -```js -import { BooksService } from '../shared/books.service'; -//... -selectedBook = {} as Books.Book; - -constructor( - //... - private booksService: BooksService -) -``` - -`booksService` is used to get the editing book to prepare the form. Modify the `buildForm` method to reuse the same form while editing a book. - -```js -buildForm() { - this.form = this.fb.group({ - name: [this.selectedBook.name || '', Validators.required], - type: this.selectedBook.type || null, - publishDate: this.selectedBook.publishDate ? new Date(this.selectedBook.publishDate) : null, - price: this.selectedBook.price || null, - }); -} -``` - -Add the `editBook` method as shown below: - -```js - editBook(id: string) { - this.booksService.getById(id).subscribe(book => { - this.selectedBook = book; - this.buildForm(); - this.isModalOpen = true; - }); - } -``` - -Added `editBook` method to get the editing book, build the form and show the modal. - -Now, add the `selectedBook` definition to `createBook` method to reuse the same form while creating a new book: - -```js - createBook() { - this.selectedBook = {} as Books.Book; - //... - } -``` - -Modify the `save` method to pass the id of the selected book as shown below: - -```js -save() { - if (this.form.invalid) { - return; - } - - this.store.dispatch(new CreateUpdateBook(this.form.value, this.selectedBook.id)) - .subscribe(() => { - this.isModalOpen = false; - this.form.reset(); - }); -} -``` - -#### Add "Actions" Dropdown to the Table - -Open the `book-list.component.html` and add modify the `p-table` as shown below: - -```html - - - - Actions - Book name - Book type - Publish date - Price - - - - - -
- -
- -
-
- - {%{{{ data.name }}}%} - {%{{{ booksType[data.type] }}}%} - {%{{{ data.publishDate | date }}}%} - {%{{{ data.price }}}%} - -
-
-``` - -- Added a `th` for the "Actions" column. -- Added `button` with `ngbDropdownToggle` to open actions when clicked the button. - -> We've used to [NgbDropdown](https://ng-bootstrap.github.io/#/components/dropdown/examples) for the dropdown menu of actions. - -The final UI looks like: - -![actions-buttons](images/bookstore-actions-buttons.png) - -Update the modal header to change the title based on the current operation: - -```html - -

{%{{{ selectedBook.id ? 'Edit' : 'New Book' }}}%}

-
-``` - -![actions-buttons](images/bookstore-edit-modal.png) - -### Deleting an Existing Book - -#### BooksService - -Open `books.service.ts` and add a `delete` method to delete a book with the `id` by performing an HTTP request to the related endpoint: - -```js -delete(id: string): Observable { - return this.restService.request({ - method: 'DELETE', - url: `/api/app/book/${id}` - }); -} -``` - -#### DeleteBook Action - -Add an action named `DeleteBook` to `books.actions.ts`: - -```js -export class DeleteBook { - static readonly type = '[Books] Delete'; - constructor(public id: string) {} -} -``` - -Open the `books.state.ts` and add the `delete` method that will listen to the `DeleteBook` action to delete a book: - -```js -import { ... , DeleteBook } from '../actions/books.actions'; -//... -@Action(DeleteBook) -delete(ctx: StateContext, action: DeleteBook) { - return this.booksService.delete(action.id).pipe(switchMap(() => ctx.dispatch(new GetBooks()))); -} -``` - -- Added `DeleteBook` to the import list. -- Uses `bookService` to delete the book. - -#### Add a Delete Button - -Open `book-list.component.html` and modify the `ngbDropdownMenu` to add the delete button as shown below: - -```html -
- ... - -
-``` - -The final actions dropdown UI looks like below: - -![bookstore-final-actions-dropdown](images/bookstore-final-actions-dropdown.png) - -#### Delete Confirmation Dialog - -Open `book-list.component.ts` and inject the `ConfirmationService`. - -```js -import { ConfirmationService } from '@abp/ng.theme.shared'; -//... -constructor( - //... - private confirmationService: ConfirmationService -) -``` - -> `ConfirmationService` is a simple service provided by ABP framework that internally uses the PrimeNG. - -Add a delete method to the `BookListComponent`: - -```js -import { ... , DeleteBook } from '../../store/actions'; -import { ... , Toaster } from '@abp/ng.theme.shared'; -//... -delete(id: string, name: string) { - this.confirmationService - .error(`${name} will be deleted. Do you confirm that?`, 'Are you sure?') - .subscribe(status => { - if (status === Toaster.Status.confirm) { - this.store.dispatch(new DeleteBook(id)); - } - }); -} -``` - -The `delete` method shows a confirmation popup and subscribes for the user response. `DeleteBook` action dispatched only if user clicks to the `Yes` button. The confirmation popup looks like below: - -![bookstore-confirmation-popup](images/bookstore-confirmation-popup.png) - -### Next Part - -See the [next part](Part-III.md) of this tutorial. +* [With ASP.NET Core MVC / Razor Pages UI](../Part-1?UI=MVC) +* [With Angular UI](../Part-1?UI=NG) diff --git a/docs/en/Tutorials/Angular/Part-III.md b/docs/en/Tutorials/Angular/Part-III.md index 6601bfb938..65a7dc5714 100644 --- a/docs/en/Tutorials/Angular/Part-III.md +++ b/docs/en/Tutorials/Angular/Part-III.md @@ -1,178 +1,6 @@ -## Angular Tutorial - Part III +# Tutorials -### About this Tutorial +## Application Development -This is the third part of the Angular tutorial series. See all parts: - -- [Part I: Create the project and a book list page](Part-I.md) -- [Part II: Create, Update and Delete books](Part-II.md) -- **Part III: Integration Tests (this tutorial)** - -This part covers the **server side** tests. You can access to the **source code** of the application from the [GitHub repository](https://github.com/abpframework/abp/tree/dev/samples/BookStore-Angular-MongoDb). - -### Test Projects in the Solution - -There are multiple test projects in the solution: - -![bookstore-test-projects](images/bookstore-test-projects-v3.png) - -Each project is used to test the related application project. Test projects use the following libraries for testing: - -* [xunit](https://xunit.github.io/) as the main test framework. -* [Shoudly](http://shouldly.readthedocs.io/en/latest/) as an assertion library. -* [NSubstitute](http://nsubstitute.github.io/) as a mocking library. - -### Adding Test Data - -Startup template contains the `BookStoreTestDataSeedContributor` class in the `Acme.BookStore.TestBase` project that creates some data to run tests on. - -Change the `BookStoreTestDataSeedContributor` class as show below: - -````C# -using System; -using System.Threading.Tasks; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; -using Volo.Abp.Guids; - -namespace Acme.BookStore -{ - public class BookStoreTestDataSeedContributor - : IDataSeedContributor, ITransientDependency - { - private readonly IRepository _bookRepository; - private readonly IGuidGenerator _guidGenerator; - - public BookStoreTestDataSeedContributor( - IRepository bookRepository, - IGuidGenerator guidGenerator) - { - _bookRepository = bookRepository; - _guidGenerator = guidGenerator; - } - - public async Task SeedAsync(DataSeedContext context) - { - await _bookRepository.InsertAsync( - new Book - { - Id = _guidGenerator.Create(), - Name = "Test book 1", - Type = BookType.Fantastic, - PublishDate = new DateTime(2015, 05, 24), - Price = 21 - } - ); - - await _bookRepository.InsertAsync( - new Book - { - Id = _guidGenerator.Create(), - Name = "Test book 2", - Type = BookType.Science, - PublishDate = new DateTime(2014, 02, 11), - Price = 15 - } - ); - } - } -} -```` - -* Injected `IRepository` and used it in the `SeedAsync` to create two book entities as the test data. -* Used `IGuidGenerator` service to create GUIDs. While `Guid.NewGuid()` would perfectly work for testing, `IGuidGenerator` has additional features especially important while using real databases (see the [Guid generation document](../../Guid-Generation.md) for more). - -### Testing the BookAppService - -Create a test class named `BookAppService_Tests` in the `Acme.BookStore.Application.Tests` project: - -````C# -using System.Threading.Tasks; -using Shouldly; -using Volo.Abp.Application.Dtos; -using Xunit; - -namespace Acme.BookStore -{ - public class BookAppService_Tests : BookStoreApplicationTestBase - { - private readonly IBookAppService _bookAppService; - - public BookAppService_Tests() - { - _bookAppService = GetRequiredService(); - } - - [Fact] - public async Task Should_Get_List_Of_Books() - { - //Act - var result = await _bookAppService.GetListAsync( - new PagedAndSortedResultRequestDto() - ); - - //Assert - result.TotalCount.ShouldBeGreaterThan(0); - result.Items.ShouldContain(b => b.Name == "Test book 1"); - } - } -} -```` - -* `Should_Get_List_Of_Books` test simply uses `BookAppService.GetListAsync` method to get and check the list of users. - -Add a new test that creates a valid new book: - -````C# -[Fact] -public async Task Should_Create_A_Valid_Book() -{ - //Act - var result = await _bookAppService.CreateAsync( - new CreateUpdateBookDto - { - Name = "New test book 42", - Price = 10, - PublishDate = DateTime.Now, - Type = BookType.ScienceFiction - } - ); - - //Assert - result.Id.ShouldNotBe(Guid.Empty); - result.Name.ShouldBe("New test book 42"); -} -```` - -Add a new test that tries to create an invalid book and fails: - -````C# -[Fact] -public async Task Should_Not_Create_A_Book_Without_Name() -{ - var exception = await Assert.ThrowsAsync(async () => - { - await _bookAppService.CreateAsync( - new CreateUpdateBookDto - { - Name = "", - Price = 10, - PublishDate = DateTime.Now, - Type = BookType.ScienceFiction - } - ); - }); - - exception.ValidationErrors - .ShouldContain(err => err.MemberNames.Any(mem => mem == "Name")); -} -```` - -* Since the `Name` is empty, ABP throws an `AbpValidationException`. - -Open the **Test Explorer Window** (use Test -> Windows -> Test Explorer menu if it is not visible) and **Run All** tests: - -![bookstore-appservice-tests](images/bookstore-test-explorer.png) - -Congratulations, green icons show that tests have been successfully passed! \ No newline at end of file +* [With ASP.NET Core MVC / Razor Pages UI](../Part-1?UI=MVC) +* [With Angular UI](../Part-1?UI=NG) diff --git a/docs/en/Tutorials/Angular/images/bookstore-actions-buttons.png b/docs/en/Tutorials/Angular/images/bookstore-actions-buttons.png deleted file mode 100644 index aecf31c1ad734ab6fd344ddedb4d4e36ca2279f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32739 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 diff --git a/docs/en/Tutorials/Angular/images/bookstore-angular-file-tree.png b/docs/en/Tutorials/Angular/images/bookstore-angular-file-tree.png deleted file mode 100644 index be05ad3e4ad9575ea066440c2b06db103bc5b4fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103142 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 diff --git a/docs/en/Tutorials/Angular/images/bookstore-creating-books-module-terminal.png b/docs/en/Tutorials/Angular/images/bookstore-creating-books-module-terminal.png deleted file mode 100644 index c74b37b1b5f176ba5ebeaee71279bedf8aa201b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49301 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 F`(JMV1bF}e diff --git a/docs/en/Tutorials/Angular/images/bookstore-initial-book-list-page.png b/docs/en/Tutorials/Angular/images/bookstore-initial-book-list-page.png deleted file mode 100644 index 0b345ac61dc82fb7be5b3ebaf3dd70adb8aba29f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50062 zcma&O1ys~q*FTPQ3X;;Oba$t8gCLE7Fm%VzARr>3AT2o{E#2MS(#_C0bTh<%y!U;d z`>geQ|6W|nS;z0`efHV$+4~r(rXq`lPJ#{x2ZtpuC-nvn4mBPQ?g<+zGVBYv<7_b; z9HzXLq@q$HJ^vxB*nEdUNqE;LRXMMtBLFiroByyX+btdC1l4De5~KK^>0z&L{{ zPnGfUJB}2DH5|RzP^$G)aTt9)q4-o-{qF9M8N&fdT}`biX>HrQM)@a(m)?iIhd$uC z)2+e8huFa;cUCw-H{pD4%1NYj@i)|pUrz_PH7bp6TU_)WV3ZSFzgro0R z18j98ZZ zfrtdFjJR_p`nLA@R}m(Cvf<$82RM~d2A#@Ng@!Lm}dxf6J(#qOtWwJ-jR53CBj#mU=`nObcpUo&8c}p)^t{DsK=> z_+Bi7`lZxRr1C&~FrD=+0O@4KtBmF)2cJriO_)?)6iJ$hPa31Y>1X|5Twp(Yq?#y$ zc`ac8JGYXd5Kx+4esm(-O+NfJE{~0o!YLm2J^$P9lo^%!lD4#LDr1FR2;s}0G*8!@ z#(sP>b4&BkVr65LNX32!{~iwIBRs8|_z-+B713v*8@-!lwsR%^SeA|&#jbODwSZr{ zx@JPnOMz(WEx{xkQ&)adQum?~v695HhJV;r7e#(zJQrS0katx}B{BnbT!{P!8OLV|{mSHr=rnxOM{Z3(j&Vnq`DRzE@=xv-1mBR6IJ$x3~rchoyn}rnzXnP z2aaI7Rj40P2aa?Zb?+E%sg)8jh#d!MRf1CvW!yMH+EHwvRf!#i8F3>Ww-9kp9BT%% zI>6AFjUP_0RoxN&7LhfOX&Jc|!(A2I1No-ShW#@YDq6-X%ud8IDF_ZxCxXd~0J-P5 zLDVmI#qtsI7a|KB(HJ1qr z@{n>hUXri0nHr;HuE=^}@fic7)|C{CLA;r{zrwe%DlvRNJvD|KZ~wy1G)Q1-LdHxn z&|1zx%!^&n`m@xl5X~m&;gqKkW3OXrMJgqL%SpR7=+!ZPO5{lE*2=&Ui4W1z7f@Tt z3ih$zEna{M`>R@eo+AXfsmOq-P}fmH06Zb12$vUPf6;xl-Meh zkXevhkQJ7PPy_K$cu^I z=}h3scg=szc#Y=y?T2Dn=9T&?1AISoKYBk_Tr&UlIy*&KdSV0B7$3@{oPazT`;Qj?1^ z&b2LlwsD4hV|9aYqi^@=LdUMSTHL!CSOl!Nc)PzPh)*s=UOmj6`X-ezHApbQ?Z%a% z{-U1DFzrBiQE%~8eT^&1*>kT0uVXJHuYoh*p5ZU=pQ>Xu)7axg+X*`k<6=eNq1NZT zm`{U7u0EBeI>nEgigP=%FO#g3Xp%s9w%ND&Ciuu4zFX_O*Rk;!EFD1QD(71z*&r=q z7c_Pq-@c)|0kCNl)n@c{OJ^ z2T$1|$(~chW{z*pxbngBemiUwMdrc!Q<6Y3P0|qWyg9JXwsoOhxZS|Ix$U;n6BHaJ zT`FDNr5CvSl)&XEnV3l1uXFX}cW4Ujf`o5{x z3v}*F`V(t_cHX>5xk0(5DBG@ZpKM-c-e{j5$Sf4K=+)o?bbydU#vw%WH8Wyv?7(Hg zSV3;V1(z%#WPxGFLiff4DcAP`8v=H&^{Zb5y#>NkY*N`8(pi^S-zR)!O*KU|_34r8 zo`|g5P;db>5H|4Ei;~%J^O{3`l(CqCA}h!fIP52DUDibFJnJ?Z?A#mniVrC^ntPju z?y^HFP{5f}YxQ)CTnjGE76n`3$E<6?YkXf@_PdV4&h;RZ2j`>nJ^GuA>x+A)doep2 zTQ1>%Rs~}g)6`3vt4~+Mmm<5+;gR{0-op=I(0%c}=Y7K+NX79xRZ6MvYxfUsaBRjl z;@VVP>|BnD#@gTB;;`k3ZmX9nmr{Ai9^qBv2_-az+zEHGND(^ouVeK@awWKM;$wV8 zEkfN#9miHgD?szcu_sT%TYA1kxkA7pv}#8Ef>Y4>?K(@bK*EUK@`dcR)X-N!Jmqke zu;NfZ{57&y;a1_&rkU@jJD0*M!ectCI)gmyZ*A1(8cX{bBS=&A;#^tJa&EV>SbmLmDAko?k=rn3DM_MV zZfGWogI&P(q`pr?qcJB|wN7Bt#JX<+V_YeBLsf{^&_dARrcLR!x!&f%Aay;SD2gu~CstdgH)cRRipw!zRq8zdYul%A&6B`6B zmEZX+4L4@oR^Iv|tp^SUzQXmDPg_^YkT#Jw$(@kaW8F_$;WJ(Q;-_0_8$uSP8dpO| z+=>9D3C>*A@9J1>U7cI4;nJ|6U>;?PiZw{u5VqMVq|08(29I=GoLbb3lqFR-4tLZ+ z>h!l>oR)7^jnpI>@wQkgPr5dwL^S8#Z6vf`6GWr#}78L%xE&b90**aWkDY&<{^t?EUAXsAJEut=t zEo`h~w45xS^eRx)b}tDv9B+)TtA4*<;5I&Om`7q%kW5>5L2@7;j~y@ApzivP@Hl>6|5Y{b^!&88-79;hr3(-5-3u3R zMYF?O%@0(lc&bP&k`i?Ih1VeJCg`4+;>WbPnUN&1%d9U{E?(IVS$)Ib) znOd?ok;D}GPAOiEkgH#zV|WO3*>q5qjg(z`(30QfS=RXUh?4NQ6YmY=8r1GD=o{gC z(0TpgRF>_^kpF~hZ!120i71)P(@^j>e3~sps8J}14QgQDwCbH*1x{7*I=~{p#FF>qOxvaZAR%2*@x-GJFAZ<(iLpVzR!HCOp>Q14 zu7d^v`~zA+3)0(FEO9)t*dDiGdAJM7st|=B5=u;QXLfNB5n0VwC$_5CJPE*8aMT4E z841B~YUzHTpOcU%Jtw)*L5XR4+IpP3d#IR=vr^MW=uT5_U6+c~9PN)V1NEy%S-V?@ z`4(u7a=I>XaD+6!|2~m_Lwy7X2ajZ>spG1ntR!gaV8?1==I|cC>S5;yYYhh{>>&s% z+5ucms66a!?Og;tL|*>YLJ(H|{h940)n83qZA4z`D63IPIyeKUcv!hv*Gr$k?{0tX>+k7=e-9?8X5|5})s?cc1K7L3mL|$Az$yIK zH2+V{KMVb@o;v^Z3AzrMnbMHF3_?LS8>iVj)A`w9mq4ks@qq3Q7ivWWD-VDh}@xPsK3?%?1>TP7mf zH)AxMwrn+Ye5P#VY;h=?^!(}=Ax1o6!tzH%G~Bk;7ic&{tIZEk?}p3$;MFJiy>;%f=tCbhn!aGhr zfB5OmFT#XSq^VQ`FcYH8Lf{pE2g`t@Ttf0kocWs<-`=8!#M0!q0zjzvGOZ}F zkcF~L_T&nz$52|Db{Sp~Uo%?EOvp?Yl}gRyNnGP>@dw<5qK}W^)7B+I#{e2`L>ziF z`1u+KKBV|xk61DeJp;UMwxdG-jw1zXtVqBjaf2PSdcWHH@}S)P*ns2T7cL%3n2xU! z>gUB@=W8h5My+3Cmw7hSd@tqV`>!MyXCOf3j5pJfVG!|EAq^N~N>7iro3E}9#-=Xwn_#HDvdVUgps?uB- z)$DR_htgh_i~Re<;{8ZtZiosiSqq5>R5<9i;O0e5Wg-QKD15G-c^_rSDs%}Doy!CF=O*jj_TIZ} z4pv!>=MbGAC@$QS@Y&lUpq$l6AfV`cCE+PF4Y_C&7zR$am~(;IJk zOLb|uOFL1JuX4BZb3s+}hm8Xx@%cS>mxloI@^avI`(@WME+{dFT@^Bu3n~*jxV5OY zI$N5Z51`Snwq=cH`L1C zaZdNlRqg4-B!GYEyG?aLz%k<94|CP`y82GmAuY zKZY-yb0_NY&=ktcL@*FRDmWMkgq8+lx=aqPz?qq~WpFtkHM4_Kskt@fsF;a84SK;iMas z`>~w#lw1&z#u>TpjX?8PVxF<2+7ki)x*cdS!c3}6S9t7ky>*bg#wwpJ`i|e~yteUP5xR$w?F^!aQ z*H|BqW72+#{BT~&#)E`UpC?gd{xyjsA%4F8dj!BEN3Ux4B0SuWm?Ug9F2Sf=pu&RY zZN6Sr5*9hIk;h^5r3od{r^e$Oo9Zs4_v=%7HTI@-DX!(PAz2|)P2Q2lUgx`SFD7DC zkpswA`VsNG4par~vS7zAY`&ina_)Bcg!p1A8E=2D#Jsz3z%EBIp*Wyxsz|@XRQsnU z!)etTg`!JA>^Vic4ZV@*d?U9J-d4n)v^k^zUcy*jzOhzHf`)Iw!$n?r^1TQhrBrzd zQo_PTq<*35;hp5bC7rKj4cIAxMfr&3LBM4bS%S8t@#H5DFo3#V`?fj=`KjYLo>BlK zP4@m=71Ks8E~RF<&#W`_Qp9~emO;ar%sX>HiPQJy%d#wu*9!UQtY@&2R3aq{j949lCE_%4bHr(b>+O*R_MZY+pCJUGo=~84mW>HUIuvy8o>-r zl=!?`Wp0f=Ga@DD0hSuXS@{#wyyX~TF7ufozC|+;?+Z-c(ffE7eJy5y(}_#O83Qpq zmOncM{bpfsn1rsLYP^XqIAwp?QZUt8gM;N;BZ@TvY-2 zREa;%uMArbx-{X1H1EwFvIgy)WJ|SBg(;t#zMks$8|Vp>xlQMXVpQ}a8dcVBNkuj> zz1LSzTp*GdDijTqgW00aA9;=H15E!0CSeiBN1Y&ST*4v7t*a`u(O?je2IuO3OOJMZ#g_r0F{+Igpefp4N}aQ%VYG4Sqe=LfP?R3MSKPn~ zmZ0&I1aQ=?_A>>+;k771C-1FLv-Hx#Fy@~7tVgYwoWx{gdWOeqRcI9%CzG?{^}!^P zh0E4pHB3I%LH&b#Z+7S|+CLtzh$iznJVVa-h_NUIZoX@uC18r5pP{3yxjx;R{dB%( zHn=11 zKO_8)1s$cr?BDZn=0rQ2+%A3LghX72}|fjoso-Gha7~5uYABY6p z$!-A>znG#~d<(P1AO{T(0P?vS?EVZXA$xaX)&u|L7o*3BUt=`LflqZ@;t#eP5rrCz8BP})4&2|B_}9H* zu`{inL>A0#IIQEF-Y59zeEwEDDNu5CKAJ`mve|M!1Sm-)F7~?KAS!wvjK0!HTYR_A z(-xT{_MN-0xas0D2~&SStH|zjQ@Pr?E6h>%2U=XR)zS~?QiV%!7WPt22MT3Wp3PwS zS!Lxf|KsQ`j=djTFw>_xshI4m-diGie7i;OGt9eqHlxjp8kTy&lr#>PPv>qlP7|(% zRtGcn*gkt>0$dHBH(OkFRidkqSnfHOXPz{Z#=xwL4_Yc>z zJx!NOcGI_;KgnRKQ7hjg+p;JKuA_-b{uhKRdZdG3Sfhn{q`6 z$bFI6kW8t@YP>tm&$_VTfC8;%@;H*%xl-h&w*`ao?N75vv5Pz&+ZpyAj@ZPN zpG+mF<)5kNz$PK&yTy0XHsEH%2)jw6>70E^pQC%JULFVm zFIx`K{hTr0S5}wy>`moo5Zp#{}#v-Xeb`I_q6;e zr7-`9XmiJUUrf+4*3cfmG(qL+C1`%FZY#~S=@Kjk;q)FROYmK0(LX?jz>omD9&A!; z0s|oO9liK!Z|0|uG%}S@$dwLvJ>U*Z(gxsuxwet_P>yo)0VmU0d2T#m-3rt9fVc-pl3U zdf##D5_Ti%nTf{@H)D{26H&5B3Tt`i+e?dnD;LMVB(b4G%8Bf(_Z!kHw>4m23x`Gy zj?x`)3n+EBSXNibHHGxSIVja*>?r;4(C+~yK_c^0s#EvQiZ92?HIeP+;9wyw>;gT# z)Gam;(6*;Py{Rmf9eJ1Yh9`6`N*22eofSuBKe?pE8Sp)xW>;$)&~Ke_s;)tsz*C^z z17RYeiq>}w(VAWUFEGCT|O}E|-Ig6z9WxKJG}0^oo3kGwv#9kQwX;EoyL&*9(s?g0v!Fqr45+u`06_~mn3{{1OZis#XaETk=j zf?-*!YrM&3y14kG1Q0Fwhp6@56pP(>j`GD2Uti1dyNMp=-h1nbJPIIaEf58LE_O1f z)1o>wc7T5Sd}FdD3aZuYaJo5k8Y6weZ`$oz1F8t}m5$V)78(K2q5JTUAjMx@Y@0^T z`(6SpmOP;Q?vN~!L5+SzI>6ifWy^-hNr~A=HPReJ06pkkf3u!e^0wstP3E9xi3CvdKH{~c> zm~U!5Pd6QTYnUmNlen>Nd>`)GOZ{Q0xsmvCp<<;jZv>(Xp0y=ncRl&65vZ*BCdYo! zi*-!_s5ZpW19(_6tlaiaUJexXv7$6g2vpMiBs2e$L42)`jshd+JTgrPAf-MIRE_i< z1EkzAe4iF`*%~e@X-=}r>`8gHAc;Joo^BCLCjT~3lg1l>0QtR8AZ>z3-|ID3KYU}}n&$3H?1Q9U&pJues&Ouo#bf4EM`bZr5NgfUb7@=66RuJi0VT zAAbK!k;_jKG%K(9j-g_=qw#f+=cK&$n8;~&;#D_ilAt6*j|Qd+bxjeFDeObY=BDFHcPL?v-H<%Vpq*Hc0veyl zN@q;RMoG(swbE3gqx1_p{O|16gF7Y+*)VKwHWv+E@i*5jHht5d$JaF)0IVD-OVBnm z%+QtOY`s$sU<=iY$r);AW~wltjaWzul=JzZSP5BPC#AREAF0T>&Ncq+R7%hA6-9v4PDrdZ!i8zO_%`8E^_hqVN0%H$eL z;@Fx#mOQCDcfhq(ebPWLF8GY(O=y;oJv3y|t;cSKr}NU3;tv=RjyTl=JZmZSD>*~Z zgK}7LZh2@{JwXo#x;K`Qe=0QH#N?86v6w&NnFz&r7oA#@SJjcRCstSp`KiFOMWe5X zK{eM4$^i{-+uz7-v)(ZE&FMQd0Z7EP3JmJrDAh3PA}lkS#xN&;<}^!jJwX-fj~f-( zoXH4&nx3}|&xbw^!&xlU*S1B?rThE2ttZ&)`vFXS%rTj#{`*zarc=@u-CsdC!!pV( z_cwcvoVtX-Dw9Lh=1-ukOgSS>8TzLrCL;}1_eeY^hn~Fr)~6}HKkJ4-DX_bdIvTg z&Ehm2CBQsUJ)~YY8^pbs-sb0pI`=-I$m}=v$GfRM@YcM$W*gW{{cXyZ8xVFFy~d#j zpRb}toI#el5NJN6Kf{ol7H^Y-+p^dn$8>9^mb5)sFk34bnCgVA2AWw= zYLWgk2NdiC_+(j3S^P{pZAi>2ZaJX_(y z7MZn-8MiZP?6)^nWboupU^}-9NRga1hI+UEB-L z9!pHE8(yraI-tau-3)_J`GvR{-~2w9DS&h6{&L&2+EU#-F~PCpWy&`|%RNG%2&2d9WP%ZEds8y`KIhC8 zCrkfR&Wk=e1NqX^ebNBztB`w!O{f&6FVTd$mABuW#Y5}HT~4;)&>m<1dRo|h*wzM|VOpv)?b0q!hti|F z#(7TvTsGUs*_$;JYD)6w8|Dz;%D1}aRaZ#koxkX~Hgo|q(Sl{g{ASdkr!XXIE3p?O z{v$m)Un6(ZVXbMxrsET&Z3%|GLb5C5j!lB5wXGvK{O=nbdtj0sD>wZ8%lekz{tCEm zKNGkQd2$5uyJ4s)zHl*9YpNUYNT2#4ed?IJedA~%N~{ z%Xl4y6t|7PpyM5&KOpx@`Q7xzTI4Ly?Pa!}>o23b-8bGV!9=DCBbLi8u#f`~Qr0uW zr5ah)L+L&7gXSH&PkEiKBg9EkazIt=n&0Y|ENg>Y{ZEIM`>7%r*xCe7(k*sbSQLh+ z)9Fy_)bYtt{k+gP)KOwVs>*tnIB@DNg}n0Yw7$w@fxO6J z$s(UA-ZmxH2X5P$UO~5mXhrOb1jFkzRndF;9ub2Pz{-wGYXGnTHfm-Z(I z#{>yQIrMYv?hlwk2RcyWv5ip6PtyQ;y>6=F()9ccoU_U&cQH_p`@ydnwF(l%hOm^4H-hPwRG_! zTexWda1D=51p?)5c?1p%`#gzT=Ko z`XtYmMik)_aApGVU0|a!O5kFDV8&8fjEH%xLVNR$-{iKIUG0Tm=92Hz(jaUBZiCyg zaJHFfn(&TmDZJ4_LM#KB2$0|H3-uaf-F-o~4!2R`XsoDZd{Eyj$aB6?;}*!6%xF3m zxX83e#c!+`%6j?6YU6~yLo?%b*OBN_Igik1=|n#tjbEDfMPAh3&3vi3!pn;^o!el^ zq=d)5J|EY`S`%wLG9Da0L9xPN!1if1-_UaTwbcDrOj{xGH_ZXQUUT;Od6XTzAty5QOno zZ4{xHdkh9HoVu^bd+`9XFWc|%gu zUaF1AYa-pvZ~kb7E+pt!?5=V`g;ao%mMQQeX4=@t4`z+|dD&f+zZ^|Zl7j9;1M=KB zl_%CuHj^EY#q?T0ObpKFliG8wPY?nRundu7?hN}vhC3@w zITLH2WonHAn&j})f7K~!le%6lJI-qxdCtPZjHJVK$vOmR2HR6j4KUE=O0Ph($a)mY zLZb9z%Pa(=GEc4SJ&x_@FC-ZjRopL=O|s^^1gRstlLA4sg1~-EW_8|}h5iLgZ$P5D zR-$G4=Xhw&)_9HO4n>oUPdM_?6=1aIh85wn!{|P*twAfIN%Q{J!5YCp!q&n!nm++caPZfJj@gbUi+mg84B;B=t7BxEKbR)P zuZfJzvDa^?VgeaDFPd+DGPNU(`i5YHd%h-Cd^2f2_$}d!5YV4fM#1Q59uKi2$i3CWYBk8L>2HeP%mUUjn%DA2zzI@nLON?PH8Y z*3>NdbS!z?O_p*ihCJQxxL1wvWt3G5)%s~LxMU3j)1N*qdPAL?!ufK?3icy3-s@gb zuKd&6}&q!9aa+My{N~@Ub`mqx>(FbO~DjxdG6kQ38imbDYI z6n}7R*lz9!?h;lnHh?Vqs#Cmsg1=^9g#%`7TF2#^(OVoL+*O~q5o@-35LN47Q`}g) zI>u`c*dRGD_-*EF@f*NEoBb1`2SJ1T+f%lW<4GQ?ePt`Rvlgkuv7Tr|X37h|d9lD~ zq5iyO1fojo$$khkE(*mAogWw95qO5RfqR}#HUyvTIiIKy(@=K8ZNFaiAjQ>XNb|*< zO`*9KTFicN?1;;V$d>l3*n?-nSISF+BbP1mnvj7^JVxy`eeTSVc)Ph+;@+&C4iv00 z$@Zx%tBQ2YP=%d|FR}ZxyPQr7FxSBIelUeYWZ}@Jq#5@DTy3XcYk-H|$#3NW{P0)k z3oH{T{9cgm`)rwM!%(siodK8g**1H}C!@SViV&GV?wr~arsMr_RZ%n|x1Bi_`Vm~# z-X#9xtQh4s6>BC#995tANb{j2{W|B3z;m!~vNv%`dJHtz7y5Ln*bvAbYqV6Rv6asK z1q8aWy0~U=lx*X$?#FZ<>+9$^MJKHHccl8!7YvaSE0!G(ooGj zofj$RZ8|IPw0}+qLT6r2 za48Os+Jf*{BUu}-bCLt^EECJ)EFZdNVHsLhmkZt?L(i^_Hj_v(zwb;vV*{e!&rH~H zz-6W=q}-0i{BR`_rst8>Jrv#x-CrmOV$syiBSR>?eu<_Ccjc&pO#0=V#X+K4Eq+ao zF}Z1ev?*yPqq4jnM=NcO5vQGak+an9kd5Nl?k6Z@#J z&>kP|WMYO6a(5|KI_t8jqfA6S-s10{0QlkQK??(F()S(PXqubuZ%C)gBtwiZmV>a% zQ79Y5X8d4)46o&{)^yB>no*ZynDV(+4(h2p-JCDeRrI=mm_&-+7(rX(DsRrlRriw} z%7b300NW_~`7^ZgowKQQsB9`;daL!tMrHPVY{N$Xu9mL+!`a@>0ukV*`7Sqk;MbcXJ#$*T z)DhB>CX$LK&UnifbjDGRkcP|jIv4YhS^Fd&8^Xd<(jm7tp#rU zt|`pB1Wr!2^r^>7g*=>ZXwSjoXXKa>Hp|}P4}NW`xB0$j$8DY7-0wbWnzpy~)VAjtXwQb`p|3{0AE zZGm!1CzTNN>HN6g}6Z;IYk^}qAHrXdxCTv5rr z*5!m{<1qKIp6QY9!FxtmZP9(H;IK&935+K}gbK_cWo^?n`ySnUR~xt8UUf-`eik@ljbUAG=yAAR$0sb_(Kt-OIV1;qwVywkykoWv z+$iaLUx~6y3;DRLN)>Dbs%gHKQ@#kjjZ587ChC3j?P6%!sLokgIS7u(j&FTt%{CiD zX|x&Ncx-ghLDYkGwrX#|$m=-RN0)GYVLSX!%o8geFfqA94?iRYa4K#-341x?va=A( z$yaHgYIyU0rCplWZFgeKlf%j4j+Br7t}9^{p&1?D^E&t#rpfN@B||8P5Yw)d@s&7R z;~KAj`?NQmC~*d^$2840p&k?B-i-57e67$HSxPMI(E@EY@9j2}A_s8uO8Elqgz8;Y zs>2*O)+e_3=nmtib{^~Ir_~Xkdc(yWcpg;TAo?6G(x`+Pv0u~~;?xn?b9J5sTI2K} zbAhN`-dr)uI)0pD8t*HrSv1i$bgMEqokJoruykm;Q;BfVkoi&r_UvJG2Jqi{_MpIR zFZj$ic_)A{DO~i4_MZ>2<1ThzCJMOZG+bmHoSy*NZRVHZsfru!ksCIX2F0;kQvGj( z2UL#NXL6MS1VZQdiZKTgEmBP#nh27MquNJLk_*0zxAKF)J~=k@#* zSY{*)?3J!VLwb5$&Of?wov3x4937ia?KKPwVguVyM`@(Rd@p7#<^>Mu<~HkbiP41< zwz2|MBvG?6m!Z+}4NNyq#1er3vDrdNLLFDi7U zQ9z#~;kGpPH6To>vYD>?f&!++)CmRWMih(*^{1q-u_~*<)A%Jfag^BX%~gdn5mYY0 z%z5>6OsqMrjeyvzkm}JUh&M7WH4D&O!0QcHHRK1TfU=lw4N+B6>Hd^u8S5!vfD632HhB z;Cd67pAKb|^GDj4DAJgYGx%w1V<g|)RByk~Y^k)+|1qSr4lkqL2n$rlBO6Be& zJpJDUR_Ax}#5zAt2o~$zoMxYI&cU?c5?*y>BlhA!CZHZnM}w3BJEy>sHP=;maS?e6t+$9s#lcLu;?PsR5Nj1=VTq zUGYb}f5}e`h^EFdW9}=(Oy*&_JcH8gWC|-R-m{EVi=Q6s2Cs8 zcNlgvesj6Er4Y~Uyx}m16hMnkohas?#-d+62vbY~^q?Qc~rBLn2oC`6 zN%JWm;1%MTbq#92&Z7Sj)r1Rpk0UqDF}CnviAwd&E8t{fAlVOA{F8+EyEYa%fT}c$ zJB5Dhb8GWU7<$l^e%saTEMkE2$L0T}z*?J`V6Ou>FBS{d`f=zp;0c)Cy5u)H;eP&^>_lS7J6Ad-0fWj{{Fl_xBN$N9t z_<*xB*8?4y#;X_Tp+59K^p zk@wc)2bELf#CGKy%=Ra+8O5_E+erU84eoa>JraDDJUx;sZmte5BBNHJ!$v0 zuHm;Y|MkddjHsBT;SpwO9`aW)2LeBo$HQU)!$8P_m5@7x9wT9p=ikRbjWvcHJ9P)A z!V!bBHEJwN0Cz%J7L5C}+K>|ITg|42$>ZA;D{U7M4Osq_57b^G8W_ue%C37D#Su?8 zL%V{*bCIAGA}}tu(LT~BAC9hg#Pg(?1SA9F&_D&bkWx0WJ_G$7BDGMmyS)9SBDfgX zvzu&=zM0f(Ifa<92Qn9=e`RcOdHi0od|Fd^c^`XzIz(LbtlR{yyGOk}k*gA~AMjj` zkm!!ql&tXoqZI!Si>FtjW#vW{WmSq;q_F)f!Tvg8HD>soHubTwunl7}#QzNRXWmIa zLyg7mUsglQJrg!fVR+<3N`F7D(ok9;Lw?*u^dj&(ur$3F0QnuyetwNd(!c|8j3p>N zdNpH{{$CI1FZm(9gG=ua+s0rx^4#K&Ch7XJ4s7{v5&m=K#~W(X%Yf%$~Q= zWFP0Rr96Ag^E|kK2^gyaFCpZQJ1Ft=N_50*M^1&kS(l~95giVm0k4-iIHr8D!t}8u z7-RgFSVkR`LX&-tw%+*2ooK?Ygmn*u=&?I-#enTZ;gZJj;;|da$DuNnXVjdfd)!4R z#YT;-spM9iM`8V__^8u>EuCI3z;&RPeomyE@3GYKeN9Cl93$b_Cwgq={Ooa?5m!f# zRdvaBe3Z`qi_<$XV(Ikdh0#tQHv!B>k)tz3UalvfI zTC_i-dH>YnqN$h!F|A@IimU_W{)X*wP+mrd@^8euqIYx1Ylq~MTf4=;&)L#up ztk{2XIx_j{KlJ;fev(HD{6b@8WhF0E3jbJvX^WnfFf_3F^Kn#qf_Q?9s<2|VJ{f-g z53&DT0;o_`;HxAy*s?x<xs~ax(b@C0iu8_Lj)S-6cQREmeCV35fj5Fae;p4N8wGpJ!mxbZIX1fNtrGF*1Ug}xSE}Su+Yz2b(5{V#9iua%ycPC*YC?Y=5|0#vUUmzuM z+uIT_Y0|Gx*?tl~Mz{27(XGfa;rY5MA}GuBMf_XwYk;c4dl-`F9x?ug7R#uZ#t-n8 zulDrl?s6tSbL5Lrmrr~v!sYGw?qor7hvXD2rMF_zW=aQ%$mfSB&w{Z*YVD1x`)GKx>q*g?k86nJ$jikSV2L<$u+G@P~$gIAQ;-;ROnvv zE@#4ll-IU27esEf-ZMi4)FB(`YF_T-`9CGZH>Gq*D3G_*zs2}`b0~SgFBgQ>VEy5K za9maw7GWM*_;!dwsZuTAvK72{>H4z9^l+znw%G$IHZQ}k$*WBwR~cji@)s!bP^H?l z#3DVg=%I8k%+Ai8Juqz8&$j?o3?Dfz!WC~M5SOzuts7tmheQe=6Z zTf-tuC_-C> zI=6bB_OfS(5A0`Au{AhUlu{nQ2}+7*NO!glLczim2)hwuty~KuFy#LK z7<=!yCYNo0SdnH$1VKRvf`D|T_o5W(O?p*&4bodcK(=&5O6Wm)M|vkB(tGcO9zqK} zkWk)d-}iUUz4z>W&+)(KlRTNMS+izV|Bf${|0(T#+V78;k7(C{T9PSuhuLgk!}#c6 zMEJJ6A4U{_@z1MVZC)DNbW6PbAV$e(63Fv+B}#y!h$%JN{t`sOI`)qC5}j4r^}73< zzJ>G6!<*+;F%OS~?6ci==2&?0rF-X)@i@$;UUmRuJ&lMnl~Mv;fC3e$2dmVmu{PHk zrr{+-bb_LZTFZti*52^O)X2x?WgmRmZY0JZIcC!Pig-?D1T-O}Y~QAoa+`h#FAwLe z7wtSFdGh6PIn;W#qG>zvsa&VwrCa~6SB&PB#2^$p?7_s2|IRe*{=shl7Ls`yjD?5LT`TiJBN`b+x^SyiN|w<{*u3x z*&by%138}c%znrhNe|q@(4lxg-3f*Pp5o~35>4C@3R5iLU#>t51 zZUm!NeN~gpEe{V}`R!(&S*9l`1zb>#MSnZRG-GDZ32vJuFeaa&%~XMcNXuWvGf<*u zW}I=4@lV{Y-))iee_&X~eJ^#fCnfF#L3xw2q>o)gGDa1QW*aPulrJ|{;tZ22TI?69rpfCLjs*}D&nq?kRNmyE;vRetz+IHUzMfFo z&lg&FI(A>4u$Cg}CDM=nHX=foBx!?t;CCdPz<$`!jg&x^;X zvKU(co826@3*;75gmP9UnLvz|2V%&2Sk%7r;tSPsktzZw%~u)^C3pTPpwEeXvq_&9 z>_{!(P{n6AL1BwCr_Qm3cSk|3y@39BjxKsqy)!Iz`E{WfEg>eYTRE6Zv9>j;jJMiB z^Nk*#d&9h6b>=TuFtML4b<)pP57b+PQ*hpp6T)5MWLiy4jYYr<#RU!@Zp5+$imTLPN=ovHFR0@C90vqQ?M9gmAyzjIWcsh8iC{J7tt@a0bJc|Xu^O**8Njs4}Ayp4bI+F-m~>TR7h{fNP0m;nyZMQPrSQYUlJEh z7KbK9!_?(J&N`kI(NNT;p>@8!BCwmwf4Ao{^^Is2zS}a`A%2)@l6Le`3#aV;qbtmR z-m8elc_<);(Gt*79K@`{KfzZ0QF?hvivDgf7pOsjb=`F9fIyMbvw7Hqk_v6khkm}2 zp=jM=!h=DnDE6Ea=ThYy9^ zyVTu>36P9)wGv!cp3{u*DjwNrr74}kGC0>gp;O7m%MLgpa=CV`+zHQ{M5Ewyt}+!- zjxfK&!jm}$iObVihe&+JcC^uKwaq-MZc}%Brf!X|*9)V14MsaOVQ&hr<2HA{eR;cL z0=|@dYfqO%iGIy@OHOKKH_AIX`i?-kb_D^aRw`ca!DyjYktK(rT5=%A$Q&V1Z%b0K zRSeW2NTfi+#M!h1OH$e{S;&lM2%<$1UO3)VQ>r#9qJvDc%E~!5+T-`<| zFmESOhpVjO6$3YzKvGWEMcn7g<%lYK_O$Zccjywk%7EM>Er&iY2_8D3O!pnoo9R*Z zP1(zVqIhykMT*1w%6Owfwg4s8;kDnP(w+tsFmweR3+xkpocm63LL;b# z?b_I}=8q*p3|4t;%mnT-<_dD0`Z8YzSQPIvzE!BRh-D|^an4pdkj?oR@PlvG7&NVZ zUTl80aUT=yH@RJF5@cEc6zx5;BdCW`@!4;rR~8B>JY-oMzS<3MK{G-mTqj3|n?d~U zWjXV^ZdqWC)13>i&9foCEsT9XRZ>mQTrN@@ZMUynX4l*??i$sCq8&XuJ86rSX!tSG zM>jT?ej9<1pg2b38^Lx(E;hv8ppU&TSU++;RBqKDUYz*(#0;pVIl0X44xWy4_`CQ- zm?Yga(!mF-7u%5(#|ST=?kv=<*58}Xt=PH(EC{CwD#Va*wc9RF?>IqMHlj+N40C3g zV>&An4t>@?RW`V9of@sYWn@J^u@9fin0tM7W-?V)$9$xCRDLD;=#K3gW=if3 ztvLj{4Yq>$tN)~nKfN&YysW=@LniZrwIPD@3bG+CU_H&>Ac(3W%(_D7Qro|RLATMh z3o%t7HfKt~qc1_l22jp-vUd;$Wp;dbPg>45w{8--Jrv|V-3yR{?>O!qgyyA}Ys#gr z27+wyd(S0kjB@|@6O)E#P?;F-0q=d$^K7!>OzJ0*{4|w7r|`^bw0I3rnI)^!u4H%L zZ|Xy*u7wU2)69(d-F#NbrH38^1yofLw3ULne4g`kE_0%j5~8czM|Dq2eYN5fM@K-f zh-gg{%0(ESHy(~pB7PM|!-jnV6;fEHp3m?;M^wsTOosv3pY1fv!r-xQ<}6dPIJS$S z*rIoRsW3+o+KHcF?WCLIzl2c#pTjr20SI4iZ}!PpyJ0`bQh6s7&UUgQ3}`6v=+ zf+wrvr$6{-(hx^3f%|R09OfAPM#*N>z=Fl1#jMGru9~x!v2;xpH^oJ)1 zgr00WCQ};wG3J-&O90gh`<@t(up5s+A6BRJ{^vTR^~AQ&$x>YO`w1J%p^ukR-#_J2 z)?GdKMmCf1KCTkSp}{o5Rkw2={>n|x5|+&=zS`^Av;^=HoCM0IBa%#}#|B*z?re_K z#{zZ192=aY%rL(RFqJsPx-pgW80k&4*cmPt(<}#jMBUc`2Sxc@%24l?GG9Uz{EKl{ z*M^Ulf(YxbLhMNsnhtO^#U{ZGxft=&7waU4H4Zbnh_-t-8?iSpI-~qmC%7#raVL#> zt((Aphd0xPA9(yUQx%W*Le$-{-p4?ra*!AOwFqS_Xlhe4k-w85IR7Dk-6x=NIsfkv z($uQ(_F=UT+pUy?2#;>JkW>5T8a28)o6#BUcb9RN0o(yx3FobfTJjp!aR-n~p1^z0bR-6AgH*Xxi1<65*$l@2-|h5&^NBlp~q zWe=9I+Z+V+III;qF`VvE2n zch|`-vIc$lj2AMbE)vIE>+*0BKBx+dlO8+pui|i6C>*URw5wfd*}pv)JAc+5t<@RL z_?%Q48RfYB!p>I;S-Q_$9l5IrD^vF6Imfg4?nH96A0X#LWvKB0T`TrYeo*z(Ncs~x zty$LF9RTQnH3`Ds<5af53}sLQSS-S*cjzVnSQJ0r`iqR--32cUL_kfD@AMD9^Lq_$ zJN7-6F~$F7eIlV(hwhYbmkB2_cMiE)ssP*;6U@)vGHmzWJ|z-nR@NdoFd*)t6m|U! zXbmG9jP!r{JT^;1XdnKJ_s4SYhVKg-=P2;m)oyap1H$+X>UPb!Yj8rmhw~dmKhFy` z3^r=7F3SA)C*=r;&T<#2WSTkLNbM0a6?Nwe@!g>$Kvf{$^IY8WjtAoQKpVPKf>rXH zruJhxctmFt!4Xkk{-~^OZK+U@LZ-oFq1I?egfQQ!8Eb>#sAI8EE{f99S1lBsL2MZB zsy@^fvc$~vB#J-XIZ8}OUtcJ?R~4)Bh$7)#Xz66tC9&Ayk-AWz!ZHpOJ<8J&af{pG zS6T01Q{ZN%6k{*6%*kJ^nby%8h$OUTI8^{H-q>NW)L9fwg<{_)k>~HodRW&|@Yu)J z8@?L1@PX55Ojn@o60Bb&rEUykMuCDP{JUb7A-F6)wp%O>+}%gln=!Q$!nJji6%AX} zo%WhAXW+sHfm2b#MWoDOck9#im>0BG0QxnUOW& zuSztXx}iQ_Y_gx-I{=BSZY=h~_N5rrGk{`=>8HElGuS2}^-xr4g}*FZg;*WPDB-eXG&2Zew#2kqhzWs@>+ zGAlzcVXrSW&%s-tK8VOvULU4cv)TlHWgdOYa=6wf%VE>XWGY9;kj98y1#w*FqjaP2 z*vPxcT2ntq(a-DMUgb>A-DEM3Qpf?yN=o(`f#>S@C2nKo9h9D5Uyh3R*Gw@eu-)C_pcvNdF+;p{%IzTf8=m(eLp17)3pqB ztUFH-VC|&Os5Qp>1ya{5x|enPg@QJf-1Tdhl({|D#ZHV*;s_OQZ2Hj|PTwQXUPc}# z>rCIWC>j$dMGN(Gh|}Oi&s^S|vFcnF z7Yv|CI&u2nBam5QkdUB7iZKXwaWVCK!bfznP85- zWIkryoF8{@Nkvd62HjwJu^=X5G-Meg>9cgOQMbzbVPJ<=$NH<_c9cn^KHkp%s6VoSG8BqY{~l9ZWt7uHHaK^n58UzaRgtY_)@#mo{^-;ONXK zde=zPIfjb5SnXvcd(*w|)A84Jv`ORJ9GCI#Q8nJ#zjV=qsMnexUdKi?qeKlFG=y!j z+sZJqqT)JnpK!|;!_bMNoUzBdl^dD%!To?bBRV^t2Kta=39<+M;_sTQP|VhVJxosR z?wd9E57J86VBNO-qMnMaZ)Cmis5?(g>Ci5$SD;`8mmwvv)7E|W9`uoS))@r0F&VCQ z($t8=g61JbFY{*{eKUaI^wMcS$0Z>Nm3diXAEV6lt(5xgXA5ANB@N@pio6**BguiX zaqcW|hd@PAHw=WNPTw@;fn#PsLJ=pN*D|d_JJok{JvBE| z$?Xq{OiUi`GHc=Pl6)~=J~6ml*BAy-Ri2Cvir4m*o+|fMoF;|)9dFU~D)LG)%*fqX z`8+Nn_#F!6_I+MGa)U(ty@@~0sA`K=^=jqHF{~cL``zt)Z#1x&XJ2IU+W1hcN;MG3 zPZ9G(3maW^BBn`W|7iCZeCfZ&2j?M}e`YH%?_|{HRqPQ2Wrp!HEkX9NziO4X0Hu#! zD%Gz8_Tq93?|8+o3LFyPALCOC*+n$3WuN zrn~U_b0DC8_t3F#vF`GR5M<0|38W;Y7P^I*p$2!vi6yNr+)#BH{-MyEle?I3nrjbW zt3VG@O1D2(prlhO7V=kL-*;VH&?ah(pb*xUckpf|ddyIvq9zW&0gzmFX?>3by_m4Q z`_*4u2BmA$u!dBSCa{wHM1~X%ajF$Mq!h+ zHb*lNTc);uMj?u1F7VE+EklFq9;L|K9XB!7YI29+DogKl7{u|F8gc}qE}NfW{}tCJ zY`yEXyIny6iPbu2!?3YL57Rwvo;U*CvAs2-@gv}hgi7X|={7qG9ccA)J$+>mo@zOo zJ4j4v^UD7Riy)n6WP5Qp1Zdc>nwA@0Z0ptxL{41=Y+(ez=6xciD%_-Ad1F z0Gyb+3ivW6ul+=>Kz_+O*Psfg8y-$oELnY*ILsXimTRi5ZrEt5d4ZOrFUGUtFRc2L z`IZhg{0@>;rqTEwrWW6D!kl8++!`!FT6^LuZ@K^w&a9SWC zG;U1lGOTA=6T76y=wVUc zm{dYiVl(pP$^c9Jilf&PG0Wqxj1p7Q0-Tf=O$JGxvgyL2r+D?k0+EWGq?JKpi7eJm z^774ylaF+Byl*;5ArF4?<=DT{d)?rUdSc!fGAN#@DCBGEPwAi|v|f1WyJF%(lQAq{ zi15YHXl6sfFS!oLcPBwy!z&K8=i^w62)pGtv!+C)iHR4mccpo#h$T)wk-D$IuFR>- zkAvJpv9@|zl-=%o0Yvx`VHxMW{r~seE5h{=+P`nu8t{_Saq3`+Hx$C{^OqG`bcP_||t+;Bo~n zUxxWXBA)s+O{(+4S(_ZmM5&vT8!%`spQxJWm(Bn{V7xV!hS$wBnrz!DQ0HCOlTlCj zm3ug<>IeiE98QvM=Z0L}P@jEnC!IL{qrZ28Bt#BVurYmemn2C&FYRmn)EVow&dI}3 z5TB8V$2|e{xXMe(5O9Mk`6t(bq`c3quL>sL(Yn(XZ-c7JaJ$bL;gbR6fqx_L_-T4n1!lkiGp{y+jS`g-}T-%A_H#`-JrpDu|53Z!N8nt&$N8bp;1<*MlqmTX1D6?aWSp?q%c-R7& z!~xQ`nQNO_9~t5&)HT91G%VOEMagDsK)84HD|rjjDUybl(}s2 zL7;-h#{tg2$s99h4Bq{GSB%Mo;&7egJ4QS)t_u84!fw+ek-Aq?Qc~Mz=UBi6nAEr{ zrX8?dd7fjIL@0;N_JmAVpR70j_MPVd9?4*|_7A z52e&a`)1F?Z!7e5$neG@7QcQK1;T?c2>rErGr(}p)X+{E-&KT&o3)7dM%T0%o}7QL zm;8d9OPoES5&0>TJakyJp9r`Fk!MX3xtf7VZ=)I+1r0}Ju+FR0;FdJA=D=3+y&SHq zA{1X4mmO1)-xo6?0^Kiv{*f>I;i7Y_d;b%THw_I(#cCfv5+)jZ?y`t%hP1h)dLmWQ z-Y3|oy=ze9gXuJ`)ik~jyyN=ht~)NF@B(|$DY1aXq$uZ5X6}&bq|-|P5SrAG*)vuD zmSMs>wC`E9vidmAZgOgLC;B72iY|7Ow<9?GU<45R(OkDardw2JlW=sTUV^o3&{fM( zhzX*^PDdhXPd#Y9JDFaF?{qVTyUKToaP+{o$MAuJ*WCd*T*9%9Mbe&fz@z;e(|&2R z%=Ji-nPo*inMuf{%rcV0FGEPrGW1l+;(`=uP?W%NVXmg~bl5Zpz4y+LKgimh0+Gin z#%dR;u>6ZC5Ji=#M?(JWXqXws)Xba16mBVcQz6g%_+F2T1^iBI!r+0(757(;*Z$;e zbo8~keJ_VGPvRTA*Q%$K82x{H^qFg^K&lw&#Y5kv~7 zJa*(`m(ts`oPziC_UMtweu^QtGYex5SV2AsQ3J^NTsm_a{PI$Lg6?9YI;q%UIyq@c zcFRsyfrN3(Byp_(o0hRH->uIpq8faVbe+E&OVRF30DX2#oH0N9x$E@bl$rxI>_7b` z$S-~twtOt03ouu{v3l08ooWvXP1w3!hxMJReSJ^-dEee56!oE*t$9b{FltbjW+%@E zg5uIkp}c80oM>wdLom;(`X#W{Nw+@k)|UsZPErb8AglIGLZXZ{k8b<#!-BRHM_PcG zD;?0-ZIah1ZE_S*8Vyrft1~z+cTUmys93?&W<5%&ra4Y-nCZi+$A-cfR2*`49UKfx z9S7PcZnpG9eMs#sCPf@EWrNjf9miRp$9_{{6px2v3*&wQ-q8Z&hKGuhYybef{A+u2 z3)~W(q{?3j^oT=GE|4$YD_wZkQ)!Dk|CtVP6{j@ulzJ4iKDkBNzov6FF-WnY9^`Qa z*$!QlEB)MH!qoFA6a3unhi*dX%wDX@cN<4F+xLMR-=#0eIJTBXOk`#ipffDuft(HE z!X-$4Y{yXfYfJYKYuLt7rc8KN<;zjA29NM0XqyG}oZC__GpU0!NT%v+9xBoi**$;C^2oGRRqBNXzIxS7V|?oP?ieLXC`# z75ej(7+X-sl%PkelXsnt*?_K&KBWwcBq>Jl>9`Q>LmL{1322);?Z}N3eoJk1(dme! z?g=&YJ3-I#T8b@82fUNjlYt6VY<>Ee2Y!%(A6;!XehWDX)`eM}&@?05cakAD#%ZuREfQ%ivl%v@s5#8$6fQl);iX0uS*FEP|UxhDbO5*jx`=WvNVW zaH}onmqPtdO0(z%gx-+T%b5QAsvn+qP217WdbJ{Q4lNlCVkE(`Qr>%eC{Poso{` zzpQd6pvVDnGo`(pL$o3P3L0)gekcQPipp7}jO2J`x34F_T36n&L3uOQL1$`BYW)Ew z$-0WS{zOavPYc$p6UWkJEaNa6=3YY$eRQqoVAFc991-|n)9}H>*7}fu@^RK;l+UjJ z(0Brstv?px{`k?|FLUm_2>Vr()#tq8uXl%QOqVdj(}sCEjR)-F4`YNk4Hm_}Kl^hB zyb|vpzN+;AnYzbm-S`Nf2Wmc>KV1v>G?Xo1^GzPjPkvv$HB5t?;5v$eTn7K){c|aA z=t9w3Qq=rVxa2EI6i4G#s=TE;&@9E6qCCBg6Jz(-6yQPkEi~4YxU@`jo-zdnawh z`@$X;U6*=UQYq09=0?A!PpYfI(WucEJ=uLB&OiIWp1Z5)=N3^h9(BKWAXIC9Ijl=e1mb*!W5qW+by6Br*&>zfR>w z8GfQ}M5p$$8B2AYeS9(P&BcVesXSl)GwjB;rC5EWu9=FTw|dtk z_KnXvsIQbs#LnLsWAk+_^?f2S6}Cfb26~ICS=(%+!N$Hdza*Y7V@uO}ZP(Lx%^6Ue zAXBZpQoNWj3uX)&^BFWj2zxloVZ3$2ISgggtWsiE&}giVXE`6kpo#CkmV=k4_EBcs zp#s8We%&@rNc!XAn6->kci?M^Hv$Of*|8~t*=Ld;uU*H(C%#Yj{~nI015P)tNp%r_B z@V)m9$QE2fpTfM>mp7vMqB#Z^{g*ASu@Zrz6Z$U4+X3s}P-HRt{`4(*k)O+pN<=Vo z;yo=S(LS_B)dQtxr4u_lXJC)7ZXyV63Va?$1Cy2org0nJ&5sH!U*vb3Y>WL-YdYDZ zgTi^1qw34q-kK%JALuB2pZWxCJBDwwjB9gTy{N~QIF?l|X{rdf_{3PGxs9|o8Gzvo z5O6do7YtltQkZ)b-EP&#ty&yw@nXZKh>M2DTd5NT->g*!jSCIVMKT<3PTKL(PJ_L( z+}Ik*1o+1~afu}w#!MPzZpe-UqIii{g~QF7U*G2{xJQQ0?<(nu)waxJPAs2M8o!M# zVdAEK=+NwQz@WJ&E@ z)15e!bv@vaF|mcZ`P)`;?Kjc}Jfbd!J7Q-BOgMSIyN*qcCAah_uua%|Tb~$HPU~#? z|3L!MuABqFbKmmNqK{?5y@QRaZPgTXdQU!|jc!&~*;CLpj^3NK%88<&g}t+-zbqd~ zL6(&HF)0Isa`1@+XDjF9*)1^May?XvZAy`bMwW2%u+zRPQoq}MXVcj5RN-x;ReKcMMWpn|rB7v;FTPwF}+<*2aCu2K^h zZHsUSxO4XD-lc%kkB`nO*+kpL?dSBf%5kUI?V8zamqGaVO09#22=$Z?0N|K{BBwb0 zU0TsPqbjHDx3k{i{iD-JBemGItkI~vp*~Uuiml;|9vU|!eNRf3-KxASgELBAnUPv&SkT!sE65;9M<_vqp$t`~roOXAmgdb7W zA+f72n{-%b_23}`eXNqNYNNR}zvztL`w2-56=ke}waD70J zq%ZLffMkwh(_{V5C`&o9@%ZHt2H_i zty^p*z-fk{y~5-tJJXN5Xu{FQE8%ykwRup$7SDeSON>#^N>`u;pQ4=O34JJ_B1 zo)0&g+0VHb;pj|7p3&E5AJFD74Dy~BC6UOPF3f19Cl7f;#M)5F>~2_@XR}_1NT4GTC&W-80{fuf3&j)J48q z$0TJH?U46Ul#$L+3M{IM9BwCbtE@2ehv(#8ZWR_)#aD(R>O)?^j}F*G&O^_}5xrX4 zj%-4XE6jm4u*H-AU%~=^=bsMRQXX|Qf z3dH22r*$OAW};^9|1Z^y`i=0HN>1Xs??GJT~VlUm$ z5WYrU^MF>q65J+gE$OsPZGB-^-&4saU=>{W>_U>O8&c z)8aQ33Z8Ju&v^Y}^`t}Zz?vUqvmL@V>TP|nD68J#PFnxWCs6?wP(9(hDB1h1r6#lW zOn24i?s%glu2^u%h8GFc`FF@I7&0%l%*XR(Z*_Qyo@^lER1SOQ=N#piEzqM*5-ik6TDj8+Z_*V3$wf6d2eYz&+^-8cb4xK<>u>^*A)_uh5nK)$0r7B3ldr% zLf@<(PtfQM6oEqMzCCYMuYz74I=@UL>e0F}o*AJh2U8{;)4YKAFtZswME4q1Z%70x zYFG?cPv|x?#cCbxw{JtNKXW-iuYMsFGlR2(KeM`Eq1fE;r%o7 zy%7Y15ee|X^m6{HHo@H)~JcV`X+^A#8 zLS6or*T&D=78q^IqLdka{W*~+mJeKc-k@BEg6*P(ZSezJy+3Rte`FK$>VR)4DadKM z%!llW>`o!Zw_iP(9G^5aP{H9!YR9D=+PQ{WiMDkHz`XYbOj@wUBDR<^%tKsM@pZE(iIMiAL_ zTiAdRR(rY}*}Ep~q!c$%P&40h*uQDrw)Fbm9Nf}7&Z7>wfV0b0?t5eY?hJi(sZ;u3 zvc0U*Y^RW>?yAKG4mnYgm~+9LBaxqJ=EhmqRqxj=<)+L!?ppZ+mxeSB<`E0$*AUZ& zEaq(znVLhBrXHw_i!)mYawnYUJs>XM$b3DD-KvJS(z2|G*Y5CpS$>w%`#u)I)1PQt z@j6fv5cs>SAckg7aZ=N^e%W{cYY5dkU_WDGF;!*#j%%-osF4>|^3-<)vH6selo#Ow*-eRLu_dpXGxzTl?%ljaiLnqj+bbbsyK z3_n}rWli7ZmonMV!PI!o6o(pioWcp2zyx&;)IbpT+VS#ioek%;5?O=!;=KHp>e0*h zQLV>u%Z7$u(KEqphmj(P;f?ck#3Cs2fFLYluS852Vxc6dSFYcOd&b z-vs^2{)fZ!5787R3n8j1B4OzWD%hv-Fn5Vw3Z^i8LGpZh_Yl@k>kJyw(-BLj#0-a_ zn~*8sg?+@?cn+ZLulIxzA!IYZ#T;v=h z%`lHv#6f=3d;K|L+s?Pt@+TOw8hN0e{mXpeD6C$s1=c9V!- zk(q#Kaz#ckL)muvYZnx*XphY;dQMxfETpK$w+U11tKJD8A63q9P?FKVSpT(hr8W@m z;@KUH%r$B`o=+y3(KR)tcnFn5Fzy&+$2qR3h9sc(P!{b)U9g~#(3 z$nu!cnHI9WpWOFK)1p&k+FF{Gt9FiiCm}@QJyrFaP#sX0+i1VPs!2C@r8E=NTAlL6 zg293pa{e5`7x;S9Xtx=C>CPE*VY3#m{T$J2mBfd8ZS{F))CUcRX4(&ANb%%J@$|oS zF^ZrSV`@I=DT;KjZnGhMM21Go=%t^UUAXAQod`|)*!WUJc^`DwJP?|GDwCnM-In;$ z?2z|Uj5Fs#bWg(k5qt%7^;|CRzUHuyyQW4_WrZh>zh2 zXM-6|oLQCiZ4O@ZpF&agFZJrgGwboJ>@cw=$C2KXlkzJR6<# zSYVM^&nP!TyqN?*mZe9<_kZOln|?hd>h<1==nG=zy13ph zbRluxAmq+zJ0_RsZZb0B0-8nt`ft(xQT=ADQX z;$u~)>TUMJJ~5Ba(*l;T3o;fwTKfCnTF#ZXeaUUr1S*_}$ zHhZ}gYUll|!l+X|@L0qb-)ZZro+xhiN<5~RmQVM_Cb3L_8}ITZI*p;Pz9bAfKI1&> z&grdBacp`QcBBtA_LC9fNLLeI%Dw{7>MH=C!|ZYP*{bwKQJ%(dTb61m2iNiL&)uzX1b>H%xWeN-K$ ze-2#yod$IT#0a&319gGLxf=VJEBmh7O_-O3tgZAP#A&K>Y47aY&GACkldS9%wx#L% z-E@qC^B{jXT-X1xV&%S4COVq|Y zQDiIh#D;KLI^&WO%vXgf)G8B#o4|h@0yHBqFG5RX}TDli9DQ_;`mOsh)J@bvh z=Dk;8&St~($M44u&*^TThWVRH)2-x9_R{AvGB&b{GKCYB3qOI~&pzj&h;`#bZ!ZsZ7IkWdvG#XB_0!pT- zmaBxPXdAf2Cu4T&?jaM+{%C^l;wMNW{!~K@WTStLzT`d)*lw)atvUtn{16KPA929kQz=BC_LdH=ndKKN!4Zn}J7Ar|NPcKE}?q9N~d2M^o;Dre6ttDKTN4sw>w)w}T_oXY8f%n(F zHU|BYpuz>RW-?zC;(WRk#mCBc--(VigPf+PpB4_^1Cc#B! z3594;thF+olC%LQzprQ5k67E=TMu<~Ij{bVoSa@&us@}lABs#V-am4w2F6u)XYS#6 z8{~4Y3-2Rm%VO$w#|MKkqq(>+@l9O8$zyOG(Gy>5w~=Re(H@K6P!aI-x3PLp@xIW9 z@%jndmV+91_S>Q?G1I6I$~p#$y>*+`&^C3FQWg>#d9MtOi(8~a6as~EV#lsCrt@wc zR)mGP8|anj&YZkT$x`AC+cEJT$M=*al~@;!X^^>?%?i~MmpN;(m137e)8f`3q}`+O z$5MnIS6k^veU*d9=9QYJX}ez1+1o@Qzb{0}bACvP84J?FUF$fU&_%J!!D2-4A9q+7 z%6cs-lv^$aM7-RCpO=iNQ-grp?~IXLc zpndeo%;z&}IA@>*QE5zE=7%b&?t=^V=GCtjENOWai1En^>oX34SzcVHDh2P`Gf1S} z+HtYrSoI`A_Yk+RfvKSCo7wOvo?6=UD)yIPO$ePFNWcmD_;c!C;C{&IQDkRUTdFd+ zP87~Y`!8x4RKsK^^}&XU(dJ3fgm?M^jdk=3nvBgrg+3$mn6~!_aO27V`Sm=zl5+1x zL}i!Y!Q3HNb_%fFHxV*gpEF^5@Wo8U3hp;WIZNT3`iG4sVghMt;pe&)ez{{-uk6d# zbql|=2Y505YvB6+Ml2p50;jY}`W8NzoQR&at(k81P)1u!&kPO#(B<#8gDZ;>hXW#D zKMB?rmq?-(*Z{3x6nZU8X*SYbY#mzC>b@*8w4F5A)ZScV8}5um8aur+zJx3VSA5Q6 zL!c>o+h6~&pK;6(Ev~J^YSK94UT?~;<`#j9Y!N8oM8G~Xta!dnJv}1as`k+pC@m^C zGZ_r>?I|99teu6fTnV@YdPdnxn%Ajp3fKh;m>AsLOQf|=-jv>dj1mC?5sj0O3(U^E z*ynK{yyHo02^`0*w*e7~+EOfKKf4@AvjKlAJ+FT`yUY&FLsmTsh`Sqa&{ z4O7HzH%~s>`58MMS=Q#~CmmL$l2$GA$311{a}t7fa9gPv88w97hlrg;?HWDm6t$oL*BAf82F^`Q`=LrK?g{O7FbQ2QuG5&~7aKVHiIO&&$<5 zp%Kn{2!Y2RYWCQ_#x= zda?ISRvki1!_7tCYD;rG3!he0%iK&Vy*%9=NSC>9LHjM;2*G86qFkvgVdl8(iblld zZe#cZNkv%8C+Aym%T}*EqWhiy#+RVFY2SF9U_rQaWtpTh0N-1d4ObqiI;G{Jt%Hg5 zv{)f{I@)5@53p^vi#^XAT6@GuLvXAyV&3c9Eu-0fXj+7f+%WT*p0_E-@jd zEhPy&W}vOq@5QJROKQkON+JcRT)9fz>oe7aiHj>0@#Wr@ z*NJGfRl);IF4jF*dhjkbh(1joMk6F0&<%WzC|K{JWw;i<@syL4S=^aLaTP}-Xk zD-Cd>NN5DzSl1h#f|AqJ^fAA%<3Crg9Buqp4NUw=QdG41&mi&3WtOWga8m)(mWvk4 zZeIKAD4FoDys=sB7|#z9?0!`?a&)^z(uA=K*84_PK03`$3!=RP_8%)&2*h+&VwEnc z+co!lxoVa4eSd}U(owe@min)g8pdwEtjDH}T@;!~(33%dd+EGxmA=!fi3%|d7f1yH zS)#q>hv=hSX~K)QxM(F-7pvoj%)vVOBN(*NBi3^&Gdz1-$AC`}JoYuctF&LPGD29B z0W!R-XA^ol6#b^P6Xr=TcHU)%Dyd}}{OmQ}|Kcx}`#(ebl8A?i4mGOTG%Zy|Uf1^T zo5c;5f=S<2^lKYrcaa-a6;%+GnDkXBTLU7VID;qC@gRUv6Q?xwS7+d#Ljn(@X_A16 z^HF|S{L<4^&?@xwscp(4t4}jlce7Ur!UlMz6Sne`<-{S zGW0sWvVMN|@0aoaj}pJisDHGl@GrUNznypn>rgSdN_^YDk>meCZU(u^)1|*Aum1W+ z8L|ML5Y;_~|G@75Vq5S>4Z+|~I=?e7s_QvUwt^9VJClDQf*jAQ<0~Lj@8^DpyVn8? zGlVV?Gc#d9|D5i>d60~hq}A2nX(#@Tg}WA@WSYS(SbF1kCMb({Bfiz<*L$kp82HDj zhM=qtp1w^Kq#WZ|AnJ}%k_+yKgoz(Pn7+Qw};9I zI-oyMllb@2{|$5h@l{3)AQ+Kvm40X6z2Q!%BmNyuP~BR6teBjfOf|q8^N&CJHmhq z{m;UYApy|c8RXvgJ9Hb}2Iy`u?tAb%FJCB2c6_~b@1WuO4JuNAgI812c60qF#qX@* zh6G-JL3Q=jlM;r%Iv{^NY&U8ojc?^?Imy?yvcLHUqyBH9-r&N!ky4={_&a;+T7Y*z zKt=pm>?7v?d%%BEL>yrGSkaL9ci0z+pIiZ~W2EKpZ5RmxTF=FR^B*ZISML?ENSVd_ zzcH!)bz=f@7{J)GBm3QgzAKO^+M5HD5s}9zq9GE zFi98Sj;qB7k-xF!K1yoQscJoFW&FK$DwK3lR1A+`)FN&B9sbu#x=g73E5rWwht|x1 zwi9_k_B#^<^lf#u7R!@Kyx(D<$o0pHGck$3Ay{$7qiC+{*Zy|)|CH@N9|Ah?xD$BYU;c*XA3_rx{P;RCG2usY{XcI>I>`)e z;5gAIG5gO%T*o8BPi8QX*VH7t{~PD)bv!}3n~duJV#J@T z`<4JOsK;;q@f#ZvAMke4%d>NGf(d^^F0KVo1*|`^a~v?SwfrrrHxPLA3RujU$I*Z0 zUcfzIT^{5({eP8RcT^K-wpT>3GopeBf&)X766w-{xFSjk0tzBhhTd!FO=Ly{M3mlP zq=YIE0!Rxuh#;Z&UW5c9gc>?Y-j|)-op*M8OkV!tZ~|Yu{r>K~azrs2ESzrVjTg(gUg+U3nA%I8Kq*1v+fuza&_TxW_5mk{%kewFN=PM9f*d2 zul5M}Ueh#ON9XbNS5&E&2C)>S;cad;T(Eh~;{@JjZ{nl8DGl@okQ(bRsf_SC;YKJe z{Afaz!+_aI>(f^yY1vW>osTKCRcniS;y-9$wQk7q=f-`+HghWYG-+u7~GOe6*0vFSp$7 z?F)5ozCTXGo`XGsKtb_vobTDK;%BdTD>y&XunBs;6OyWxz!&4Y z_V`8=jceNVmS9VksXpz=7{DjIq)Pga(2ouBO_a@xB^CYpCU04 zBh!{~#?XV-ENmG8J;YR7J(vyg#2L)Tjw$YzAO_$&U)3Qw9!mADqu%8reK|Nf@OrPt4h>0U+TY zkpem9%V01I&z0|FY5%-njUl>So(1i5syyAS$0vg*B;xcxm=K|yfj0qq`=$th0`!%t zu%_h+E3DLQ!1T7T`Czbn9&vDNC7YLp>n-I@(1nfKwH{Tj9P4x+X~nmj8|xSdLWR}f zCy}yGUw0Ru84K{NueER?_{oX|3Yr@oGS10C=-sxpNsh}hPGBB-SkSyt=gp=wyRPtl zN+E#qk`=#wA%Yx!Hb~Y$L~dH#d*VIwYp)wdbZl9nZtXKWUJ23=?X|hbUXoz+c~7EC zK^+P;z2*MIH$SJ%C+)1l_V@;#uymke=&-X|6s3HYl`C$O^0Q~)JCUTc7&fH2T|cMa z!CH~zWBYFoT)w{bb#lINUqVIMu9d2=w8Ggdl7S`}0bA9?u3Ac*ahJp3W0EcvMdN_7 zzY2@6-)>@3YM<|t!wB0Bm#U13$cxSAO|)I$147~LEBs;7H`h5>p%hrEITL56@%yD$ zjZ9d*XB#M*N|RmJW6jD4_i2Z>$K?K(4^4tx5ArHYniTa1V_ z1kr+QAWf`b*370GLzqMuHiopL6jP6TodFdIHWok*-J@oV{RhQVx#B8E>@c1YD%V=A z3>|f0N}F>Hl6BH|qu639N4MOuZcz#@CYqUT*~So6@>U+ar#S&f%JAA^1BEcgnxT|~ z1i?L#QKqeN^LKRWFetX4xWNZw-7C+mk?yp9GVJw}~L5E%OUK-U4 zwsqir3eZ zwxrELN7T;6B$lMxmAm7f`2b@)9M+m$wr{MY0fvbVT8tsi4w{rK$s+?L?Kb0(g^?F+rIdMVgPg09GovSOs;cP4 z4dc$J&0HjYFWK`SdxR(y9IX9~=easx?wo1^vs-CjYGb<6aP2taY86H2iB*yoZdSVn z+g{!&I)Bxtf29}jX~Nz2^?I@*4Afvg;b7CqJ~v>wd@MIk|EXZW*9+xVmPU7THXwC* zb$H5r3_1G6Iis5aKA{Br!7vRaKdX;NnV`f6vWj%fgKVC6-cRd+kMZ#otXpGy-y$K?;EmN`@{p;Ic2}Xl>mJ^U{)wnb#Kv<%?y|7-U(j` z*v`R-HgGcuho#+|E6vDpVJjOpvz$}+VSZ+W6pekZh{g!Zxc_v~$FE^&`<&jUP zUML@CsF3bmgZ#>qm(7*7hM#*dpJbg5?>*U)0{|+&;a*l!zIxgwI0x3A@qL*Ya>6dp zc(#SSriGO|f6?{#405;V&Rk0Eax`P)xa+*qx@FYPrgQJ0p;MAoMnI+8gb)%bIglBB zY->y=z&xR3$YIfMisYHTHV5I)h%WJJj?>RELf5!I$zeZAANgDjM#g0HffT+aUck%h z)H#LSeqE`S0MPURVaZRw{mJQ8|ewRly!xt0UZ_i{n`K-CQd=Rd!5kvI`LAA z*+^&_fcy-ELBjzaJy&>Wohpp=Rij`b^BE1f8H>&z@~sr;0*$@bnyKk9`&|8F4+=is ztM{nycMxVbaE~15a}FXEqNV{5(b_|flg%`6E21(pTG5MQ9L_8^AT2nbH`;YZqW!^Z zy--XT!=K9NKg9g!4?x=|^DN#5lhaNRd4s1&xFN!GH8VA6QiEERl^j_gGE2;Z@&Y2lJW4PjVqNYn?>n0{Klh!kAcI%A1SqBY;zxmj zBk_rBNiy8ibGn5U$2B=z=bSN{a#vnvMspErO~P-*zSBGn_#Z;)P&jerPRVm(=1?{VK2*+1MsjoH*Fg_8#8PJ$6S}7sbfs z`{A+%lj8b4Sq@$UXe~h+>rHCpaBolNX1~+3TuULF-H7ZIH@|b^b`N?#&G}NuS(EK? z(ms~xw_GoyGJQ`~1V<>JI*RYbh(cIpu@HXPrUq|wXS-NSYO`thvlRDE#fG0P zBnWIUD`7;c9I9c?OhqYioY$XJq-tu^0+djMfzLB7F=orK0>Wfl^@L56R>INSfMgz4 zU24i0@my5!&JXmpo<0AA$Li0a2@zC1Bp7(5Vp2|3qC?VrgmmWE2E9J^!=cs`{az@@ zXOLzUwDeW0@q8(8ABBubQxZVsG0kD>Z~SPk@(Pq$ZD4Dtbpcm~n>*Hl6_@s!H0!!6 zM}-VmFQ0~>AD&Zv)@IfenlKy5K-K+HF(!f7IMnLx(*qh2Z^7(i0bsKp#eY>76`4=- zT{n?ClO1*~wtkE3iZ-sk&3G)up-wy9ASYyGB3;3uM`isLyNYRtawum!On&wiaUiWB zdhkmfO9xKtOQoKkFT$p3+|y7jv4KpAH{2L%EkfGq1qz&@>idg1KEKxptmvG*XP{Io z8a`+^q~2q)R@2X{elcXiS8+epy{{{3=TWsoEIOY-F;0T-3~^BQ%8g8s#B5p2xval6 za#<{0zNvc?l}@RS>(jpw9fw}a3Y;obX794VI)}65XogpUGqZ$TMT?d;PPGM8m9=v}-UwY?=8u7fybEAU&$3cUX&;tJfAW}Dg}fiLdZ zNBUJMlQzG1|8`m?S)r$o`|@n!6iGS&YhN3?2(ZQZ@a`W&v9sDZ%X$yhTu@3X&h!$0 z-5ar#9eNB193`Qa@`u1meSisI|6Vt}E=mpP+4(SdIvr3~j$kzK!e`M^l zD|`*nhVK&`lQaj5ytfB8qn%6F8`!KJF!VY}<1?n9oS9|sD=Tzr1}TRe%WFd6Yfv%t-0W;ybe|2{?sNDUEvS81o^8J6ZT!ai@)`0Rj( zd#b%LSUet%b381+6^wsmYDyn>XAmR^`W6M#$*&8q2=w;!M6&g<+(NqWHht;-bqwkG z%BNUlIy)=Sn0;(eOIQMU2e=5)57Tel;`B|f8lCf!e$bJMG>xy%&XV@uDXl|wo|T!5 zg}8mgTW4D)80G%VmeR`YinV0*>VMQh{1`HZEa`7wm}&jWb2odI?4m)n$nl-E%WB#% z+@PVedY8T$lgf+uH1ysk9IwKfi$$6zg2{q+$=>5@KHHSK{biJ`-g@o{j<7KMl6pNT z1o`O<7gV^*!EIJk1|cBmZo+$nS3LQlp|cTW0O}`K*Y{dJ8|Vvu6Gh}GhyTJ1zSV?; z>|5sBUVn8vEogk zXN5vpi(`xNFyOH$py8VE8`PUfRXYRG5fs{3a(Bdfm>FknP5P}Mye54RsTD4kBsVkZ zA9$aN-kdLz+-R3TT=fJUoLH=UNXCchNT=k7DFuP4|MOYx1g%A8exfHaJCh##C&p zvGJNFq&Aq*)^MLYaiq&(%yNq5f2pIty4I$9EDugu??D^-ustNgyNJFPuAuRmvgW!E zcw^LWao1kkWj1;YO}!y+H^@XZUqKuD?q0$YTgeYlz#=U<6Eu#9@qyPDv zMk4PU#&`{r&^eo2uV8_S^{NO_{OSz|nuxr}`#4UD@RQih2no2iUBB~V+V99oOq`<8KizMewf$GT(%_n6m+s`uN} ze?x78MK~0{Ett2>cnsxt+(x#wISw^8Cp=BI77hEA=ZIzFv!hsFv2LJ=G!Zd3m~*1Y z@Fg)HtCV*s&H>wg_#Das0+hn|Epn(#Kf0{AzF;mzVm~xFlu0@9ubAlk%d2?!kEK&u zOhtkfIvfuzu7@GTRL0yu;W!fGkG!m@&1^BnMKF4;8WulG@i()x&F@HD1F?!6g6ED~ z_4w*cQ}33^_~mOFA*_v(Zr%ZlLIEqKE@XKsyO7r!?qEznv)=T=v zaS&gizY(B-$3FZ>=q^yl^~A60_+`K4{FBnV%UT5HvrX;GMQlK) z!r~HY9Em}lhU0BWlj-PYTuKg4)Sl4@VaStYWt`6Y+OIn^sn5v3Ha^9@3z-IEX%+MCV$W!($}D>n8Y2UhHAZt zoMTqczMFKbX32q>^)b9hr57KhC`)zQG3mdTl?wC2F7GsVom1x-GA;~s8^vSfb1%RS z)HSC&q=t+#AYQG(N(AjAO`y3vQX~-TA_NRBjQF6-Fhjb|safE}IaWhfDUQ+^m!!Dw9_GLinS!^X z*0-Z(J!1njOs5+w=j6)U71Z};#Z(dXTf>UQr3dR$s?5RHsCIMBUbuSS6Z`iD5+!oT z?&qg-%VA1VB#R8LdFA5+K4Kia52>LhIB7s1)F4e{2YSkKDl;l!oulG!fY1?b1m_9ZZr5!;r#vo?SCrF;P``{wO|6bnBq9fY=ec9a(Z!vN2)oBz_$C1}fdeSD#Os{EZ@`G`~qI`sywMmZzo*WeVeKzzn!1@;5yqI zVQ?}PG+p2k3Y9Q<;?nwtlb{tP4UN+aH|JFJ)$sKoE(ot?3U(+>`P-tG5NP-V>sr=; zx?Nm~V3XSUXXlT~_qi<=FIuWyHP`CW_E%6yvOFH%3v+K5+m9VJ8aq_jn_l?=AZ-}e z>uv17oWkNDxxg#KO0|C)+JEZG|K>;lUIjC`aVM^Sd9I$@>ohEUxEuISdTc~p@8*!F z=8QB7_iY*uqtSmy8*-mNdl{Yo%qiwjd+(p$4n|)C+8hLZSz&Pjhq@1coJzw0;3{*A zs)`SF%l^2Fy;s1C4ZuAd(LOBV^v50>V=vh_IXb2x4N+2m|Lr5e&>y?U`}_O(J^Nv_ zAThwU+0<#?_8&-$oUWzPtA~>BzaBbKoUWrR35PqdY;)+*qve72e!0b|-8(uu%I`Ty z+x}&#G57p@+cw9Zcv@F@+zUScj}<@yzi&LXB|)RQc$AqI%9Mn3b6C1?(~5V#)T$eI z$0dvw_~$JEHXiToZt!mz3F9s!^GDzH26Z<{{DqMnw>?L{``)Pr0>8Cr@G=HQTd0V~4qA;9wj#sm{7=U^lVvjdWlg@LqT zaOFC}-vY}+DVj0(XF{9z_jBfS28A?~RcA!htiQHOfa_d)9s3-6uQr|U3?)Cu54E|` zf^oWV7cmn|LuK(Rl1PQa7|2SF>c=*NgJF5jI6$JKe@J3Ms1xy&Dc5#S0mh$v%FoH3?KybcfT5gYt zWLkdDG-c+dFk+V%7~!Nlw+15ELfO~|_4W=w{^25Wiv*-0EEuP8@T*%u2H3iIaPQl< zZz&lrUPWr?ooqftFj)n}^$ucx-`7+YL_{CVziricHsg9~c)LjzXf!93A7UI6GLT}h zYP*9jO2vS%&MTp+&E0i}+<^|S{DhpV90On!IgCm<-NKz?(ub@{{eX#sP=(#K7W>eM z6~RNLg*);Y>j=44Si4JRrc?(IA4F=weqj7L^vu#aT&^M% z65~^0E)rpas4P}`lILj5PwXm51lhG(Le^w-vJ<7Te~ta>nl;}&8a^5)Y!nO| zj7|X8WOtac-gGBqRTjJ`%e|k0#ssg zP1Sc5P0y;Gm^!mJ3QH6eCT~fT)^9E)ZOm*cP%up7I)Krfv!yZZj-saRk)yXclMw8p zeup76-w_RWDwXD-fD|(jNprBJ=q&+wO6xH?7paz*2x3yoTXC;Fx}Jl3C%cqg6^~|i zXAZ6ec+^O!6?h523*|Yb$VO1m8Rk#=>5LsoAF7O!@NJLU!6;UV_j{F}O{VX`8OHCe zwSGc;gZwczHWo8l-v|emvh#}H=XQP@M(hq3Y=mx;%DCI|U3n`q82auvt^r7Ouy;RU z4o<;Vz7arvqDO{W7hn{BJ*l54V$V1DO`85SHRM(nYANIaKf>IbdVd{#I(9J4ZwmHs z50JDUseVE?!n?^KxkKN5x1tXwgn`W_e$xe6B@9Hy?0RKDv$hR}@+aH;VJzg06}vm%vzE3Wh` zg|+(he9lq|f6%$ICY3SJ05{+&`EH9bKZsF$I+s)a)z|(h?R`N@mbwtn1kb3u#Ds)|x`c`u zVVbHLh%(EvN6no&e9N}ny~#8S+=aI(AM4ZV<6L81gRU^sWg7}#PcrR_Tx?xH-&x$f zy3?`=yi&I*ujlt_cP(?Rxl%dY;e3n7g;zhqoUWKonf{40(dEwhee+c_u1>}g_p;_P zadU(7>kBN;BhOP$D9^zQ*8`m~uVT50hFPRZ%-zI2yGg#X)!}bgtZxuMjot)Sr8^{y z8}T#S)BnWT#8Jipvh33DvQ4q!+9g@48>(Bm4^bal-_SS8cKCeCyYa5)SSE?gfXsueL|Rk&D0RJHqySCEEX9_Q$7+FX zLBICd{Ao9I{I%$_Wnc!PV^zxB7JAKX8*E!)38)OuuojuEL8Deu+{+rVf` zcr(Z^Rkfu#h?da7gph1)%3G7-5jbyWVv25&U%6m8ZNOrFsGn}w*5{dd>GQ4_VUTRm zv`nT&rlTz1rt}bZQFKx7kiwOkD`wfV#mUtUhzFbmVlFn!@ww2u{^X43WaeCQ%Hx9O z7_l#PYdsQnHssjiuyJl)59jpa2urg{r)$ZgU7(V7{9!fosr<>~spT-B;dSg-V%9LU*wfw0bnI#I~SE?k*Z(3`h1&gx)BoL?_0#@DVU&Fo!UcNK&vR zuwKZvco}FbSSti;=nP!z#w0|HoQ^7+H02zLqc%UU#BPO$BRJ7y!em3sLww(E;1Y*f zgozmC8qRjDgw=$_b=7r!a<_d*xw(f$gk?hYO%qQ`qOWpY-w?j;;t1J^#gdqeb0u$+ zMU>Eu@n-905Q&+{D30SKts}aW(KKJ!uPv9@ARA71W>{v{Nn1$~7!V(xi(#PWus&<< z=TT}ch?i^Pm^QHNpMsy1F5HsiV%0I@w7dH*EoiE_eKdsB>aNRUM;Ml>k~lrOb259L z3HuSs3aae~*qY^99Pk5hdS1>6!f|HvBJ`uMN)9iBm^QI*%)8_kj%yiR@0F3(?1$P1 zAE?cbLm!DzeIznArL#p0Bn%3tL^Np+Q`XpwmcxBDYORBCW8}UxU|@fHbx-;^cU`Ny zbN$=;!g>Rfk{LerI8{u%cFGpF)m|xi{#yR(Xph;sS;J^mN{#(UXA`hVYlrB(db@74 zAz6>L!%U#-qYiu#{5i%`b)U`nzDPy8#C<{8P^-0o#&rYADrMRm{g^IO|q&&W~wTaSvx_sKR zL`u!AB1C7hHKD2A@UX;Xa#rUnj$WMyk4u}OkD80L%K`Kv0u`J0SCr|cuLwoUYG$ep zwMWCE-+M|@KeDmdu&!!1-9BQRCM;?Z*R#$p&Z^lE+fuDuxqIzjIjz>T+szp?=Q{TG zrpKo1w4l1BTbx*!&)L*_i4ZS*H3u#;nT&pE%l6Vr)lRKHVp>pZA^@rZpC5yU2yF3# zdB=RCT`KpYm$REY!#mN3#m`H(pD+}p)T}(Mc4EE~AKEO}HW_2skU-E2GUak&wa5P_~| z{Kc*|Z|HxFZ( z-~Dv=GpAP11+NTux2ij&pB8Q{A4;zL1N>iC!0RHl7r9%Vxz2LUv^X74uJB=}-TGf- z-{nsB*2|4&9wDH=L6GoZ%-E;+ARtmx1Mc30mVq__uCMLC6V$(d%>9LM-%be~;u*H2 z14?BbfgcSwzSm_$0_;ktE=ckd4#69KM|yr99x-L&Gix~{mPA)#Fp`q&?8MJt@>#yY zSU5P+SU7j;ujASfznvEDA4}yUuQhzfa3gKDY)Xe}kM(;sckkQ$dgE~u6kEXBi)%Q6 zfnkvT`URIzBsl>CgMhM7R(DpHk>)hAv!OLGwlg%Lb+@qxJq-rN?am4MXk+4RKulgoW9vlx_auMj z5jJr$a9Mq5uE$_dZSBE&jEVt<&#gfeuLb>kb_QEj`_T z8s=RW?Tj7**v@iit=@%_{8Mx{G?b`3>x#@lp>VFXKZ?61x6~q=^ zIBvTC&thIUgpwNvFfe{F31I9fNQ`tJ}>jw%~ekke>!4TQRJhhO5ch9YCO>As&{l;X;5|0@^Kb9Pi zns$6m3Gcbj&v^{QY7dggnIVz+!NC9TKmIs$$hsSu(XWO7o2Nk&Rzkvro(TL`bAv-# zhJXpgXr76lC&3VY0E76y{|KP)zWTqP`ZW1e-^Dv|$g5>`lLWI}MCI4lxU zVr3=$K_Q$>Owr#<$`e6&czERSH8nNGrl-?rU?;~WCo2$LZSkUSR@Oz70eb=!|j z%}zp>^$k*1)&zO+&j(IIzi8@TOsOA4%EFFq0TF-arTB?B2#Fx!;?wK0!(vXi?awcq zbXw^{miVRjYVmZb(ZN&NlLWZP zkjB8Yk5QU-{>I_}Age>^(v51c@ry{5)e94Sqv4nDD*Ns#59!>5EeH_EHb(v%&A8x? z%f%f=7B6t`1HT7|Eb(GdR$;JHAz?;M$%d4;e^Zf=9YR4t0oBTP_T^Jl|2jnp?kqYQ z3_KDhLg?7aNEejulZr5o}>s$_0%&aju`j{tqgtn}SUS#5i90z!H4j{yJB@zoN3 zW#`)24cy=I?f(Td>W5pt6CtZbsc zq*_k2K4b;2Dm!10B4cCk9Wd|wpO_%eW z?FZUavz8e`5Ff@G8czg^GJduD*wvlD*wNX<_?*a`%*rJ)^Q^((AJdgEKCxAMH?cHC z$H+RgqZRGLE?1v=Tb5EIr`VvXtDmP3N5;F;FY$XvFzx&U5B%y_@( z1J0wCmA;5rO2yN|62JR#pX^CD)1o-*fz>CN+3Fv1rw2l%p(L z+fA0K2yLS!G`Io$GR42(hnT5q`GaMGH>}73cWe6vXJM6ayn(N$Oj!GAZ0Z;C_x(Xa z3_O`eJ>9+c+FBa+Qo?2T8J$3xi~qFkE|jmmf~HiU+jQ?0J*deB$N9t2rWPa3mC0k^9K|o$(EpDFkj|U{F6Y8k~h;1=U6` z`!HRLpzH7hzw1-&oY^sbjkOGU4Yv$=-1`BRFA~0^uyGYKrkluLM7^6GQ2!De{|QLw zH#j64y>gY!ZTCl9)%H&h6SQmGFX;FH@vJ3u5ok7B!YY*SB{K$mg^@)@i4AzGTmpth z1CL4F1=&XXb6YmUUb8X5yFW+edZ((a6urik5wS5b(dETSiXG4_oPWsgc|P5OD+Hv< zOGce&H}xpvWE1_3EdE)=E?w;D{DS-MZpHqbV0U`hpOu@_B#s>jo){x0BdB-P8Z{f6;5jN9d}V5 z@VSSSFy(=}zV0I4qi?DVY*GY2<@` zkJBka#>RO|e$PHcnMiEEa5O-fr6Lf?v2A{EW;9&FXMlnb(pVuO9!z&|*o62J4`4!m z0qdTrMu?FCj~UB|KztZ>{^28otE#3g2x0?OLaY`9ua5gqS1H%%UXc`dI9b&SnZm}k zET%XzxcShJDQ+vkp071qp1)F|QlhHZV7sh% z@8N1bmgUb(cXGWZFG73^< zfL-2a>b7n3d-fgAguXmTY`hp67bCDq5NOocPpuSdEQ-yc;iA%-DV0fBwCfN;#ATPa z*5(;&^iY(UPD6F@>-7v#{xKicRMBi!S_E zMu@F)inH_fhkQoCQ{nGeUbp)f^3uaNOjt&RrLfBnf*h`W@;+}`^Rp;}qiAP}ICYw( zyrXPqTnk_YaJA1qm3sPwCMkb(DV=PrApz9OT6C)KG$JA!)#$% zY|4GP`E0!2RdXp{BqIbE<-0C*-k<7kep0Gw4G$EqwFv%E9z0QJg$V*;-Rx-stq$cV z?|qv2H(?>H1%NgY$~_=G^Qo(=Yc6Quf%;0_?dcqGZ?Pc?9n}GvW)6$~r~6=$O)9Ib zxUif>rKry;Q+qpQw0mSPF9gig8*qfrH^tO~;(4a6qufycY!K>1vX%s5?A(sObZ&R_ zA-PU6{KD&TLVo{RIGCiujfW7PQZKFDVmq~tBjYDNKG3&v2^%GWvD{iSOJmBwIh*Ss zf@BjjM-rQJviX~C%$c>_E@2Bc%i87cor8KfxKMLsgWa+0vjwXP&F?S>THIH2eqlpp zKKECQu0z-}341`it^mtlE_Za2}I zPI9C+fgwA6@kJF{-w_e~w7pM7@@Z=fRZu;Su=nPwKDk86@g`Ft@jZyg+?U-MeW|PP z(ev3d@wgZdGUn%~< zb_CsYTA-D7`?PVjNKKyJIW@Z)J#H2rbBabbfT`zgarrBc!*$%+xv-4{GFCbeq@P7# zLZ-?`!R5mKF{{EagG_Nf!PIZDch+6r#+c)=k>$CY#Odm>*i3_cHau#<2yATL!Yl5( zvR$JUE9#)^1Y1mf1bJJM88=2{)Cc?3qM0sz1 zzB+i=O4K8(s=Af>(R#LTb=LFFj&nmgnNdZxT-%~J{-GD{>jQ{tTLr1-pU`Bm&%^%F;NZ*!)0+>UY`$Ij~dbQeeF7{s*u+^O?R~=-qh*maQ5#5oeg5+kQh%#QrdDB{y$@ZXvE5nXb;5u1X#^!!YO)7V4LVz?7;iA8uf`S0BDT z`3+H3Bunb?YFb(rw^|jm)1>jOiqXmb_6+|MFZnefC7-vKqZIV!D`l=sx9AAg#I6-v zc7OTu3#m0q#(J73#TkEp-RHO`Ar3yDta2VonUgGOn>ZPAFy;C35OtYR(GdfD{4DV4 zmDOxtCe#RQ%!e)w9dHqL>qoz9B>462E zHqQt&REJDIkbz7$(Tn7Jq8llCdc4HdGDC+o+GT369v37F=ab^SJ9*W#wVeuFd-O%< zsqwy?o)y_PSzUVi;r9IWC@bE@TUZgrtBDoLv7MB=TsS8R=C4WeQ$wT6_hJDHb=-_j zO1z8p{Id8v8eVGPeV(JwQbV@3b;Bhf*zS5Uoef;DGtPOE=sO=e1~HQGC^C05cA& zH3f|{VW(}xyB)Rr`R20Clj&lWl6;LCQ`AgkJ3ZA+m$~{7G4OUv0I06cit>gwvv z)85QVU+4a`wN5#71jF4L3w>d~3w3Spw1)$|YtMH-4yr&v2lYmnZ1SB+C!ynzf@IIyQ%A z)VFZD2D_awfQis9#G7X|1DHMTPi^TrMo=v_+R>B@At)0*+PRJhZH}IyyXq`;c+A-$ zji{79Q(P_q0kcIL+@7%-j@`EDhX}J)ZC7}C^HqK^cwy~scr;7WOxLlfM=EnA)>^3z z*1zHsD%aCNx()!_l6`tO4u|4?%5%!ylG7+C?ZcKQllr4WZP6Q&7coik5$El=)gcCE zs@-~1c$kl_p4;Jy&7q}BTv8I&_*h7bh_EnwOPlA_TLfz$ZDS9I!jGP2mjh{*ShJxh zb)!}HjmxvykE9<0-{4b6;IO>avF**o2sa!58PR~DMn1xcYmty-vD`eisI@AJFnE1E zwU~q}1m?d_l=aN(RYGa3Mp~U%ScEU9^rW$WMxXta(vXfv=?R+=;-4)hj5{184MonY z4$FkF`NU)zH5Y5rh@4#R<1HsXQYNVk*%bhR_3~DYo`-BZhgp=yM=~{9u9_;?2*|5l zFC^nZcqZ3Dpq)@d-r&C65Gr#~(}a<>PzY;w48NwSW#q4X6Kn`B%x1Oatec%}IkUrO z4B%^+sNnblGmx2uu+|yP)HakSaSwxsVl5)iaG!t+-Bt0qyQu#N00ofK*m9hlYk`nB$A@O(lsasd$^`WtvgOI~>~a0wTE4=wKi3y=s$*204O~>i%C!8f_$l zqG|gPCU0-<`F8Y^sz^+n9A|%XtzL((ZldQYt1W#-_hO?b(7wk&f?gI!)5B?@Hnv%# zH!g1Wj(Zf8rTdx;kwJu_V=MaVv#WTQZ<&li%;)o+u&4MLT@M?{7+Opn`ldc!u9u=~ z2MGUs(ubr(Xr2TD@i_P>b0TtP3knAm(o!@<`kCxB?OV%Pd@AE=*5JY6cxDv@&rSOFh2659Is+vGag?dMpsNz=l5gwf+1UCY+dcI^%m|5Hlx$;>Ce&_sAUuwV}b?TYIf^ z1w_$-pcn{PG97ss;~n~y0MLhZhYuM_VObon5&~RV*}#Rd!&tvi-r}!AhVhga&eVKG z@T^@W%Smn<=O2M1o(UZ?!O1GRFS4_0+fl?>eQO^`y_`x3uXr`EuY9a08zd_H;a1K=Gcfl3#bSV)K2UUw#}H zt3IE`O!q+uEj@$b&rA37zi3~VERjn*A4w!QY8>9PvwJAQR27upoRFfc5(IEY@ja=V z$cecE=ZGXEBqnmj+$<~w8MxezoJaP0x-s=gu232H9xrN~Y`ZI{HiPSJ@*_18%r15( zw>pvd97pykhzMhQyl5e z+?QMxmbWkx@?EZDV8Q4R^ZEouniV);Rf2>Cn&K+fIAHxq{sFd4sl_)-?b{b-cVQhEkZl23pF zO^&lZ{EkrN*RrpSd-f&fGMrjYFn=j+W%Mst0Mm z*c-8JhmSjUq1bGJj8V03EoCTes?))$U5xMJo#rEpdbOd*c$Rpe2Bnw~&2o!t9GV>W z_vV=lDf-NA{7GM*{h~sXq|>PI(D+5$mT6^!A}h+Uq1xg`T&E!h$6mY!DQoHQ=|}(9 z1l4pKpg`5Kk>3IowVfWy2jihu=^bvk@_{V(Kj&xt2QXl`a&&svS6kJtN*n#^(9De? zz_P8I--OkBk`0}x3qCngUp+1?`D9KJFpn+poJ`79uN||^7nZ8op^IE}DYz|>9*Tum z-jSs8e;Y-5>|L1Q0}MUl_q{LG&LIlbuchlq+PS9333Y#dL<+rl-r;*DBG0fFj4?XG zLr7fm*wN`O)(OXQNLh04yp+vHy=J+(@|ra3s~P1rJJzf?=S{Uzd7sR)gH{6^G8$>h zjp7AG!Gx<+pp3%^gNlah;etszf#pXww`Gr@$=Q{@{(c9_j9mtnwxhduVNfFYUKc2P zlZ6dF$(Nq@d`HnDVHjGACO#O8PxCt&m)q?RwmrN@zIYstd2>W4JWoG`kR&u01l$s{YzyB$EWVo( z5Tc)>s*rilxG!Q_#EA2P`BskPci&n{XaUHx`aeSXqulR*#gI_+`w8ZyrpTS3;vnlj zuYNwVIHG_M-oWyI9t zcSi;Ofn|&J{T@3qv>2%4zBOi}F@qI1sd;&CD>8D?#gA@w(z^u#p6Phe{lmlKI)yYE zXSvcoj|f(JRQBAr9pq_FdVY^}OP-5|)js#GJ4v>4gX_CjDVxSk7u8gupM@`$I*yvu zKv@E^eS?O+J_@gzp;1GmEENSwOM+zNK9*TsItO+$6X0jjmk9ffwL_~`$deBMWT@C zLMM1z!^k;*SUV%-nJO%%iGQH&Jm2BhG0S0(3=+t8enCO+Zz=)BU` zzSbpsj~@@}L@|oZPB_0)xe#dX*UN6guK;(si!W8`zjA{oWE64VCkK-*{_OhaQtTCTN+oo=g*REwE5j*PSfljdP3e8F}cWt7X&!UJ5M#uz=qN zg^)r~Yh_RKEbTx>e>0(T{w%SQo1;QDzRMF*;7Y2o)u=cah{WW8!U(9_RQhi8cLT|b z#l|^MyMr~Xu2uXuqyo)8q@Ze(v?6LoW=_FsX?o)V*kEgV0Tc)T%YNCm!3)*6KLCV4 zCZs?G!_c9UBc!9NkY@9v1#Kh!Z{AB*E-~$8+Kdyey);E#<&y}HHkh81>$tTX^mFiHZh=`clP(&mA@6m5j zfRCFUkx@__wUXM z!-|x|e*6&heP{azV!Dt&hUnIk=G5uT*aKeTusbFp#rpE+Twj>oL?s6Y2j7dlKPL!~ zB&6l#RTg5Rec=dG{J*+nPGriyicMGo*4DfOCTlo z<@OIxvgKC3Y)X42XRGk0f9Uh?;OAEXQ9^NgHJg%^4b*nDd{)!MEQjPE(f!i zk2)`x#3fNdQ^daM4TBXH6_I#^Mj-h}mlZm1|F=~77ZYZ6x2|79@XlV{%7RD6oF71 zeWsfEodqW6i_ni@tH$?Q72q+uySw}6U_)>Jh&=4>@%2pr{-4kJzibL+=n3}!y6}Qh2m?bGu^i+YcKR>$KB$kg>=*J5_#nXktIhwhJ{B2h zf5`LVzAW27+|qnT0sCVcUN#?=Vf@B69`YGz{>8M>sj0*q98IyQiR2zlw-tuEQ$Zk@sN{1yZzR>8^PZMbte5Kni?V4*i3;w zZz<)?Kg;f)l?jo9L8JL=cf%MAsDmnN$BF#Q-fxK7g*;As<#Dn!BV6 zpoOJbQ2uC<7dQTe6g0AWv&pUurEh5H?Y|l&U!?a}YY_gvJR;gZ<4{GXCQ>DXnsQT9 zwTv=jUcXqt|1A%?Ae~n{d*5wc67nHX2+_>Aa!Q)Tqa%szpM~SM%9GdnWuz0_Qg%w| z!4X1?jd59tV&Gax*#uwQ@81ynMhDupFT*%2_%o;}HTgjj@N`*-`G2kn;vD*WWZf9H z4PBTiXaAva>4emxJv+wHp#RUge`2n(5opEfn_;7U6)8d{CMD|ECa$a0f{tKw-S$WGXs7VFhzqOUSe`uf>!^tG}-_6CpO;ZPI`4m6& zefGE`gfX@tMM1;(?^c|K0#JE>b4J<*~@hs|yt&1^R#&FKuJ2-#M*)J!Rrkxe+{ za_#$gdu}p+wiRm{IsPx{_~%cRP(SVnoV4@52#(R+iAAyxXN2Lp08d9;Z5EQ~*Qj?K zW-C@H!Z7JvudF6SJA5BEtEFgTbMLOt52}10_RKthr{twz5j#* zZdTJ)tL;8{P68?jJ|`(y7*$lg@mmq;S65tTbAFljv@U+Glw1_C8NOcyRnxIqt&_A} zrd3q8kYE28ML-DWe!Q4G+bhhx^AMSD8GbabpDNQ*L&WE%@Z;HDhrj7i-k-H2q=}2oOD@Vlvn^jWpxl0F zGN}PBx6D=?9Lh%EuqA+6OvFK+gYn?@@b>Dwiz7SFGVkH66{z#P*2XKK)?!f=5s%Y2 zqN*)^Kx_s2$iZ0d{MsnVWk0zvBYtS;P19yIm2js%=MnrU&&FZ3r30`Qg*e|Sv3y2b z&-;nv+zwnNqPY8AFUbpLFH03xd0>L+i0)3sYX-rn># zMFbTMZFB840fnlF@aj2%-&40TyvCvOoAF9%P>QaM)FLn?-vY?G2ZWuNpjJDt@H$3A zNNX$^oAaUEVBz9w5flW(k;^5(4@I?*R_IuLByb{~r)G&uYn>^^%F$zV1I~SaaE>?V zl>HKk$ElvUTg}|C>{)V~)7B)N&e_c)J=S1kWK>3XepyGxf&gPKE}*sC)hvQPJlh1o zvpSXa_Wr2td5a#ItvGadL#)xZABC#2zP@hK)u%AgEc33yhk2LbI*udO_9J?`W{d0L z)&*0KIH(zAvdnB$cg9t6z}Dknn5`@;&}m{Yu>E?YM=n~mOcRsCYw7gWPzSgN<8h6g zNq5CySlW5rWSbY#;QGm0=SZ88q2bx{QPS-Gk|Ep^!kAfbI5l&{$Y|Hn3)BYlPa%_E z6F{*eifK7+swilJe&BYc$Se3Pg72{_u(w)Kv2l9YaK1I(i=Swt`$Y9HT{5el9Rn%| zO2MPO86OSxIUFPUG<QK;p<<=NNNSDNJ}ZLJPntv`i#-Sj zJaSc0|E5;|m*(Z~gQ8@n5ESpazSo%i0nmKxMD*N^L z&`2@MEpCH%E>>lau}|jXIr&Pf6{~_de?5RF9`UI(O%C? zUG4iQS{SB^1*)?fr9JLfk5}mNCA(j_n>G6f2&aV&1*&4+_ERe;O>5fPnwNy^GBT>^ zxO_RE!$EC2AK`ig)dw&wzr-BaHGYQ+pX+tj#>))k{|dFAgxnKCo(Wv)$%MlxTde)k ze7UbNYn&`eM92GFTB^||$;ik!w8N)@L31Zy+RoRBUE^}VD*LsI!<-fR4c0F3XsJo4 zpzXG~R40|X=rv*=9p5vFU5XEauX%}DM|)B0c+96eEPo3#R%)vqT^g-?Vr3YH{t+$nDLI z``&6thjbGC_v+p8+!iH;&OPOkh?5h0Y;O1HG@mQTJ=-7P%>?2H3w2>8xuTZn;#Tw3 zpVJ%%-a9_s?(~mk3;im_>e9_RTxwgVtM7P&a8+vLsZHe?Ul@Vw(R{wdN2@{Ybp^_4 zHeTUzvir1aHS$;2)TH}(3BAI2E&a38mPTuvZp-lapp`4Bn8?-Z`fwdxOi}tW>Uj9Z z)#x3(dA^TsUh4uZem_*A#dChj=hCHd(Qg=JZP(Ex!N}* zf-I}7bY13by4$ys=??TEMf{SKL?Op>$+x#u6j%2U++tKv#DBVUPB&0%F}W0!e)y|` zmIyn1u|HiiSLgXG$CpYDDxwjLI}9u^=bZwXA-Cb*y5-dM$FWPO*XxYum6xQ+Nq~mfr%ex*f?csu|Rf8?Hwv#=a`I#Md9k-gY z?58AlI$^l*NbpV%Y&I*(n`vI;Jde>+EQ1~9VNBl%+z#eT8a5h?dR>`x1Mh2V+N^IG zvGo(O#tTN#O^?blU$wX#C+Iy2UHh@Bh)Y@?Nav#>D4BEZf6WC|x_GY_SXfzAQPIwK zfaSvLW#=K}>C|E=AH?$x9><$(=!ue}c+>Wr_Na7R&4!Yg+5%OX_0QK{GZ`ns7T;J3 z$+9clT^;T~`T*NCKb!2)@eR)E`B)IZ?W%MVn1%C9dib^9cxO;+X{xhGt_F2HUB0bw zS~W-*z5~`Y<@;Viq#&oir0@JSDUj#<*6|6WcQ7AoOh{jK;#YubL|HBeGpZj% zGFNR4u0&xg3=Bm4M8f&Ja?&`Cs5y=w;D;EgK1;Q@>z0plKGdR&80h45uU<_j>h&o- zdoA6aqKkqm9hH&;N6R8YND(sfKWwRdAE#HSuRK9MXOUyhv7e#9i7?lGJKn^YiJj|F zUqzpiHL{cbe6`8QT3`eY$704ion}`j#K-nCHnT;i4P~R*-T-Fc{o;;`?BRl2bQoRR zQt^cWfm_Gb!K~g$rg!#i*5|89`(aQk$ieC}#kI*uz3NfpP3&Ol`3hz9Zk6x$g47W1 zIz;K2Lx7mL@l(U2t4gij_`l9$SpAy%f;6Tdap{*Qn|G7G+FU$Y4-Z#Iyy(LA0g8(!+>bj_9gYO@q zRI!AvFL}SiWzTKgd$yhYfX~xgZI?|{DN#$^2RklJ4SHX^8&y_(1S_8+$<$+yEPJd4Uz z>Xwvo%rPCHF3w#=<^|77;QPcB23_w{(tF2oNpv+`ho+j2v+Gq8P<5LoRp1l!fX22* z?LhF#PKMtyP3|a`)n(h^m0uDZX2`D>t=TifuKAMQ4<_!Y;c3)aeqk~Nxy~9ZntC-;75gOa0HxwhGdj^E_2lJ#bFv1I+G*^awimxX z;wcrfY%u7AwrWX-<(%)W+aG&hm_bP}lyuboSCl2BqoQ@8;mhzv-Zf=3mzFdSU2s1+ z-)Yvs-F49-~+v&8FfKTKa)Onu&*E&YWJnTRB&%-W&p-^sLK4D&h>^D zX*f9MSKbU9RGUZ*v&WTHEnUM7{N#lmC+rj)WR@y3nv$*s6=$dFs-2w*-!=q#qN^gE7=B&sjo-dh=O4xd5 z1_~5f+^tw~r?>?Qw0N=N?iSpFOVQ%)QlLl(!2$^u_*VD5-*e7Acb~oYbAO+I$&;Ct znYE_8?|8=;bMYd$&0V)jD%AjusufU>E-IU8yRI@Hwmv_d-Q@l_(Kurv+eJM*tZK3- zS4@^K5mjZrLZ&=kF!%t|U|LmYca!a04eCl2u!}|OKTiTO9o)hc*!p^A22Wv1~9H{FNPV%mM2vGvuJt2VR<8!*1_~9mQs!wd6ssb#**&+6HV7AJnPiR`?M9$D% zw!6(CtQhxbOfqV&*_<>TGKZ4&^Oz%?b0Wyecwc!>2#!ohGch%r z#Uy5h2$#l~i{Z5`NX(vl6}$^t=H>k$KyVN@bJ99nAo0YZ%uJP~5O;vOKsBhMAp3!E z<@!F<7b7%I-Aw6vGL9cJ z#rFufdt%ws#+pf$AxtG=TXKbcX^g7u}By1<}%7Dbxp&sQ3C ztPGumDKSfqQHeX7gW90r`we>ABVX2@>o4Tx0m4I(agNV*J-xjoFwMfBcy{{y1$oxg zx}ED0Towa{!_|C+gw!fq;!<(Wkp zRcN`Z&tSrEHNRkkL={hOM11epRP7B5`1a3b_wZo}!0L{!#f^D0%Nt+#m+}C;n9|}J z4JEWTj25}=r?;*R@<}wrek07ws%`xin#yZc!lAinS^{9^rgP2G2B!_|@DBoLR}`^` z*M9RCJOq1>!Ll47AES1Cq4rDXEDbn6_kQV-7)$8fEMlQ5QIe+p&E_m0}1cnx7n zqPM4|r44veG&Vp<&xdY2to$BfpsG6f-D0u5J#VmV1M=SZ8^7JcE3kmw0xRg|IQ#^@ zI4d+$ZHCtfNI?cc_U#I8drMXc6z9?gsoWa;_Cto6J&l|pD7XB#w; z>`r0DoF*LMIn%-bC=jF*Fz8(ueR3kHc=iT_Y%*1RJB)E(@3{W%d#Qi$rTO*Sw;OZQ zHoSWqWv)9(hD?^*Ba~vd<*gHUP1>5>4xEB2^q`ek@4gj$k$BjA95Fd=A_)qwH&d%2 ziP3MRaIyRTH4cvo$jr+qV*%=8@I)tD%DehRM? z8--a!RPERFsZWeM0+w(a@K%?oK7c~`Hx&u-A6Q>jH4~N!1eCMbIWQ)5H$eug+?aG2W-PjDE5Slt?7Y+hku^T;oU z-DAL{C3I#aWx6d;RnUOBt^sH29kX>78-GFNZlwMX>8Qjf?9P{TPt-q+!%q$Z>nFCd zz%En^w0PxJZUF9Hs^bh>C~Jk%@)`nsXW zQU6z=e~U5xRHLDLEWIaetu2+RuOrn(yI?J6_7HA7cqHSBAG)*Qiy4Mav>W=G1?CRH zS=AI6p4sJ{Uqy)6HTWPAKAv!ddjOYda^F1x!;b9)`o}*3Ca1$H`)`QR%Z*p#9ze0% z>eIM(g)KKnO{yHIsj&5^bB-}TU(kix)BpJK#rWB%;8cayGv=zq9qpQe%61F!??^9) zOJHqGBrk6tDPD>(Yx{MLi2}*T2M{ngM$_sV8;@qRI^DD%oVt0+Mp^ZcG*3H=HiL&S zC2nquHBioeBWmxTox#7dgQ)@5y_k-o7)%Og%v{Lp#HKU>5J!@a7g)G2BC1gI5}wo6 zv~FK;DLH?rerwP3Kwv^fM3sl z8;N16Xj`W+x&61ravDzm=)2M`%%7#Pye0Qmrupb{kh59+3IgvfM8kqUX9&nW1cbfA zzO~$~^_+5~%lgVOTSeCxW>H4sC-z}SNgNWA<69isG=QM0CP-{E&X^l~5s|fQ{ zMB6Jf%o@OnW2u&rkozw18HKisT{yABa+bt(;&)v>iA42rAi8I_X(ZHNk?bP5C^39} zx!4;?x#82;20)~wptU_(4Lp~$iMID>w1GcrvYi~oO|>5#0sYwY^x3W;-|5WMCcvw$ z@jdZTtNGlgAh1j$d6%fZNr30^n~M~BYhNz8={pcX)%>1cYYZoP?X@1P^=F8h&8r@a>b_)GT*?%1eV^%Wv*Ge*4k0I$hKB}r=!8A=S!$e`0bq@^(2X;<%vEM-28Um@kmh3Nl z7lvEaBd;l|QiY>UsGZyS`5z1IZMCuUoqqD1VVGgUcyAf__U%_xT)0bb7qjt|ReFWH zcAWN|pjTqpQUwNo;jt5!;pWVyi5^jS0{IFZ4^P*0&Dj=!kPlU>!Al?MR&9DbVg*FC z(7M$k6%#9Ku|8qGXH()@^?x5-DA#Gx8SxadytY4i+in|SJ6KA`DAxg1gXH`dgt}es+<>lIayqmXg23i~HW>j;SZ2-oCT8 z!dQm%E(6vGOwbjt=Hl-$)J@~gqTW=neN|JvKsx{Wv?U6bhTP|m4MC__CZRU_MX9gaJ+ zmpL|}5sRbqs3pr)v73W^myF5M!NzY49ZzVH_5Z z7qql4ey+R^xRzOajG>T)u597gw^u7mAujbh;e&;ww=&gFe*;JuMKceMpTt>VP zS}ihT0YTP#b9ukfi}M4MD51V(@+Ogp<)z00Cv%;F=bd!RV#Yhl;G+dyhPvtm%viq7 zZd1Y!L0e`sk?Xk^`PZz5^;4woBYQfEH$WwNyTRVFay_Ezi+}R(Di(`=_E*~U);&`* zvv$>quYv)6@&VF|d+r=8rwlbPZMt3m#6%H={n@p}Zye)Zl ziT5`>G}kPrOX{Sgq_nsF3}N2$q>yjtxoU+Y6ICY04L`(I@@)icn4Wn19p!vKw|XGi z#lBGM)JJO4D}<~D6!|VxLWa#`{RwQTJ$5(C?s$muiFwvU=g;@y9`*coQPK9x$B^5w z#)GF%3^wLxS7yCiE>U`l9)+RBVNTV>3BT-f6{*=0^*`pHZV=vUyp)ob5o~sA7!d5Z z`?oO}K=qNH#XG#Lu68vgC0n)UqX!m%bL1!}b<=o-?^evwjHC?^Mz3EZ+*eM&{`{yZ zNxL6L_gg_d&n6;r6TYfEY!Y;zFhbZl?S4qNUT1Lo4MwvOUM}3avJXIsCtge7!#3}O zy54aUT?MJWiv9$^eNPF5EM0QMxX#$gd?m9=0Ks0Y`UtOHd}x(R9N~89f3S_`iXqm% zY+jryt{BV@SRRiR_Qco;j)CTu(H7e6bx1UGeRkH#l2%cUlj9 zseS2{DX@~nyqe;Dz$vFi;X0+_6f3x`6WZ0-fW@ByMtPD7yOmmoytz&3px`a}8)ea{ z^QxQT%T5F!zhveIW$DQx=q0>Zv+uNSm%qL>PUJgV*r4Z3qGFyJc#Jgp0t9$cA(xQ4 zy$HM9gC2{_;Tn!QgIT(Y_%&=9FZ4dWT0sl*Y7%|k6E<^3bOlhk32^s*q8-;TK+a4nz`a^3&nYBiBpoaVh^3aD+W z?h_zlQ3cf_hSyGM$c%$ks8YSR4i)@oC-1y%ul;htSH8#~E#9;k+l2PeD5c7TLo077 zVQ;c($4(!M#g!f1%J4%hBfQ83s z)z)ejA4E%V+ETa9+AO_>L)YZ{t7i9uYIks(^=9m-SUO9W;_yu#jGJ2z(5=R^_|=r_ zoi94%JSVYh`W3C|KYoPXds~Giq_6O*$ACc=)J2Y)kYC0A6OjG?4WZBf(;c7&p2PEk zbsd8#ehX-V?o(q9HfEllVJ=VW2$yXWq6AC)K%OVn}J2A(ni^&1D8P zz3(p@TJ>NR7lzy3dfYFbJ({$pRuaX;ExEzVW*h_W5=P&Mp^}z7XZ3GsV2!_{MXxwV zo$N0!CePd^5_>TAY~;)4l1Ja?&lky~-=jOv4~l(ZJ|lVSa>^89KHByzu&ob+pLP%x zfXjg=D!H(fqxm#^uQTwjE+|9oa{rQADv;hSRn$9D9;ldl!zjUZP=wfE0$U=W*$53% zX3kx9nPfZe-nfYua{W;DN8nw(J;!iwG2~O$XsbzF2xO-bs=&Ba@iNo2r1Ye+3AH<~ zcG6d4_3Eb~dP&O`mL4T`A$#q%xv7bb>pDFadhLQ((BRF>Qve;Hs>PcOM>SNW(1Ftz zDEPshS1$6cg_LKEFsi1Zf$ID(gZftOam&qSGkw%QLSk}D#{xC0UfFf`e~{c+t+QfC zQd7PBiGgv$mXPxIibMHEsu+xNKpBYCiuPEb3gbmpk45FB97xB56ZARSZOu)%vTa6k^`Ioe5@081baSn@t%=bBqSg4YhfrXExULub8h>hV1=rq zpWnIspt7?*7&e3y`j`hW`Pcplpv%0g#$xeWu3Rhp!TyMMyo#4|qQ_@tk5m5bXu0#v zPFJ$8&RuSSi@(R5-_p3iEzXor>hXtx$o60(ECu|Ig{9U;t6{1efDg=$)_eHYvmN*i zx&MrT8py8BJht#Xe`VvCc85%s(u88N$OuVo6Ozu`g%2t(Jc6Xy+mD%>ZQ?zqIYuPs z#rO>8+W5`FoWsSy7yaQJEi||9;yXs3FO2yv7*^DzMncD;@@e<3{oA%uI6l_F5*t?* z%AhOkH!VnZIG)`oQkPyF5{M77%RAlmG(c;m;*taSkny!IE7KFVF{EzjuQeH}Z{!Xw zZ{5Rd<=7kLx4_rZRgG3XVWaJ5uh|6#4d#%jtJj9x=Fp`j3hzm;Q`eE@as6A};IGRT z=f|5{^D;^893XFSz4{}|24s2jW`f>vAUVnv1Q0?pAtqSxuxU>=QyLMz!AcgW zu;hD)fEb6`l((*w7=0kuHfdOqA&_Rn(6^^VU9hGZws-|WFPoywQn~gL;0yIpFq^l1 z%U}_xGqMGTvsS1Vh+pGbkyPF`WGfy34obJ|WB<PKXc(`vF)kLTIzz&ciE}-pvS8@Ubi^N%oapLD%0PT~j(ILfkMP^$PULkvb3Kvf z1%4T}%T0B2t|}_yTRfR?z9H3#B#kwX9G&ll`ptx~(Md*ZJT+F6y`M5AK*Dd!boDYR z3FJ!+p(8#hRNR?|F6Ab$`B#s$pIz1Xg2hB}Ci6p5chGiF1@Lf^O+0Txw^oJXpC&`Ys|H*8$Lf2h_VPcu8>RDD$t}`0H?G85; z`0uLUx9;F#GxIU#Ojh2$!_jh5-Ez1-_=N`|t=IIvJ4VJ$V48TQpQD|%tV(GGVEi;* zO@#Ltgca1{OuwTWO&#qXE%^Rg!!CJCZZhm_-DR%Q*y&UQsCM2tx}}x}V2Jwm3~}*N zSQ#WwX_WEqFrQ-*ot^MYgw4s4 zJp;fPC_dS%G1i9@ORNHuvZtm zgVc_hpi?-rFY(gDzeN`QxWxf*wOg_r@A-@0DJ`K5CJIm5rTtyK7RRoQ4GEHVa&|U@ z&wz$OL|2y`FaI8<$g;jCrTNv06Yow*g}AnMl9Y_}TXS>sQ}8|W$Um?o9*=$M2hf-R zA%?)e5j_3IzaHTG9~$9*e|B%m%^#3Fj#K|Ds=J2HZ&J0ddy-xqaY$rjeL`xH<~Q@| zzt6<}{Iu>J@Xa!>X3sfgJgGjZ@T7dpe|l1Xrg!SnzaQ6;zOmx8CXEQ|`wu1``oq*0 z-J?Ta{9X3<=Wp`;W@Hch`gu0JdvFhM#ZF4nW)4>m5QY8=qwmAt-pf!Ti-(NgJ_Shw z@*63`f2Dm;e|)R0r=0oV4zlPY)(kgqRTVKQsm?~mSDb%AuP@5@&FbI2>@9`F{I;6j ziTeCSBUgt<<8K4PKS!T`3Zr;&V9HtfvAl+&I3x_n#AG$y>P;=oG#byjp8tyrEIbEf z3~qp-m)YY7_jn#l=K#FrfzNMvIb*-2(|dYq7=4hx^$!Cb_?4`g-`>T14tzwq8h7?O zLXyU0>+imCaw^R%;RbC1er*3VR+OE8+m0`x6JA2@Vl~lyy|x@2p6-w>|CPf1;iLD_ztB~P)2L&uWs@a+{QG70KjQO}1mIUn zPJKDafj|HAX1Q?P4c4xDe-qk_W$W-`*#EF-$o>a z{ksX~e??5AOxHewQ}*9W>;Kc$Z`~n&1hoI3oB!AN!T;R+zZ=y5GxGm#Mfsm)=l@t| z{v!hT^VR<>JAb|6{5hijAD11O4`o(>!*BHlKOkP6gZ zAGwG(%F~R3+mJa-&P~-I0sBR~5)9x#JPi0S4y_*~CTYECHQ#T(=?tTa#Qdv$?6*(J zqU#tH=;i#(Lm5hA_O_h>C&~|iOkk_=sR6gZ%9T=$aaWMjbWD`6=*LlONWd{u6pw$DSoT2&7>cf-X3WT zJ;l9(qx@2U`XLE2`g9_Ha444Am$S~6Gqm2yGEj1T#`}P8h(h4p64`H}^aLV_ckS|{ zr{Jc%`7`|55w>Z55s|zm@(AdWcr4b%kkH1|x4=<$g6z|d8!CSIOoh^M^c3PgqtSY$ zBq44>DRln^eE8hK&g~_U;EwoYjx_RT7T~tTXR<=22P4>-g+{>^3!}K)rs_BOku$kb zAPrdG90l`GZ{r+Ang`*3`s4o*Qs+I|sg|^;>5EyOJ zgt={JO_W5;c(0TTHfz5r;q%P2@LcN$eBu5w_}%Sgx?@_gUZG;B%)$whp~fB|R5Nis zm&WaylFa3-8M?SVIY5&%c3r7FUh7MvhI@xMZr-2^bx)A_k{Yk1!Of1m%%FqX_wHw$ zq4m#VUGJkq2p1dG`lPU=y-q7vi@%I&b;gIy-I%X^XBC^g0;$)JNMFm1z5a`R-#-uA z>vV1$f3D20kq~)sxi8Rk&S@C_2H$a()&?e2s^#T!p!t9<#|-7QIRbVonG%nQjYRMT z{$Qq2mcdAVnXQFSu{BmO{wS=mX>XH=4vAE0edAgqx7udD*KqWfDz=G*CR$6>jzzPS zH*@Y@A(H(nUGQ=VFAVH>z*S3=Q;s$2UbA%i34;z7sQ?JUN#B$}gICC#eby&*IRx#P zePQQ)>~=o)YxrsmX6oE);BB8w0#}Xa{iz~@+@ImE4WFPYf_y*4Wlt5U)cQT>)C~g9 z^Xm8?;^?n668JvoE_nQ21!}NNQ#1Bk9eTg-tGv%yq-iE!om`fCMMezTRm9QJSyk8O zb~=gRL0H>CETfIdtpuRAMN?fnH78?%!KqzDqOZ;-(GFtq87S(Na=T7Ai}XgdE4wO1 z%3rz%=_QG?nN5Z0AB?z&t(LdOZ%(mY!V3GhAX?v&pJRQOU%B61k$>~dn_yc%5PEob zQzI+HkDWpBVyK0Cm(MT8YT5d-UxWu6Ymsk}|Mka3O7~|WujU7-WYJ>v}!~tLDf`G3xo|yHq(XOxg`>C95z`h-rTlr(dc2|JCR*YcgIbH zbgAgz0Gvw_cF5j+%G``$Yt9=ucD!cY!cw`NUh4DQp!4-`j=+)D31)}Mrg$AYVKP1n zVr>86w?At}8B&RCEt(9c9xi*p%M_xhmK6kqyAykZ)yBO)W+}|0fvVkEDv!SOo$t1^ zzTSvpM2#8;x$;qHyGu=ShN++SF2|4KVFA1sCjJbbr6up(`A4KRP}zvTS_$JhvaTUF zOK9;;t+YbEw(BiD&js$3FXA8l`D|vA3NyiNXSfN!^2H5s!lo+IZ+w67_FS!a6Y#u{ zp)gyhv$CtNr_9BrRn}?uZ6&}x>l{kvnO$-jv@`D%SiLjIgE3S+O>nzPEx&;P#(?go zHF6y73qFTyG6m%mc0KQwn_Pjj#3R@gL?O)ur%&st`%E+zGW@n}YGs!g-N!!*o0L=Ht|!kG5fKClGMqGORk85!1Sw zaT~oln+D#3F~QvsPEp(GmvYYQA77~1Ly&NTr?=e}r{5oK+XU7(fIV3=KXGeYT7J=7 zgyIMFYBySI9Fpl&{v@yI#p4c}EyoDCSyHnaSOxo@p_&f@U`?*ONtCwRXcU{?f;=Z= zSPQw0Bk`v5-GLusv5v3Iu0H85f5TgoY&L_d)?^#C8YX4dZ>sIS;K`Z0$xI$ODa&iX zSr~ZLt5>x?o(#=ep>|K$3~U2)+lYb^lmp56Bkl&|dl8cr6u3e(QLPi-r;61Uiz2b{ zp4|1ydc0SqOD58{NhSEOVW%a9YiSucnsDt1!67E*^wB{ zn5Om`kEIyc7%t9QXfO#mc(pchTc41dpZQ;6*9>&jDQxsgI7aIkF64?V)Z0C}GXaKL z#{5>Cfr-jk?Vv`jEAF_e1#NABXq`kpFaenw92<=H_NJBa^afhlFwR^4@3`(&h;8q+5RLQJ8hR&qph`> z!KibWy3AlUgtyf<@aj%E7PQ@_a3naRrpCO59 zBic&@;&fQ3v(3<#4`lZStlwwjP;tOtr-Ol3&!VS5zbzGbEcQjb(|r^w{R(crealb^ zCPXNdrPKw$bIIt9id!=b=kpC$#oT@cip8rU3NsaXGv$-CnOrr@=@EN;L*|S2He>=T z3n*a?ymI4RzAPkZdwJ@9LsM^A8_{XJef6y5_Pj5L{zjysgHoMe(=3=6W53^;=eF|( zEGpBUw<|a1bt>w*JJo4xcF7-iA~9RJeA&0!o->Krvni_p4{N;nF*~cLlcBeAH_YW= zW}3oj%s*!Pxcl3v)D|Y0kiVw8)qRx;#*3WoE1dRsT|3`S0i#w1(|l(HkEYjrR8NC& z7>(CwQXOPT>5d^t-$(oTM9~`cw|yaHVM4B`MGFpOKEkwld*vo*(aig`VHnYpxBJ-J zcvuyB#U=?h>tNwLKx$ElFBCfKJVRQTkAHOth1l_wFS(DV*FUQM*8U1nE0kE#yv2-k zY2O}RwQmtbxRo;M82$WoU9cS~97M{pG~;CmDMF&YBpSS(e+vAvG!?tsf}gg080$7GAu zPs3C zV-5=*E^mH@L>6QQ8rzFyiqKb!iRF&oA)qh#`Mka88@O<#H9#7O0IXJ?AvHr0M`#7U z)>Sd@RKUviGvo>T6+1Cw&WHg)-6OyB21=KV)tauuq59;)ap&&VFMMnMsR4d3<5bk-3qs-U>#qE_osnN|v>dzs@Qy4PO|n`cy|FhlB`Q4VM#T!jNc+aipN@uFi0lNOZeih0VJ46vY%p37GMySraqgmm-H_FR&}fQ?psGFD9y7R%F_*%@_PQZBmcplKJ~3^IJM; z?}Wz5q=Wy z8)Q|h80I{#xYMWP2If_9F_;R3ywyTG=-Szar@ohEo=2NnFW~DuN3-Bqj6JYdFgIn` zEb~MKA1tM zUe43H=odIHe|>g4&FmUHd-H|bN9gl@02qjiCaDnA0tQ;FvQp^`144(rsSfjz?L>jX zI~$Kr_QsbP7p0nF)mvea+X**F26DO&!UI>wK!QjHlI@u>Dd{ukMnVeqVohd z^ESd=D}%}7xsSTlM(=h_SX!o>1-A*wFIDn6L{Vz(v0urtw=tSUhwPtGItcGgR~7C^ z&Q@)vWT4wQ0{cXfif9$loG1h_SL zE#+bnHa#Y6-bgsoZu;aKP2oMHQeY9aE|e?S(E(MW4djeP#^R%?d5G)yyL9?#VLW1=OlKhrDVE=YqdK|1AwJ??tqJW+^cJi+x+6 zBD*SdHUF&l5s;*jOEVYZ65of^UNR@;-jrj$OPi&S5m|y0fF6JM+T(ItC{CO=>EB<= zk$+izs(TC~GAqn#^oR~wHOB-A+5Z~%Z(m7;g$0BX3OU|zUcPHWFgJ;W9()cY6v?7# zU>u&DOeeiqdY5yj9lYm|QT-%9YJj;H^?yhA;@nu*r~H)Jw6iHL8%JC+)XChk-F0ml z0M)5`Tqe%r>$06*M&Hki#gJUv1lQCuy5Uo9wpl(NeZ48Z$=Cs3)ElT#(FLz7linGC zajB?2-qbBLicw;TzE4Ljj38R_YyW9J0(6^5y~dn?r(?yV3_e^Ob}_-L`&vYnZfPdt zWjcqxGe>c^A$oqtouydRKHZ*{(4JEX>1AV7Qv%nms5aIzSE&p!;Mrt5Kl5Taa1IUP zjE5$0?-e#rIyAyA`l&9Ateb}U&B-qdg|#-Q)ggPFj|wxA#gZf`<1QSJ!&OIYGNr?F zVC$|gi@4tuAqV3(WFk3<=9=C0!@Qs(#a{Xt7}evnoMs2i@tRC#lA+<5o}bDq@L(B~ z+%?+XX7cU1v{l3iW>cqgl{mG)qPJ9M3qvG^yFaJZ@y2Si?UEW_z;nO2&(^{L>3BWj zhgpp9JHR-uWGY)@Jouksr(B_k67Tk*p&A3MW&z`k?)f#t*V)LtKjJ3Bc3ZDXY=%-D zzOvO9iv%qaDz;mCgx8F=(ol?amrZi=CmLP^_rupYv<&Sd#ZYw6`%$F#cI-VtMUoPN zUS%-MT*qD4q8c5^q@p4dFQrscBY%Qt?*vG`3Y{!J%?c{hHVu|nUSM*KZjQ7wd!alQ znmX%k&?Uu~8nIu54#YwMTfOJ6svSqQ3;D42RTow?m6b7%(PvVky~OFC{%7 z-)k)@eHi9}0y)QXNo-rrM}h8krCEj$K@I%LaHuLPJkQ2=Je}-h(M62vPt8i~Na&8Q z!a0IdZFatP`{-aB>u}pcls`(6VHrzI46@4Uv zlYSbaK{WDJE{gHsQ6x2Kn?)jrAr-z!Eo@uCt*8X?)%U8YTCKtWMSbtvKs;s67j$|) z`ULIPkWV&k^NbB0HEtF>(g}J!LEyTvuujEttee6K;}Pyw%%urZjo`yNvd?0Bh2+@kljL;Z^4DX{yRkBfnPohVr)o6ru(M7Cg8&;WF-|1 z(vEJGa(^tJDaNCnFHZf`D7TsFMC_yVqM2^&nWE)<^-pLB))MdgsS8*5a6JmyKdPB$ zoP0ur4|3$4E*Wn3&K&P6*_`lEe{m<~e|I)ppgRI{Z{dS69x(aE;^wS*URruWX z{nOwbq4@IE)BWieF)xeTI(6&tf{bTxY0eu%<4+~KlpGvx-_u>d-`{U4wQpGlA9mD& z9jrauy|Mm(F8~W+VVAFA<*hKGD!@XbP5{&uV*h$lq2SwI-Od2(=J1~zY7>h5&H)J) zY@woh8nXHU(d3G{+h+c7GTnWb5+A$Wc0TIi#BJ1~z(n8X#nKd1bv2SVd+nF&HO3}4 z23K{+GS42P!K9#N)OYCy#3tew_HZUk^s+*Ku#M@4jl>2{4qIVS;o&d=bf#Q1+Uf z>Fj5}i6ZBy*tzT(ty(IH2oO4R;KJXQtQ`Jf#bDobUBQ2P+0nm1Bz7^E=Dv17JGjnc zakG0xgBMQixaN=>xi6vMj<>g&k5BQ=?4+Xk#)LsBeak_24Mtwx%)m_-Ayh&rc$`GT zBH!ZV`ij!!>>l#_WYkmF-o>xwXOr~i2UR$I0v!A|so@-4xH)e%${Tl&WrcmK(_>^P zoP7pndsuP}cyw=~$Zwu#PS31-&9v%x*P!+|b&TlC#TS3_WM2LBYgm|&;q=-;*a~of z4;qjH9>jHaxGKUU(W1c!m1CS1%*WFOa)&oU&8LBzpG~6f`~86}LF?9>Xh=y(YHnI; zcfiH3t5saCPEtzDF;MU`tj$zr(U?CD(aSOLF8BG902(a0%EaMU*(RGdImR%Y1j?slI=xw|3w|XtsTHQWV~oCk+z52u^Q~;UU{GKd zI~k1b48#oz8h^g$sa!cT>-H+NWLdqrs`*gTWBeZ*?ZHdF`_xV;TH*;oL*wq1hH*z`+W_$Qgegn0)9FGc z%s{}th`JT3pEV4ePxycx4QH|wsyeviZDbajN+H)*6rnP}`PfHs(GDFT4I5e1{i?`Dw^aH(*^0mUh+K%-ZxG&XZ z4yV{wNHD07F#de!lVoo;qm>!St=hoavrFx%^G+%`3K&z)s+CuSPZ>D#@T_Z7VHf^u(0P<%9Xlx*O)e=PUp zVR04~j~T&}-`OwrJ^7j2(gO?HW~Vzl_IV2|H$HZulf!92nY0uY*MqA=I4JGMY(n-v{RxG3m7jtL-)Ws-UqHznxCOi< zM|f+~7r=Hh3Hx+PTD(&cH`y?ULN`ml_N%oCmUlk-5q@Zlku2HM?kw>1{qmnV!*!N> z6$8v7>f=BS3v=``>p}97qFXxwJu_Oj`0PbQ zFtV`mR_})Joaoap)Er*vj72+B-xTi!`thz9m(=&5mly9|xa^FHy>D?`bB|dwU&1xZ z`DpfaI68Xwv|xkDQkwLI`jh$o10Pl=jV%T(^95TK-()Tm^CW^d>Dyk4N9YfW{AG5B z$|^sn_5_{7u|tbSDiH4By{+m4o$}$_p;7@-xb8l#Q#M<1-<0k_#^DkN8y@2zDc+MP zav|w?>j84c99G>UnunB1R`}j?#(7JiXflW8S1S><$VMMFw#r*PCU#>AO*ux?*b~L_ znOwQr(IE*oYGrYmUiU@X~=%eun z@ztp*l;@d2m)-lfQJt>h6$H+>!7tGeE$Sc6{75&Y#nF;#uVFGj*D6>eax1@uy}cXt zVx$_(S02@E#>Av4LC@OHt4)_FjBv%wFV9uXYKzE9$q!sqcdz7ab1%Sk+YIl{@1cyV z{3(^@#GrtseQ-E$HWG53wDBe~l0pT{Gi_;JA$4mKturCi) zpc%+2%K?vvuYQ-|j+o7G>OD7`km{ z4v)2>1jxwVBx_vVV}7PC|QxA3c2J-=I5NK1G@BNxt+z(-u8w1}~To>-arJ4*XMK8m!0 zDn^+g&QWqcJB)tIeVKV;4o8t2F3HsE>D?D9TkkFbcRf>1ABmC?8EB_)l`SC8A%QAr zc&TeXB#?MSv^U{=SVPRXv%QQ4$zD#y;SP<;660&AHn?(9XpS#(A{;f!kCj?&pIpR1 z{s@i@<8D676eQE#?Mci{mRhq(oPhZU3yjN~5 z4r_zXEDSN0GgelKNUw&fz3WfPCy6d+#5OIUPprs~9r?CUu?ia4%>}gzOvX>!;Bt>y zf?qfkWx6aTT6n6i-XE}!D?gieww`9am-H5DXU3{kDO+Ns8X(0inJDxZ$jUG50q?RO z?YA@p)JrBo`YOTh1@oULr(>)e?Te;QjkWIX&47kFekQ<52KJ85z2Wwnl5Ck+J5o8Yxa54GxU>r-0iDq z9s-Z7*na5*fGWT3xrb9j@;tFi^H{h~!tEIqN*J}JDvDj`R}CFt3+X?OOD#xLP+@EQ zNa>axNon_2?tpsvS;FgNsrS1+c93kmYp2u4D8l*V7~yN+oVI7h*2i&HG3PEk0Df3& zHRFf>qN!G&TKH~UIIDcgiaJ7YyOgIZgbQk5Nb&Rvg|@GkkJ^oB2I`X7eomB@?G$mv zQtl5Rx3v?B2V#P$tr_MN3sjhLpsIG6);bQU_5&Q@cFg%6pHtgcGG`i3S9kQANlYCM zp+|-7SH~=V{M^gUTBH3f6eGgu#2B+;b0A87k9w$)CmS-uq-3EUgEa&CO|E|XHQ0wG6 z9Ot6JRT6O)g;;oON;p;>Kog_2y!#<4>@x~9i>^+Vy}KCl9y_hLX7)xx({@`#FN;;L z+>-VCnMG*;*OjcPG(_oQ&lxIrI0w`syUsHcZq%*aD8MVI9Tk@)$8C~F#npa|!&g6h z%;-(4v>gKRa~r?ECrAcebTSm9RNp+(vL-Q~bwtvOZtc~Xg8Fzx7nNw-2z+!%KueZ_yX1iDC7#Az3Qo|}6;-gxrc5TCs`N)~I zDD{mXJy=0l-#n(|!YkanAXSNyE7~4@ClPK6S5(F@X>XvK_v=k~C{5WfO~xx(b`Q@k zPyP5_D7~V$4Goe#99;4=JgcEs{c%xpFRC(3jVjh;JXK6;f@#9o5gTC`(4g zk=!q{B?G`@URT`Pu5s~_;~ng0B`Uc&d$=$x*Q@QkQB|#z4e8Teocvxk7c($xWgi=w z`f>C+&IaSOZj<;!kgSwz+=)+}K_&;@6V_VE75YWX>G$e!z^Zg(CNuq-DDl7zr$m7T4can8$j8~ zR2#SW?LDoc8ok)ecJrTW0cQTTBt?($hZFNZ-Ctz`h9$Y9W^5qVwUf&G%6_0w znFQ^P9F%_a>Mss=sO-77qq~1Yoy;jmjBFsLxzlVjyCqEF3dZeJOItH)tw zweZn3tRgwuOsN3EMgK$IypYwmTNZc5f{+Ltg97P!g{yTUXta9k_0hYOwu1~|p71N? z;#gidP?sn_pZ07AxJlcyy-L{?!#0aU51JS8Z*Q_4W$Qj+Q_KY1Nh3U_%qAI%U%=Kc z^Ha3kQU(}FrB^k2{YyM330l|Q$L+Fyi(Ic;iNXb4@TZcvw(LDM6Sb!lrqb15BZC}< z7G{K+epA_cu4O&TJbx|`cV-Bb z0ADPgE;cHe8f2c9Teh@Mgi)KSF4XINzwiOGomSqe09aBJgltnyG`H1B|G)OWIxNbq zeRqqXf`k$xjevxtAcHh0ozl`E-Q6XkbVzr1cMC{JcMU@f-6b`|FmPVJ^E>;C&9~jx z`RANJHrK^7}ZDo0zo#b~2eX1%^tv4}G@IADnmZ}ZM)6c>5Wa?ec|Ck^h5}wdX?tvDB@|=8RoQ{bz8q`u?HR-6YJSe#+&;kU zFf~kI=|UYw7~0Al$TGpnXeK_9t})3~^Lf|nXJy0`Gtb-)Ew%L{Wk(_v<)Zhi)Rh-` zrE$2ambE}vO1$c!4l%|wRW!TH3e&Bb#CJ5z*OEYr-RsBvs!+|kQzBdOgw{X zmK-G(%|b^xoi}CV1J|aLd5=rvxSAsZCmYRQ5z24>e2euGNE<4OHzF?+nwqyy0(7NJ z$=vZkIURn`ni5*24;IgN0BaW+&OrQJIVn3jnahCz9DbAg=?oB!rB *Qu^;uduF~AucratB9u+^w+afkE=Idd}V#wH|F^eJsdI&y+lZL+#SlnvDwHr9)HE(f(bvzxr}PwM0B!!E!+pqWmW zbA?U4)To>(X+(Z(bjp8bUB|$ej^)a~Ev%}*FMYXVS2-1WXEirqf4tnCB;0i7IKGmi z-RW$d8VWme?}F`81~n(}^RsHl!~-1UaUQT~wpoL%DuT7+%0bli_&g17=V^M6^5`dG zkI@6(O$CePepm$+cT7j^4WJOxZk+=7oEJ9m0gG%;frcf|aZ@dR!Y%|$;M_mj>N|na~;b$xa^NbRy;l@QI6lT7NZ=75H?QKyWKpqYqdRp4TNi8iI z^kn;FQ!Ddgak9_|3xFGyvN*qayRpM({ErNj3~0~n!C&_q z4@yf_nc&NL&r{7|@?^KzWco;faB3)L$v2}am+>g((rh4R9f}+PfR?(}Du-xth4zg6 zQY2a5WdYhDtK-A7TQSft@67qDA=%O z$f9|7j5hx)eo1mV)ZxJyk_+!~u$i&D^MjVRc2Ionx`9t!Ox!z<;$=B97XmxWxwE2m z+oQ9#98Tb2PM6y$uAMV)VZI>4Ae4N7{&^CPx`hT?4WMEtzELU^XNlSitM zY%U|j6BxYQyj%~X=&p(oA7?@N7}4+gh(amT->xZDOJ6P~n_sZ1 z#7zB$tU~xcwwndp^2_N|v3jhvWii5gM}lg&{p!)l-NjkZ)iM*p5oXlhPZj><3!Ap* zxf09C>_cXPkf!xOR--6K;@V<2#j+HxaWdzP@a{5kl<)=1!dZUUw)!jgV5nUnw%65< z*s&{(0oVwb4gokxVY8B0VJ|mC+a9x@|5jeb(S;d4z9XMP&)zbt>`OEZkp)l%JY>8nS z`KRcLZH7f}(&7Z5_XBCABQj<#S)KOq7k8>Q+1gB`kEhBLP2vULec#MY!WD;S4kn|_ zyW>noD>g0O`G(3N<WPHY>^?dnXT7Ngn?Xi?t(M zee(0K66@QUPj=3Xx`-V<1JTbau4ml##$>7-E?eW>?y82=vY~s81E3ITxTA$+@f(sH zQBu!5lG5Fc1zGKdsD9+j2cig;7j$(x-3#8r(bKZAq zvA&EWF_B|)DN_;eb&M~x*vV1w=7@1O4Db5>;vrsN`{dAp2CfN@efNU3ru!Q~e!|1H zXq0&d`$)lsL^9_b-S$xjE_$&pua@Gfx5Art^;H=ccnlxDN#Ea_iqdGHzFw>x)txH-92TVjLpZepJRT?)L^_Vk+@}HHRS;QhQ)up(7kc@ zN)W((Yz`$5mOnG0ppVZl6L2V%g&VajQz+XdP8OTbOSDgoW~hRlik@%v9l&)1Ybs)0 zE%*N^h`}u8mXpllIdtt zoi+3)E=yZN`)QP{R>D$M1scdXA0N<2PCtJSuD9!onxUN%ehWEUO{yF^Hd2t$c7c#l_OU0m(WJ@*Gtl=1 zS7b5354x=Jo0v*!hpMY=A!J@wO!a3JM~O#XB$tTQEqaNWFDGA+tb$z%^D3cNEL>|F zlp&uUTxRI}hQfBPZQOe$Klv>3l8c_TIGAGI*&72OXMO30&Ir{l!L<-2b`|^Tl3s%0 zS)iF)6QJLhCq`NEt&~-Chuu7n)A{U9_~4RiWf0Q+D2t`-(jcUDds4rdmnRxuz0D3W zler<~Fql(it5Lb{=Yu{t87{^;W$m&>S%_rMdX2(bC{8FZ_2FCCKy5~N0gfI5&T3-`B>Ao(qgjCe?cERzvyLvxVs9$TgbH%abuxd%R z8l{lUzDn~d-(RXwgL@NP^pC>Fm|d?itGYI!ydG&$GoJNMqMs{Dt7*G5?*YQs%IigX zYjF#$xB!O+oP%UbL_u>|xyC`dcG?q8F0cY1C~7&1!L<1WwxtUE35{!WMUWa4@TFe$ zX2QZ9_%4oWLEX3V} zPOolcOjNf)3Q1UxKgy(bg+tkBi6A%i!xp%djB`o_09&JpSPO4XkO80_a??RZg|5i~ zfUVKfsV9{}kVrwS3R;y_<`O^mNJ zbdyA*_No%Z_k?)^9fSbn*+Tn|nlU7lhFOnwi$$*F_VpCk{v=qCwn+2qYC&nDdS{@U zRGg(|kZ;NGq1XKB#}Q{!JUZ~zu87^TgBNPy#&C1;c~=NHKIq!nMc)~2*t0uZ~3d1-i}HogLos(X=pH*7t;c%_8@j$AJjKQ z#S1cU?GL^ey|ikwkg1ASh%yltUf$ZQG+6CbYF#h*#Jj|lDiimm+M3MAanWQ@tD16$?>gltBsj(+X&#^N`L>RP?NgfLo@Bx* z74P^0Z8?|-BRct>qg>@-0G;7bN3ZC9B=Uu|ec(Qr_qaw_gTOdVZmxdtMqB~J6y00!`h<-6>LaP&!W>va~1S^HnzVYNSP6&%ij-X*+0kvuf| z;u?C-eXEj%7KX6x7Q9c0Xtx9EYD8Lf<~>y|;FW+47G>D(dW$~xo<-Z>I%SsOXU`Nd zzi^4HKW)J>j7sLrL~9CxR(U+^eYandIGL~Bb-dpav}xsdP*ZUVo?aAv;&t5wv24sp z#HA#PvNP=LR|P#a016|dH1&9ZI;9ZHBE@UpPoji*Vbu%RUe>sp%q7P2>YRyubp)i9S&H$ zAHBopoaS=!!>GURV4uK2vA`~?lmw>p^ZT8VK>_u|3cvn%Zf3KSC*1D>Q8?yo6E_XG z?>X&288sRK>?1*TB@o$(Z8K=_IV*9yQeb$$@(}@JhwnFr0c8+$H44^1X+mG=CmB){ zN&D^T3AG(XhELMb(Bm-m_67v1hs#+j@s@z=PC9%b53Ggd8#_FVW$7Ofkm^Bd&qc4( zg@+RVkHWRf#{EQD8W}XMNVlD-IVgmmJVNu$%y#=e0IIQXjDgD~rvbps#{{Dy-Y-j= zE|V-yiE2V{c4CjP$C}jf?T*7mpQ0?E32Vp5@|*;>_;1Q1LtWv?3ml@kZ90!FN649~;KjIV4Y5+_|e7gtsKz2W;ro*-Hs0lAj^UIrqu=dS5**_*6UuBy%a#7XH+pqFc;@6oCcQVyUS=@|_OuMG*>_5=qz2iE z$F1g+VF3KJOj@-be1Vfn-*xzKQC7@n0FHZH{u#--vd;m`>q8ubP)Xr@Om@;WHKOm? zUM#dMHbd#4jCvOGyai&>u{pZomGf9F%&QTFHr<*yrRWp2i?c}C0dhFW( zFmJEmEcxr;=hZ(3RDVNqq0%YMHjuYZ)&RF%rpK^Bm?JIhJx&(8QdkIK*@8YB()*TP zC;=N>jTc}IzZP|s5z&))zU!sFwK5;97Y)s3rT4dT#1KD%K8ebopmfygHGenD&r$s3YsYBM+ph}9y%JNAMTj4GVeOUHA~y{h(5TkSz7 z;io=Qj}ZV;#mC;Wm7=G%blO0X!GO6N*!kN=`_BTiD?)U}B~eMb4WV{=Uv5rvb@HH-+Tf93lKq4$Hjn@zrCL+fZfvVnhWLi z;RiTrHm|1`NH@8RCrk<&BM}*CI2`>Uz8pV&ESReA@B+Y*yxj*(fq@D%kz4-YWpF;$ zuw-dnueM_PCctLhd%53oD#S`gnV zrId=7KkSsdHi4ib!-Eo2pet2xo+Ju}J7A+30&ZW-dYS4J4I7qlMTurD=)tF_*HHM6 zipw*MiJx3pe3!ZjND&>HUwC6aWb)K;0zbZ%5i0NzVMl$_prvTI`0@RLcvyGt2_CUpnb$wNQA{&jfnunqMx}#aF)o<_cFufBxvELqjPTXJ^>QU-xl?n0N zZ%IXT1!Eu`LQ7qXFLnHk2oV>F;iql|r`dyH&320NO;s54Ocm)CvLH9XByPPehuiV>(y%%vFi#GDiQxWn-Fe zZ|*c0NepllTBhJq1cJ?%rp*L;{F#V(;bxyg(JNWLqa+eXWBjpn&BkuGd47)P$w3SC zQ?3<2R(V-CB?xOXbBBN=KYYTuBT@W781Fgm$$;qR_AdiFoE(fojeByWvZExw9vDGd3M^qH#gY4QW${ z6%26}+!ZBPeGVcfQ4%k1JO-yZPsx?R?T8w%W@`(gJzJML*nURYu_=tlSz9hQnRi3G zr16>mg`|T!3B26zim0coV$`vp)Okbh$LL#4+XLY>pujiKJh5Q#3_y*6fG0*DEOedh*b62?+fdLqdrK6Trfa3Baw%#! zIwY*ho-oZoBGHtqM}Lw!U6GBSO*w9qGl)tW-$eLgyE>~8GfGj^Tac7Dlvj5zi^$?1ZUtq z%G&NaYSDT}2M+H$N}4h{dMw8CPUx`|Pz@Im`~&xK)&m|4{=*RI%&SzleP%m9gn`$k z$D?dKdvjdq;tpZjg@fNQ|Mk8Mo9XekrHx2fw9>xM>6~7JBjg#+T53t%G&G!_Iw?$c zr|~ppZJJ-3K=l#;g!g9yu?^K60tf4BSldzm&%3Z7{Sn%lbj>uGOg}P@wpm0fJi}=* zXL^cBLE8&;|LInorKlIo8>u-B1;od3W3u zwmnC70K1l^a3=umb>ayfFPgCU&?$;uOy^{66&p7$!Rc+wxaI#RFVXp$avi@Xo9H%#VUp7 zJD_9lCuSSrL+R9)?NTYM0}R^DJelj?MgBSW+x}9|5di4!`^&qCN%+pK%tf>@R7jZ7 zusK)K?uM{(HXa5x*<6?cnyo(ex_!;;-iTcy8EE>u~|bpV$jxqFZt%|Mpb{Q361J zvHtGNuvdTy)|)p+n6Ng|mC9;1S=3|f2D%BiMLYpM%S3nU*K?Fe11jVV!=Cv_&wwm~ z^J6aZ0V41osYJf9Z`ZAUB4fCKn?SC8!;KWnCdmCq;)HC*ltQQA5mevkZUiWS+^l0Y`n=oX;SKPdUNj*UBq!xE^ zYuw;pA;kZffH%)$V7X;wkO%(o*6kDgtB>b@{`*h}V9Mg*eEjOqITe4uA2BsxeAbuz z+p=%J5Bld+yK!!qwN`|N(Qk1HZ@B?-6JUJAlN`^#IQ;L$|C5FKd+~3P$lqo2Z^{3C zDgLOr{#HAGvabaG|I_(-uu4X8vd@3)-$CZURU%>-q0j{eI<7whHi(-GRV(Royl6|M=Sf@={2nIgazeUlIlKuWrB@ZR>?; zeCIEY#{c0tBjXJAsFPaeUDOU_727<}Gy^w~5D!79h%hi~em( ze5xv9u>DOh`G%A9*0k#8GvQ=R*F zhU*nx4Gp7Vw;+~}AXU{eRFcoUX?{|fwu51hChefzU5ePdye zU*DLz*LFe=9}A=f0s%Zhk?MG?eP*bDX2D)pkQ;!=RI}@eX^va1CEe-CjB=xL@q$b4wDk!< zow)bSrL_PEE5_AWOlM8^yI&))-DC{oA$Du`)+@|nNu+>Svh;FstxSEB`fI&4DS+2j zL?KheVXW8;taH#ALNpMSuP^{$xyrUdac?mRE!C=w7ai$NM!YPi>sZ@Mz9|3p8~%d0 zkf7q6+4RveK5O6^q13PX4G1uyWHiOso1=D#d`Dx@tm(hpJB^J4uq>MWK!@auwa}R> z6W<-ax+yNN)`;hlH(3J{EjI*)m(A;9oll9Db%W@{EaVz7rfH0pI_p;w&!%nTa{$W3};$*~!U1+Woew7YN|OwL#( z+6}d^#F3P#dma7sIc-#GU5?5h>lbcmeEncHpolhU6I@$bzuDQ6jlsfs5H%JuSlC-+ z5?S2ExaI{A58|S)NR+1VD)8N}g?dR%H;J4$i-d1{n}3q?%Q&pJIhuY-%Cp4crT6Mt zA3q7naP9_22~r@*z57m=n`*Lm0p>OF0Ei7!I2RV$NACp~cUiR{CX=iWP1Y`eO6FdP z@B;Uf33odn3nGb*J>sc?IA>n#2Qb+_Pvs|~EmaG2zFg0G00cA}U#(-oQ0I1H&JX(2 zHBKM2S7~ATGIlIf6bHhB+i$Ye1O^st*^g`7qFi+wQWQ zk`itXqy~V}@%ia=D?Y4PEW+2{?%#Noh?M;*NXrNkB=YOQ_?=^4VMeynf=OBt*ZMOOZILLjh~ zlSiG5s;&qCXk~E^MyHld!REPN+lqpZ7_={MAGx6pW_$s2-uEJV5W{XUJ-*WfP60g> zH>>>cBXD6Bcjk2sx%wWvp7%3$Gebw24+92I{)_ANPko(d4=DN<$x&$Z6lsIkZhH;w z$B=xdtb}mNP*85Ni}KSIn`P;17BpxcfbXiCE53GedtLnTbE9QT@q3n@_}tVd$li6j z8YPWaB1GgbXJ45rzDnwqbbR`hUuh(>*mwug*fJ>%RtWE zl}M@iW^O+VF^=#T?-!w7*L}th2wJ{zncBaesgWi+njMo(D6X}{Wm5Rw*$m$?5FvJZ zQzrGc(w$2;1L6?txd?hLedZ17?Z9S!i0`Rxo)z-7vG~c_H~&5J*|4=k6(jW|n!PgN`QInCWUx z*s##`M7~(2o*{9M-AsgEjST}T4zYf6Ycs!}*Sm8r){4TU-w#rW(M(Z4b88T^mG?f6 zwS9gEHKRdOe`G8MQKyk%C5dVcO{XN`okDfh4ZFq$Fm~q5^ z=aSTZD6vP1y5lElHGH>V1##ifvd57set^}oMfR`9SX8<|J*!4g_M@|QBrK?xRXEjS z%_@T+HvO#?`0hnQce%OC25wMNl7%jff>aVqvsi>bU((mFaOCaZT`z0nh|P)XZcu~;U%M5gn#HR zq_RsYJcd#I^Yef>Z`kg1&%;VXiO#5=L0JTl%zHOmm@=Inz&ZVDM9)Z2a0;m2^@|Wy zt2JE>Hi4uRLm;|G6`y+Oa!w@nO=MrG#+?^PlaCyTlJ-83#C|zc^&o|q?Y!Ad3e35x zf0DpnLq@O>@EoTzjC+gfG4mXy{;{|IP(R6(K&bbda-XM-}G0uhl1 zxMn$JWxo$|=2%Rf#iJT5ucywOSqH>;-h4$qF{Lj?c`eurTf%;--Y%E7T8IXn&^b97 zpYiES^Sq|yYRhC}3bCRby-cfmC01>Z0T~xqK22Z})rWfkL95{#Rbrmi6`;tj%EQST zrb=?dFF7a+@Y~M5{n43lnUSq71u(2Pp(bzN?~CD9;eD>ZvmximaCrQfQC&~1U>goU z9>Z9xF-A?x$`S!4WWQ%$V>}vULIm<{mbDwwD6RX}5=F0a=+$s(UHVAw$`41lzqSkS zS6ln?3GMlH%>^Q7=bE3{+Oky3hF>pi&%{wiODiSB&d$yvDPdH4DS2VIS`wf8dV64g z>NT@hV+i|VmJPWMd<02))Vg;66OE;i*_SV0SPf^3E3D;mNKy{^6(V91KET5T@2f0* z4n1jHcvF8dy)7g;YFr;%VQeBuKgOp9FGo%O9GgwXV0SS$Ccjz~N+N_KQWX!Ep*b^~ zC>Y)()BM!KlVh;H68BENp;P8J*2sq3FATFo2{v}pma|izZAv}sW5Z~9aa<^*XYq}Y z{#EvWcU1mW3ao>X#c(-A${5^^kubKpm=l+niX%uEIP?-?QeGB&HVNT$ewzfiUqeke zqwn6we2uUu`5c)gg0Y+Q-kUnh_)UPx-U^=}5n^N1JsG*ixZnhk1x2Ri zw`b;oF*5|Lm-jZO>JyK5Jep@YH%X0l%fv-THdkEzq6?KFG$&P082d7%Bkhib(Csd| z;gbAiT5c`ZTFt;|6Mve!Hju46kRVgk0`h2rbOr<*v_!g=aH`jsR}YEYqe-@xUn!3B zXqlyy#SJ+BgnsKy{#yW@^x;?9rI)W~emu#O&z9I}rKH^BL_tAu^lUBB1eGYWD^~n~ z20tiBdeRJT_JAi50G)8l*>JG2%{4UMWx5(e_juic5>2~6UX{Xo3HGJCU1+|Tq*Su} z2k+nakg#!ZbBm_9IQnY*1P5hb;vC3EQx_IV;9goD8y z9Sx3ap(NZE8X60H5ULS}2C)@3Z-EHj=(k;lJp7Vt1KMf2<IvO_NYg#1?sZbbQ;SAY}hQvVl|l^Ca|6inJU~S zhApS1!2u)sXhfbKgXmS6UZdj==IG@sOCk_DuNgj_!J`Mx`<_bycn19gnMtXr%U#ij z11{*lylGmuJJ`a#&?r1fy03|`WT!osyED5<0`d_dMD@KLQToXMdN#}h^hnHBqHrU` z7vl{o4d=|8Rdag=HTe1Z-5Q~wP_Ps4eu{RJt3y18Qz*}?6G4-?f@l&#yT0PXO<#-} zZH?jAkG}R@dFJa&#WN617DunAx{1guG(beFJ`V;l4^<)}?g0m7wE{n|g?Hu}!7-Ja z9+nLxg{qal9;dZX)umYuRLW@+H$x(B6`z%r&YBhvcr7Rt&-@y6Jhx@U7_=7K7_&uS zkN9nUJ)y9KAtR<->CrChV;i!2}IOCc;*BYO9rZ+uZ zdou0eV1$#wd^6dHlFYmDrA?MyiBvQ*QyyrYK%e5(_OQw6a^u!Ss}>T+#w?b1=&S4aITo z=Dx(22BswFCN$zo%z%s%W(HBo*o+2h5ZyX6H5x81P?N{EET7~Mhp*%+`%Z>@uS?C0wJ{zukAl)SkR@46X>ojI_ zT&M5e&t^-~%v_&H)}OtI2_2wjld~zQ1;Uiio8h@vaj8-CK&A5a^dl|W{O5B zycyrRgsx9JO*)*|bzST%cZS9o^r^g_0h(ZUee@m-U>r!~u-o%E?4hYRPh^xa_Y8Ro z8voq2vh@XCwBWR9dE+@4FQH@nQkDKx2hNX{mOHRoBrMs)7YeMT5l%7RwyCg$s2^jxdK>r_a{ z$b|B|c1WlUb@4OaPfs<1^&1IGu1Dnn6(H&fAaP8|Y3o>+O(}#oP9P)qV_Zy%XDDir zMk0q9wVe?^^IOqiT*mTDX<3Jn)b1R(Y~n>4fJvjY&FhDEO(Vt?WHH><6@2Ege!Up4 zNs(!J?ReZDUU%)kOMgSFvboYr({~(9XWRZ$cQ7Bv@`?24jcBL>)SXv>%jt#MT1S6z zY#gm!O6oH`(fJ)JzBu@r8gQlnQI9YNmm>$@L}0dS>{g1D*?T~3!*f1GDKjdvg6u)Y zSj%d)M@;b2Tr6Bc+}`v2Fnvh5WEM4C@-;#t`bAIXSS}|ji(%V|kDr9DZu%GrNWbhG zi&@U`Mv9?td&vbU$NVdKWd@H@f7PiDZ2M6+SXJeX>kxHR&Y>Z=?$63br`gyb669;- zu=D6xi$P63M<$s|m>L;LoOR>kPKEIm&qzmvaWUWw!yLc(+rD;O5VPi~({>w}fN@Xk zZ&X~xiZoMu{8B4_$M?p;L`h`kuB1b!Euan+6mf6mOWeVm%o8FJUwcD1)_j=MoSuWIk2ww9fnJFaY8Xckp& zuR7qDk)u1MC}Ow=YDtJ+g-QQM38w-wv5dnrbE{AL$5UGC#@eiY4gW=cGXJku<`Q2Te8DBRBy#sR;743oMyTYC&Zqwct$R%7 diff --git a/docs/en/Tutorials/Angular/images/bookstore-initial-books-page.png b/docs/en/Tutorials/Angular/images/bookstore-initial-books-page.png deleted file mode 100644 index 4af86c50fa07f10e7c89bbd3057857f8fa43168b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29186 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 diff --git a/docs/en/Tutorials/Angular/images/bookstore-service-terminal-output.png b/docs/en/Tutorials/Angular/images/bookstore-service-terminal-output.png deleted file mode 100644 index 69aaccba3192fd750fd452f26b026e90ba9788a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101434 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�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 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md b/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md index a1fbd1de54..65a7dc5714 100644 --- a/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md +++ b/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md @@ -1,476 +1,6 @@ -## ASP.NET Core MVC Tutorial - Part I +# Tutorials -### About this Tutorial +## Application Development -In this tutorial series, you will build an application that is used to manage a list of books & their authors. **Entity Framework Core** (EF Core) will be used as the ORM provider as it is the default database provider. - -This is the first part of the ASP.NET Core MVC tutorial series. See all parts: - -- **Part I: Create the project and a book list page (this tutorial)** -- [Part II: Create, Update and Delete books](Part-II.md) -- [Part III: Integration Tests](Part-III.md) - -You can access to the **source code** of the application from [the GitHub repository](https://github.com/abpframework/abp/tree/master/samples/BookStore). - -> You can also watch [this video course](https://amazingsolutions.teachable.com/p/lets-build-the-bookstore-application) prepared by an ABP community member, based on this tutorial. - -### Creating the Project - -Create a new project named `Acme.BookStore`, create the database and run the application by following the [Getting Started document](../../Getting-Started-AspNetCore-MVC-Template.md). - -### Solution Structure - -This is how the layered solution structure looks after it's created: - -![bookstore-visual-studio-solution](images/bookstore-visual-studio-solution-v3.png) - -> You can see the [Application template document](../../Startup-Templates/Application.md) to understand the solution structure in details. However, you will understand the basics with this tutorial. - -### Create the Book Entity - -Domain layer in the startup template is separated into two projects: - -- `Acme.BookStore.Domain` contains your [entities](../../Entities.md), [domain services](../../Domain-Services.md) and other core domain objects. -- `Acme.BookStore.Domain.Shared` contains constants, enums or other domain related objects those can be shared with clients. - -Define [entities](../../Entities.md) in the **domain layer** (`Acme.BookStore.Domain` project) of the solution. The main entity of the application is the `Book`. Create a class, named `Book`, in the `Acme.BookStore.Domain` project as shown below: - -````C# -using System; -using Volo.Abp.Domain.Entities.Auditing; - -namespace Acme.BookStore -{ - public class Book : AuditedAggregateRoot - { - public string Name { get; set; } - - public BookType Type { get; set; } - - public DateTime PublishDate { get; set; } - - public float Price { get; set; } - - protected Book() - { - - } - - public Book(Guid id, string name, BookType type, DateTime publishDate, float price) - :base(id) - { - Name = name; - Type = type; - PublishDate = publishDate; - Price = price; - } - } -} -```` - -* ABP has two fundamental base classes for entities: `AggregateRoot` and `Entity`. **Aggregate Root** is one of the **Domain Driven Design (DDD)** concepts. See [entity document](../../Entities.md) for details and best practices. -* `Book` entity inherits `AuditedAggregateRoot` which adds some auditing properties (`CreationTime`, `CreatorId`, `LastModificationTime`... etc.) on top of the `AggregateRoot` class. -* `Guid` is the **primary key type** of the `Book` entity. - -#### BookType Enum - -Define the `BookType` enum in the `Acme.BookStore.Domain.Shared` project: - -````C# -namespace Acme.BookStore -{ - public enum BookType - { - Undefined, - Adventure, - Biography, - Dystopia, - Fantastic, - Horror, - Science, - ScienceFiction, - Poetry - } -} -```` - -#### Add Book Entity to Your DbContext - -EF Core requires you to relate entities with your DbContext. The easiest way to do this is to add a `DbSet` property to the `BookStoreDbContext` class in the `Acme.BookStore.EntityFrameworkCore` project, as shown below: - -````C# - public class BookStoreDbContext : AbpDbContext - { - public DbSet Books { get; set; } - ... - } -```` - -#### Configure Your Book Entity - -Open `BookStoreDbContextModelCreatingExtensions.cs` file in the `Acme.BookStore.EntityFrameworkCore` project and add following code to the end of the `ConfigureBookStore` method to configure the Book entity: - -````C# -builder.Entity(b => -{ - b.ToTable(BookStoreConsts.DbTablePrefix + "Books", BookStoreConsts.DbSchema); - b.ConfigureByConvention(); //auto configure for the base class props - b.Property(x => x.Name).IsRequired().HasMaxLength(128); -}); -```` - -#### Add New Migration & Update the Database - -The Startup template uses [EF Core Code First Migrations](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/) to create and maintain the database schema. Open the **Package Manager Console (PMC)** (under the *Tools/Nuget Package Manager* menu), select the `Acme.BookStore.EntityFrameworkCore.DbMigrations` as the **default project** and execute the following command: - -![bookstore-pmc-add-book-migration](images/bookstore-pmc-add-book-migration-v2.png) - -This will create a new migration class inside the `Migrations` folder. Then execute the `Update-Database` command to update the database schema: - -```` -PM> Update-Database -```` - -#### Add Sample Data - -`Update-Database` command created the `AppBooks` table in the database. Open your database and enter a few sample rows, so you can show them on the page: - -![bookstore-books-table](images/bookstore-books-table.png) - -### Create the Application Service - -The next step is to create an [application service](../../Application-Services.md) to manage (create, list, update, delete...) the books. Application layer in the startup template is separated into two projects: - -* `Acme.BookStore.Application.Contracts` mainly contains your DTOs and application service interfaces. -* `Acme.BookStore.Application` contains the implementations of your application services. - -#### BookDto - -Create a DTO class named `BookDto` into the `Acme.BookStore.Application.Contracts` project: - -````C# -using System; -using Volo.Abp.Application.Dtos; - -namespace Acme.BookStore -{ - public class BookDto : AuditedEntityDto - { - public string Name { get; set; } - - public BookType Type { get; set; } - - public DateTime PublishDate { get; set; } - - public float Price { get; set; } - } -} -```` - -* **DTO** classes are used to **transfer data** between the *presentation layer* and the *application layer*. See the [Data Transfer Objects document](../../Data-Transfer-Objects.md) for more details. -* `BookDto` is used to transfer book data to the presentation layer in order to show the book information on the UI. -* `BookDto` is derived from the `AuditedEntityDto` which has audit properties just like the `Book` class defined above. - -It will be needed to convert `Book` entities to `BookDto` objects while returning books to the presentation layer. [AutoMapper](https://automapper.org) library can automate this conversion when you define the proper mapping. Startup template comes with AutoMapper configured, so you can just define the mapping in the `BookStoreApplicationAutoMapperProfile` class in the `Acme.BookStore.Application` project: - -````csharp -using AutoMapper; - -namespace Acme.BookStore -{ - public class BookStoreApplicationAutoMapperProfile : Profile - { - public BookStoreApplicationAutoMapperProfile() - { - CreateMap(); - } - } -} -```` - -#### CreateUpdateBookDto - -Create a DTO class named `CreateUpdateBookDto` into the `Acme.BookStore.Application.Contracts` project: - -````c# -using System; -using System.ComponentModel.DataAnnotations; - -namespace Acme.BookStore -{ - public class CreateUpdateBookDto - { - [Required] - [StringLength(128)] - public string Name { get; set; } - - [Required] - public BookType Type { get; set; } = BookType.Undefined; - - [Required] - public DateTime PublishDate { get; set; } - - [Required] - public float Price { get; set; } - } -} -```` - -* This DTO class is used to get book information from the user interface while creating or updating a book. -* It defines data annotation attributes (like `[Required]`) to define validations for the properties. DTOs are [automatically validated](../../Validation.md) by the ABP framework. - -Next, add a mapping in `BookStoreApplicationAutoMapperProfile` from the `CreateUpdateBookDto` object to the `Book` entity: - -````csharp -CreateMap(); -```` - -#### IBookAppService - -Define an interface named `IBookAppService` in the `Acme.BookStore.Application.Contracts` project: - -````C# -using System; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; - -namespace Acme.BookStore -{ - public interface IBookAppService : - ICrudAppService< //Defines CRUD methods - BookDto, //Used to show books - Guid, //Primary key of the book entity - PagedAndSortedResultRequestDto, //Used for paging/sorting on getting a list of books - CreateUpdateBookDto, //Used to create a new book - CreateUpdateBookDto> //Used to update a book - { - - } -} -```` - -* Defining interfaces for application services is not required by the framework. However, it's suggested as a best practice. -* `ICrudAppService` defines common **CRUD** methods: `GetAsync`, `GetListAsync`, `CreateAsync`, `UpdateAsync` and `DeleteAsync`. It's not required to extend it. Instead, you could inherit from the empty `IApplicationService` interface and define your own methods manually. -* There are some variations of the `ICrudAppService` where you can use separated DTOs for each method. - -#### BookAppService - -Implement the `IBookAppService` as named `BookAppService` in the `Acme.BookStore.Application` project: - -````C# -using System; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; -using Volo.Abp.Domain.Repositories; - -namespace Acme.BookStore -{ - public class BookAppService : - CrudAppService, - IBookAppService - { - public BookAppService(IRepository repository) - : base(repository) - { - - } - } -} -```` - -* `BookAppService` is derived from `CrudAppService<...>` which implements all the CRUD methods defined above. -* `BookAppService` injects `IRepository` which is the default repository for the `Book` entity. ABP automatically creates default repositories for each aggregate root (or entity). See the [repository document](../../Repositories.md). -* `BookAppService` uses `IObjectMapper` to convert `Book` objects to `BookDto` objects and `CreateUpdateBookDto` objects to `Book` objects. The Startup template uses the [AutoMapper](http://automapper.org/) library as the object mapping provider. You defined the mappings before, so it will work as expected. - -### Auto API Controllers - -You normally create **Controllers** to expose application services as **HTTP API** endpoints. Thus allowing browser or 3rd-party clients to call them via AJAX. ABP can [**automagically**](../../AspNetCore/Auto-API-Controllers.md) configures your application services as MVC API Controllers by convention. - -#### Swagger UI - -The startup template is configured to run the [swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the application and enter `https://localhost:XXXX/swagger/` (replace XXXX by your own port) as URL on your browser. - -You will see some built-in service endpoints as well as the `Book` service and its REST-style endpoints: - -![bookstore-swagger](images/bookstore-swagger.png) - -Swagger has a nice UI to test APIs. You can try to execute the `[GET] /api/app/book` API to get a list of books. - -### Dynamic JavaScript Proxies - -It's common to call HTTP API endpoints via AJAX from the **JavaScript** side. You can use `$.ajax` or another tool to call the endpoints. However, ABP offers a better way. - -ABP **dynamically** creates JavaScript **proxies** for all API endpoints. So, you can use any **endpoint** just like calling a **JavaScript function**. - -#### Testing in the Browser Developer Console - -You can easily test the JavaScript proxies using your favorite browser's **Developer Console** now. Run the application, open your browser's **developer tools** (shortcut: F12), switch to the **Console** tab, type the following code and press enter: - -````js -acme.bookStore.book.getList({}).done(function (result) { console.log(result); }); -```` - -* `acme.bookStore` is the namespace of the `BookAppService` converted to [camelCase](https://en.wikipedia.org/wiki/Camel_case). -* `book` is the conventional name for the `BookAppService` (removed AppService postfix and converted to camelCase). -* `getList` is the conventional name for the `GetListAsync` method defined in the `AsyncCrudAppService` base class (removed Async postfix and converted to camelCase). -* `{}` argument is used to send an empty object to the `GetListAsync` method which normally expects an object of type `PagedAndSortedResultRequestDto` that is used to send paging and sorting options to the server (all properties are optional, so you can send an empty object). -* `getList` function returns a `promise`. So, you can pass a callback to the `done` (or `then`) function to get the result from the server. - -Running this code produces the following output: - -![bookstore-test-js-proxy-getlist](images/bookstore-test-js-proxy-getlist.png) - -You can see the **book list** returned from the server. You can also check the **network** tab of the developer tools to see the client to server communication: - -![bookstore-test-js-proxy-getlist-network](images/bookstore-test-js-proxy-getlist-network.png) - -Let's **create a new book** using the `create` function: - -````js -acme.bookStore.book.create({ name: 'Foundation', type: 7, publishDate: '1951-05-24', price: 21.5 }).done(function (result) { console.log('successfully created the book with id: ' + result.id); }); -```` - -You should see a message in the console something like that: - -```` -successfully created the book with id: f3f03580-c1aa-d6a9-072d-39e75c69f5c7 -```` - -Check the `Books` table in the database to see the new book row. You can try `get`, `update` and `delete` functions yourself. - -### Create the Books Page - -It's time to create something visible and usable! Instead of classic MVC, we will use the new [Razor Pages UI](https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start) approach which is recommended by Microsoft. - -Create a new `Books` folder under the `Pages` folder of the `Acme.BookStore.Web` project and add a new Razor Page named `Index.cshtml`: - -![bookstore-add-index-page](images/bookstore-add-index-page-v2.png) - -Open the `Index.cshtml` and change the content as shown below: - -````html -@page -@using Acme.BookStore.Web.Pages.Books -@inherits Acme.BookStore.Web.Pages.BookStorePage -@model IndexModel - -

Books

-```` - -* This code changes the default inheritance of the Razor View Page Model so it **inherits** from the `BookStorePage` class (instead of `PageModel`). The `BookStorePage` class which comes with the startup template and provides some shared properties/methods used by all pages. -* Ensure that the `IndexModel` (*Index.cshtml.cs)* has the `Acme.BookStore.Web.Pages.Books` namespace, or update it in the `Index.cshtml`. - -#### Add Books Page to the Main Menu - -Open the `BookStoreMenuContributor` class in the `Menus` folder and add the following code to the end of the `ConfigureMainMenuAsync` method: - -````c# -context.Menu.AddItem( - new ApplicationMenuItem("BooksStore", l["Menu:BookStore"]) - .AddItem(new ApplicationMenuItem("BooksStore.Books", l["Menu:Books"], url: "/Books")) -); -```` - -#### Localizing the Menu Items - -Localization texts are located under the `Localization/BookStore` folder of the `Acme.BookStore.Domain.Shared` project: - -![bookstore-localization-files](images/bookstore-localization-files-v2.png) - -Open the `en.json` file and add localization texts for `Menu:BookStore` and `Menu:Books` keys to the end of the file: - -````json -{ - "culture": "en", - "texts": { - "Menu:BookStore": "Book Store", - "Menu:Books": "Books" - } -} -```` - -* ABP's localization system is built on [ASP.NET Core's standard localization](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization) system and extends it in many ways. See the [localization document](../../Localization.md) for details. -* Localization key names are arbitrary. You can set any name. We prefer to add `Menu:` prefix for menu items to distinguish from other texts. If a text is not defined in the localization file, it **fallbacks** to the localization key (ASP.NET Core's standard behavior). - -Run the application and see the new menu item has been added to the top bar: - -![bookstore-menu-items](images/bookstore-menu-items.png) - -When you click to the Books menu item, you are redirected to the new Books page. - -#### Book List - -We will use the [Datatables.net](https://datatables.net/) JQuery plugin to show list of tables on the page. Datatables can completely work via AJAX, it is fast and provides a good user experience. Datatables plugin is configured in the startup template, so you can directly use it in any page without including any style or script file to your page. - -##### Index.cshtml - -Change the `Pages/Books/Index.cshtml` as following: - -````html -@page -@inherits Acme.BookStore.Web.Pages.BookStorePage -@model Acme.BookStore.Web.Pages.Books.IndexModel -@section scripts -{ - -} - - -

@L["Books"]

-
- - - - - @L["Name"] - @L["Type"] - @L["PublishDate"] - @L["Price"] - @L["CreationTime"] - - - - -
-```` - -* `abp-script` [tag helper](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro) is used to add external **scripts** to the page. It has many additional features compared to standard `script` tag. It handles **minification** and **versioning** for example. See the [bundling & minification document](../../AspNetCore/Bundling-Minification.md) for details. -* `abp-card` and `abp-table` are **tag helpers** for Twitter Bootstrap's [card component](http://getbootstrap.com/docs/4.1/components/card/). There are many tag helpers in ABP to easily use most of the [bootstrap](https://getbootstrap.com/) components. You can also use regular HTML tags instead of these tag helpers, but using tag helpers reduces HTML code and prevents errors by help of the intellisense and compile time type checking. See the [tag helpers document](../../AspNetCore/Tag-Helpers/Index.md). -* You can **localize** the column names in the localization file as you did for the menu items above. - -##### Add a Script File - -Create `index.js` JavaScript file under the `Pages/Books/` folder: - -![bookstore-index-js-file](images/bookstore-index-js-file-v2.png) - -`index.js` content is shown below: - -````js -$(function () { - var dataTable = $('#BooksTable').DataTable(abp.libs.datatables.normalizeConfiguration({ - ajax: abp.libs.datatables.createAjax(acme.bookStore.book.getList), - columnDefs: [ - { data: "name" }, - { data: "type" }, - { data: "publishDate" }, - { data: "price" }, - { data: "creationTime" } - ] - })); -}); -```` - -* `abp.libs.datatables.createAjax` is a helper function to adapt ABP's dynamic JavaScript API proxies to Datatable's format. -* `abp.libs.datatables.normalizeConfiguration` is another helper function. There's no requirement to use it, but it simplifies the datatables configuration by providing conventional values for missing options. -* `acme.bookStore.book.getList` is the function to get list of books (you have seen it before). -* See [Datatable's documentation](https://datatables.net/manual/) for more configuration options. - -The final UI is shown below: - -![bookstore-book-list](images/bookstore-book-list-2.png) - -### Next Part - -See the [next part](Part-II.md) of this tutorial. +* [With ASP.NET Core MVC / Razor Pages UI](../Part-1?UI=MVC) +* [With Angular UI](../Part-1?UI=NG) diff --git a/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md b/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md index 505de55adc..65a7dc5714 100644 --- a/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md +++ b/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md @@ -1,432 +1,6 @@ -## ASP.NET Core MVC Tutorial - Part II +# Tutorials -### About this Tutorial +## Application Development -This is the second part of the ASP.NET Core MVC tutorial series. See all parts: - -* [Part I: Create the project and a book list page](Part-I.md) -* **Part II: Create, Update and Delete books (this tutorial)** -* [Part III: Integration Tests](Part-III.md) - -You can access to the **source code** of the application from [the GitHub repository](https://github.com/volosoft/abp/tree/master/samples/BookStore). - -> You can also watch [this video course](https://amazingsolutions.teachable.com/p/lets-build-the-bookstore-application) prepared by an ABP community member, based on this tutorial. - -### Creating a New Book - -In this section, you will learn how to create a new modal dialog form to create a new book. The result dialog will be like that: - -![bookstore-create-dialog](images/bookstore-create-dialog-2.png) - -#### Create the Modal Form - -Create a new razor page, named `CreateModal.cshtml` under the `Pages/Books` folder of the `Acme.BookStore.Web` project: - -![bookstore-add-create-dialog](images/bookstore-add-create-dialog-v2.png) - -##### CreateModal.cshtml.cs - -Open the `CreateModal.cshtml.cs` file (`CreateModalModel` class) and replace with the following code: - -````C# -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; - -namespace Acme.BookStore.Web.Pages.Books -{ - public class CreateModalModel : BookStorePageModel - { - [BindProperty] - public CreateUpdateBookDto Book { get; set; } - - private readonly IBookAppService _bookAppService; - - public CreateModalModel(IBookAppService bookAppService) - { - _bookAppService = bookAppService; - } - - public async Task OnPostAsync() - { - await _bookAppService.CreateAsync(Book); - return NoContent(); - } - } -} -```` - -* This class is derived from the `BookStorePageModel` instead of standard `PageModel`. `BookStorePageModel` inherits the `PageModel` and adds some common properties/methods those can be used by your page model classes. -* `[BindProperty]` attribute on the `Book` property binds post request data to this property. -* This class simply injects the `IBookAppService` in its constructor and calls the `CreateAsync` method in the `OnPostAsync` handler. - -##### CreateModal.cshtml - -Open the `CreateModal.cshtml` file and paste the code below: - -````html -@page -@inherits Acme.BookStore.Web.Pages.BookStorePage -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal -@model Acme.BookStore.Web.Pages.Books.CreateModalModel -@{ - Layout = null; -} - - - - - - - - - -```` - -* This modal uses `abp-dynamic-form` tag helper to automatically create the form from the `CreateBookViewModel` class. - * `abp-model` attribute indicates the model object, the `Book` property in this case. - * `data-ajaxForm` attribute makes the form submitting via AJAX, instead of a classic page post. - * `abp-form-content` tag helper is a placeholder to render the form controls (this is optional and needed only if you added some other content in the `abp-dynamic-form` tag, just like in this page). - -#### Add the "New book" Button - -Open the `Pages/Books/Index.cshtml` and change the `abp-card-header` tag as shown below: - -````html - - - -

@L["Books"]

-
- - - -
-
-```` - -Just added a **New book** button to the **top right** of the table: - -![bookstore-new-book-button](images/bookstore-new-book-button.png) - -Open the `pages/books/index.js` and add the following code just after the datatable configuration: - -````js -var createModal = new abp.ModalManager(abp.appPath + 'Books/CreateModal'); - -createModal.onResult(function () { - dataTable.ajax.reload(); -}); - -$('#NewBookButton').click(function (e) { - e.preventDefault(); - createModal.open(); -}); -```` - -* `abp.ModalManager` is a helper class to open and manage modals in the client side. It internally uses Twitter Bootstrap's standard modal, but abstracts many details by providing a simple API. - -Now, you can **run the application** and add new books using the new modal form. - -### Updating An Existing Book - -Create a new razor page, named `EditModal.cshtml` under the `Pages/Books` folder of the `Acme.BookStore.Web` project: - -![bookstore-add-edit-dialog](images/bookstore-add-edit-dialog.png) - -#### EditModal.cshtml.cs - -Open the `EditModal.cshtml.cs` file (`EditModalModel` class) and replace with the following code: - -````csharp -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; - -namespace Acme.BookStore.Web.Pages.Books -{ - public class EditModalModel : BookStorePageModel - { - [HiddenInput] - [BindProperty(SupportsGet = true)] - public Guid Id { get; set; } - - [BindProperty] - public CreateUpdateBookDto Book { get; set; } - - private readonly IBookAppService _bookAppService; - - public EditModalModel(IBookAppService bookAppService) - { - _bookAppService = bookAppService; - } - - public async Task OnGetAsync() - { - var bookDto = await _bookAppService.GetAsync(Id); - Book = ObjectMapper.Map(bookDto); - } - - public async Task OnPostAsync() - { - await _bookAppService.UpdateAsync(Id, Book); - return NoContent(); - } - } -} -```` - -* `[HiddenInput]` and `[BindProperty]` are standard ASP.NET Core MVC attributes. Used `SupportsGet` to be able to get Id value from query string parameter of the request. -* Mapped `BookDto` (received from the `BookAppService.GetAsync`) to `CreateUpdateBookDto` in the `GetAsync` method. -* The `OnPostAsync` simply uses `BookAppService.UpdateAsync` to update the entity. - -#### BookDto to CreateUpdateBookDto Mapping - -In order to perform `BookDto` to `CreateUpdateBookDto` object mapping, open the `BookStoreWebAutoMapperProfile.cs` in the `Acme.BookStore.Web` project and change it as shown below: - -````csharp -using AutoMapper; - -namespace Acme.BookStore.Web -{ - public class BookStoreWebAutoMapperProfile : Profile - { - public BookStoreWebAutoMapperProfile() - { - CreateMap(); - } - } -} -```` - -* Just added `CreateMap();` as the mapping definition. - -#### EditModal.cshtml - -Replace `EditModal.cshtml` content with the following content: - -````html -@page -@inherits Acme.BookStore.Web.Pages.BookStorePage -@using Acme.BookStore.Web.Pages.Books -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal -@model EditModalModel -@{ - Layout = null; -} - - - - - - - - - - -```` - -This page is very similar to the `CreateModal.cshtml` except; - -* It includes an `abp-input` for the `Id` property to store id of the editing book (which is a hidden input). -* It uses `Books/EditModal` as the post URL and *Update* text as the modal header. - -#### Add "Actions" Dropdown to the Table - -We will add a dropdown button ("Actions") for each row of the table. The final UI looks like this: - -![bookstore-books-table-actions](images/bookstore-books-table-actions.png) - -Open the `Pages/Books/Index.cshtml` page and change the table section as shown below: - -````html - - - - @L["Actions"] - @L["Name"] - @L["Type"] - @L["PublishDate"] - @L["Price"] - @L["CreationTime"] - - - -```` - -* Just added a new `th` tag for the "Actions". - -Open the `pages/books/index.js` and replace the content as below: - -````js -$(function () { - - var l = abp.localization.getResource('BookStore'); - - var createModal = new abp.ModalManager(abp.appPath + 'Books/CreateModal'); - var editModal = new abp.ModalManager(abp.appPath + 'Books/EditModal'); - - var dataTable = $('#BooksTable').DataTable(abp.libs.datatables.normalizeConfiguration({ - processing: true, - serverSide: true, - paging: true, - searching: false, - autoWidth: false, - scrollCollapse: true, - order: [[1, "asc"]], - ajax: abp.libs.datatables.createAjax(acme.bookStore.book.getList), - columnDefs: [ - { - rowAction: { - items: - [ - { - text: l('Edit'), - action: function (data) { - editModal.open({ id: data.record.id }); - } - } - ] - } - }, - { data: "name" }, - { data: "type" }, - { data: "publishDate" }, - { data: "price" }, - { data: "creationTime" } - ] - })); - - createModal.onResult(function () { - dataTable.ajax.reload(); - }); - - editModal.onResult(function () { - dataTable.ajax.reload(); - }); - - $('#NewBookButton').click(function (e) { - e.preventDefault(); - createModal.open(); - }); -}); -```` - -* Used `abp.localization.getResource('BookStore')` to be able to use the same localization texts defined on the server side. -* Added a new `ModalManager` named `createModal` to open the create modal dialog. -* Added a new `ModalManager` named `editModal` to open the edit modal dialog. -* Added a new column at the beginning of the `columnDefs` section. This column is used for the "Actions" dropdown button. -* "New Book" action simply calls `createModal.open` to open the create dialog. -* "Edit" action simply calls `editModal.open` to open the edit dialog. -` -You can run the application and edit any book by selecting the edit action. - -### Deleting an Existing Book - -Open the `pages/books/index.js` and add a new item to the `rowAction` `items`: - -````js -{ - text: l('Delete'), - confirmMessage: function (data) { - return l('BookDeletionConfirmationMessage', data.record.name); - }, - action: function (data) { - acme.bookStore.book - .delete(data.record.id) - .then(function() { - abp.notify.info(l('SuccessfullyDeleted')); - dataTable.ajax.reload(); - }); - } -} -```` - -* `confirmMessage` option is used to ask a confirmation question before executing the `action`. -* Used `acme.bookStore.book.delete` javascript proxy function to perform an AJAX request to delete a book. -* `abp.notify.info` is used to show a toastr notification just after the deletion. - -The final `index.js` content is shown below: - -````js -$(function () { - - var l = abp.localization.getResource('BookStore'); - - var createModal = new abp.ModalManager(abp.appPath + 'Books/CreateModal'); - var editModal = new abp.ModalManager(abp.appPath + 'Books/EditModal'); - - var dataTable = $('#BooksTable').DataTable(abp.libs.datatables.normalizeConfiguration({ - processing: true, - serverSide: true, - paging: true, - searching: false, - autoWidth: false, - scrollCollapse: true, - order: [[1, "asc"]], - ajax: abp.libs.datatables.createAjax(acme.bookStore.book.getList), - columnDefs: [ - { - rowAction: { - items: - [ - { - text: l('Edit'), - action: function (data) { - editModal.open({ id: data.record.id }); - } - }, - { - text: l('Delete'), - confirmMessage: function (data) { - return l('BookDeletionConfirmationMessage', data.record.name); - }, - action: function (data) { - acme.bookStore.book - .delete(data.record.id) - .then(function() { - abp.notify.info(l('SuccessfullyDeleted')); - dataTable.ajax.reload(); - }); - } - } - ] - } - }, - { data: "name" }, - { data: "type" }, - { data: "publishDate" }, - { data: "price" }, - { data: "creationTime" } - ] - })); - - createModal.onResult(function () { - dataTable.ajax.reload(); - }); - - editModal.onResult(function () { - dataTable.ajax.reload(); - }); - - $('#NewBookButton').click(function (e) { - e.preventDefault(); - createModal.open(); - }); -}); -```` - -Open the `en.json` in the `Acme.BookStore.Domain.Shared` project and add the following line: - -````json -"BookDeletionConfirmationMessage": "Are you sure to delete the book {0}?", -"SuccessfullyDeleted": "Successfully deleted" -```` - -Run the application and try to delete a book. - -### Next Part - -See the [next part](Part-III.md) of this tutorial. +* [With ASP.NET Core MVC / Razor Pages UI](../Part-1?UI=MVC) +* [With Angular UI](../Part-1?UI=NG) diff --git a/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md b/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md index f207d9df0c..65a7dc5714 100644 --- a/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md +++ b/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md @@ -1,166 +1,6 @@ -## ASP.NET Core MVC Tutorial - Part III +# Tutorials -### About this Tutorial +## Application Development -This is the third part of the ASP.NET Core MVC tutorial series. See all parts: - -- [Part I: Create the project and a book list page](Part-I.md) -- [Part II: Create, Update and Delete books](Part-II.md) -- **Part III: Integration Tests (this tutorial)** - -You can access to the **source code** of the application from [the GitHub repository](https://github.com/volosoft/abp/tree/master/samples/BookStore). - -> You can also watch [this video course](https://amazingsolutions.teachable.com/p/lets-build-the-bookstore-application) prepared by an ABP community member, based on this tutorial. - -### Test Projects in the Solution - -There are multiple test projects in the solution: - -![bookstore-test-projects-v2](images/bookstore-test-projects-v2.png) - -Each project is used to test the related application project. Test projects use the following libraries for testing: - -* [xunit](https://xunit.github.io/) as the main test framework. -* [Shoudly](http://shouldly.readthedocs.io/en/latest/) as an assertion library. -* [NSubstitute](http://nsubstitute.github.io/) as a mocking library. - -### Adding Test Data - -Startup template contains the `BookStoreTestDataSeedContributor` class in the `Acme.BookStore.TestBase` project that creates some data to run tests on. - -Change the `BookStoreTestDataSeedContributor` class as show below: - -````C# -using System; -using System.Threading.Tasks; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; -using Volo.Abp.Guids; - -namespace Acme.BookStore -{ - public class BookStoreTestDataSeedContributor - : IDataSeedContributor, ITransientDependency - { - private readonly IRepository _bookRepository; - private readonly IGuidGenerator _guidGenerator; - - public BookStoreTestDataSeedContributor( - IRepository bookRepository, - IGuidGenerator guidGenerator) - { - _bookRepository = bookRepository; - _guidGenerator = guidGenerator; - } - - public async Task SeedAsync(DataSeedContext context) - { - await _bookRepository.InsertAsync( - new Book(_guidGenerator.Create(), "Test book 1", BookType.Fantastic, new DateTime(2015, 05, 24), 21) - ); - - await _bookRepository.InsertAsync( - new Book(_guidGenerator.Create(), "Test book 2", BookType.Science, new DateTime(2014, 02, 11), 15) - ); - } - } -} -```` - -* Injected `IRepository` and used it in the `SeedAsync` to create two book entities as the test data. -* Used `IGuidGenerator` service to create GUIDs. While `Guid.NewGuid()` would perfectly work for testing, `IGuidGenerator` has additional features especially important while using real databases (see the [Guid generation document](../../Guid-Generation.md) for more). - -### Testing the BookAppService - -Create a test class named `BookAppService_Tests` in the `Acme.BookStore.Application.Tests` project: - -````C# -using System.Threading.Tasks; -using Shouldly; -using Volo.Abp.Application.Dtos; -using Xunit; - -namespace Acme.BookStore -{ - public class BookAppService_Tests : BookStoreApplicationTestBase - { - private readonly IBookAppService _bookAppService; - - public BookAppService_Tests() - { - _bookAppService = GetRequiredService(); - } - - [Fact] - public async Task Should_Get_List_Of_Books() - { - //Act - var result = await _bookAppService.GetListAsync( - new PagedAndSortedResultRequestDto() - ); - - //Assert - result.TotalCount.ShouldBeGreaterThan(0); - result.Items.ShouldContain(b => b.Name == "Test book 1"); - } - } -} -```` - -* `Should_Get_List_Of_Books` test simply uses `BookAppService.GetListAsync` method to get and check the list of users. - -Add a new test that creates a valid new book: - -````C# -[Fact] -public async Task Should_Create_A_Valid_Book() -{ - //Act - var result = await _bookAppService.CreateAsync( - new CreateUpdateBookDto - { - Name = "New test book 42", - Price = 10, - PublishDate = DateTime.Now, - Type = BookType.ScienceFiction - } - ); - - //Assert - result.Id.ShouldNotBe(Guid.Empty); - result.Name.ShouldBe("New test book 42"); -} -```` - -Add a new test that tries to create an invalid book and fails: - -````C# -[Fact] -public async Task Should_Not_Create_A_Book_Without_Name() -{ - var exception = await Assert.ThrowsAsync(async () => - { - await _bookAppService.CreateAsync( - new CreateUpdateBookDto - { - Name = "", - Price = 10, - PublishDate = DateTime.Now, - Type = BookType.ScienceFiction - } - ); - }); - - exception.ValidationErrors - .ShouldContain(err => err.MemberNames.Any(mem => mem == "Name")); -} -```` - -* Since the `Name` is empty, ABP throws an `AbpValidationException`. - -Open the **Test Explorer Window** (use Test -> Windows -> Test Explorer menu if it is not visible) and **Run All** tests: - -![bookstore-appservice-tests](images/bookstore-appservice-tests.png) - -Congratulations, green icons show that tests have been successfully passed! \ No newline at end of file +* [With ASP.NET Core MVC / Razor Pages UI](../Part-1?UI=MVC) +* [With Angular UI](../Part-1?UI=NG) diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-book-list.png b/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-book-list.png deleted file mode 100644 index f531e6f457418db002d283b5c6ef950839552bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33481 zcmdqIWl)?=v@S}LFX4*-!GkA*dkF4H7y<-$hu|{I5Oi>okRXG*OK^8)@CgKWcL^?o zyUf5Da`xVT?!9&Y+}h`yTSZmBHE+M&t5>gH>se1Pf>e}b@SadU!NI}7lamFi;o$re zkAricZEtX}G2A%zGMWxZGSELKi<0aVJ{qmb`h5$HbtQ8yEW+ zK)L#{6l7_+z@yp%Zi+9>wV7Z#I8H-U^Mefio~Z$OA$O$2wSH01^52+E{gI>{`YQf6#{bAIkRKQg?MP!6$0wHfZJ>2RT~5yWdaaAKkK}- z2hT({j3y;u^erV;G0qv41Kyn>JF_`w6M0+w<*wTQx(uIC3auxmQ5rKp!1;n2r}xFY z-d~xdB_xa--ruRZ+3%auywN1inu88%#>%^FF$o?I&@CPhFY%6SmU`~v4L?Fqoy^RL zTHZMHssJa!%%zA|>(7kSq z&jpR-p7RcK4(|9^StUB!#(y_4A*W%UAQ&KiCcDvW2Jo|^V^>;jZ0Oz00YkSXE4`nh z@{Y>1EvU~%;_l((Ytts*9=1X_Nr(r$&PIsU$JJhU@H>#V8%iWzTh?ES{TpZ$ao8g@ z|A-(;S72KkBs*4T}%2%S-&w<_2ajjAG(oDMzEAc0Xs9 zN+?_!

Books

+```` + +* This code changes the default inheritance of the Razor View Page Model so it **inherits** from the `BookStorePage` class (instead of `PageModel`). The `BookStorePage` class which comes with the startup template, provides some shared properties/methods used by all pages. + +* Set the `IndexModel`'s namespace to `Acme.BookStore.Pages.Books` in `Index.cshtml.cs`. + + + +**Index.cshtml.cs:** + +```csharp +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Acme.BookStore.Web.Pages.Books +{ + public class IndexModel : PageModel + { + public void OnGet() + { + + } + } +} +``` + +#### Add books page to the main menu + +Open the `BookStoreMenuContributor` class in the `Menus` folder and add the following code to the end of the `ConfigureMainMenuAsync` method: + +````csharp +//... +namespace Acme.BookStore.Web.Menus +{ + public class BookStoreMenuContributor : IMenuContributor + { + private async Task ConfigureMainMenuAsync(MenuConfigurationContext context) + { + //<-- added the below code + context.Menu.AddItem( + new ApplicationMenuItem("BooksStore", l["Menu:BookStore"]) + .AddItem( + new ApplicationMenuItem("BooksStore.Books", l["Menu:Books"], url: "/Books") + ) + ); + //--> + } + } +} +```` + +{{end}} + +#### Localize the menu items + +Localization texts are located under the `Localization/BookStore` folder of the `Acme.BookStore.Domain.Shared` project: + +![bookstore-localization-files](./images/bookstore-localization-files-v2.png) + +Open the `en.json` (*English translations*) file and add the below localization texts to the end of the file: + +````json +{ + "Culture": "en", + "Texts": { + "Menu:Home": "Home", + "Welcome": "Welcome", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io.", + + "Menu:BookStore": "Book Store", + "Menu:Books": "Books", + "Actions": "Actions", + "Edit": "Edit", + "PublishDate": "Publish date", + "NewBook": "New book", + "Name": "Name", + "Type": "Type", + "Price": "Price", + "CreationTime": "Creation time", + "AreYouSureToDelete": "Are you sure you want to delete this item?" + } +} +```` + +* ABP's localization system is built on [ASP.NET Core's standard localization](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization) system and extends it in many ways. See the [localization document](https://docs.abp.io/en/abp/latest/Localization) for details. +* Localization key names are arbitrary. You can set any name. As a best practice, we prefer to add `Menu:` prefix for menu items to distinguish from other texts. If a text is not defined in the localization file, it **fallbacks** to the localization key (as ASP.NET Core's standard behavior). + +{{if UI == "MVC"}} + +Run the project, login to the application with the username `admin` and password `1q2w3E*` and see the new menu item has been added to the menu. + +![bookstore-menu-items](./images/bookstore-new-menu-item.png) + +When you click to the Books menu item under the Book Store parent, you are being redirected to the new Books page. + +#### Book list + +We will use the [Datatables.net](https://datatables.net/) jQuery plugin to show the book list. [Datatables](https://datatables.net/) can completely work via AJAX, it is fast, popular and provides a good user experience. [Datatables](https://datatables.net/) plugin is configured in the startup template, so you can directly use it in any page without including any style or script file to your page. + +##### Index.cshtml + +Change the `Pages/Books/Index.cshtml` as following: + +````html +@page +@inherits Acme.BookStore.Web.Pages.BookStorePage +@model Acme.BookStore.Web.Pages.Books.IndexModel +@section scripts +{ + +} + + +

@L["Books"]

+
+ + + + + @L["Name"] + @L["Type"] + @L["PublishDate"] + @L["Price"] + @L["CreationTime"] + + + + +
+```` + +* `abp-script` [tag helper](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro) is used to add external **scripts** to the page. It has many additional features compared to standard `script` tag. It handles **minification** and **versioning**. See the [bundling & minification document](https://docs.abp.io/en/abp/latest/AspNetCore/Bundling-Minification) for details. +* `abp-card` and `abp-table` are **tag helpers** for Twitter Bootstrap's [card component](http://getbootstrap.com/docs/4.1/components/card/). There are other useful tag helpers in ABP to easily use most of the [bootstrap](https://getbootstrap.com/) components. You can also use regular HTML tags instead of these tag helpers, but using tag helpers reduces HTML code and prevents errors by help the of IntelliSense and compile time type checking. Further information, see the [tag helpers](https://docs.abp.io/en/abp/latest/AspNetCore/Tag-Helpers/Index) document. +* You can **localize** the column names in the localization file as you did for the menu items above. + +##### Add a Script File + +Create `index.js` JavaScript file under the `Pages/Books/` folder: + +![bookstore-index-js-file](./images/bookstore-index-js-file-v2.png) + +`index.js` content is shown below: + +````js +$(function () { + var dataTable = $('#BooksTable').DataTable(abp.libs.datatables.normalizeConfiguration({ + ajax: abp.libs.datatables.createAjax(acme.bookStore.book.getList), + columnDefs: [ + { data: "name" }, + { data: "type" }, + { data: "publishDate" }, + { data: "price" }, + { data: "creationTime" } + ] + })); +}); +```` + +* `abp.libs.datatables.createAjax` is a helper function to adapt ABP's dynamic JavaScript API proxies to [Datatable](https://datatables.net/)'s format. +* `abp.libs.datatables.normalizeConfiguration` is another helper function. There's no requirement to use it, but it simplifies the [Datatables](https://datatables.net/) configuration by providing conventional values for missing options. +* `acme.bookStore.book.getList` is the function to get list of books (as described in [dynamic JavaScript proxies](#Dynamic JavaScript proxies)). +* See [Datatables documentation](https://datatables.net/manual/) for all configuration options. + +It's end of this part. The final UI of this work is shown as below: + +![Book list](./images/bookstore-book-list-2.png) + +{{end}} + +{{if UI == "NG"}} + +### Angular development +#### Create the books page + +It's time to create something visible and usable! There are some tools that we will use when developing ABP Angular frontend application: + +- [Angular CLI](https://angular.io/cli) will be used to create modules, components and services. +- [NGXS](https://ngxs.gitbook.io/ngxs/) will be used as the state management library. +- [Ng Bootstrap](https://ng-bootstrap.github.io/#/home) will be used as the UI component library. +- [Visual Studio Code](https://code.visualstudio.com/) will be used as the code editor (you can use your favorite editor). + +#### Install NPM packages + +Open a new command line interface (terminal window) and go to your `angular` folder and then run `yarn` command to install NPM packages: + +```bash +yarn +``` + +#### BooksModule + +Run the following command line to create a new module, named `BooksModule`: + +```bash +yarn ng generate module books --route books --module app.module +``` + +![Generating books module](./images/bookstore-creating-books-module-terminal.png) + +#### Routing + +Open the `app-routing.module.ts` file in `src\app` folder. Add the new `import` and replace `books` path as shown below + +```js +import { ApplicationLayoutComponent } from '@abp/ng.theme.basic'; //==> added this line to imports <== + +//...replaced original books path with the below +{ + path: 'books', + component: ApplicationLayoutComponent, + loadChildren: () => import('./books/books.module').then(m => m.BooksModule), + data: { + routes: { + name: '::Menu:Books', + iconClass: 'fas fa-book' + } as ABP.Route + }, +} +``` + +* The `ApplicationLayoutComponent` configuration sets the application layout to the new page. We added the `data` object. The `name` is the menu item name and the `iconClass` is the icon of the menu item. + +Run `yarn start` and wait for Angular to serve the application: + +```bash +yarn start +``` + +Open the browser and navigate to http://localhost:4200/books. You'll see a blank page saying "*books works!*". + +![initial-books-page](./images/bookstore-initial-books-page-with-layout.png) + +#### Book list component + +Replace the `books.component.html` in the `app\books` folder with the following content: + +```html + +``` + +Then run the command below on the terminal in the root folder to generate a new component, named book-list: + +```bash +yarn ng generate component books/book-list +``` + +![Creating books list](./images/bookstore-creating-book-list-terminal.png) + +Open `books.module.ts` file in the `app\books` folder and replace the content as below: + +```js +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { BooksRoutingModule } from './books-routing.module'; +import { BooksComponent } from './books.component'; +import { BookListComponent } from './book-list/book-list.component'; +import { SharedModule } from '../shared/shared.module'; //<== added this line ==> + +@NgModule({ + declarations: [BooksComponent, BookListComponent], + imports: [ + CommonModule, + BooksRoutingModule, + SharedModule, //<== added this line ==> + ] +}) +export class BooksModule { } +``` + +* We imported `SharedModule` and added to `imports` array. + +Open `books-routing.module.ts` file in the `app\books` folder and replace the content as below: + +```js +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { BooksComponent } from './books.component'; +import { BookListComponent } from './book-list/book-list.component'; //<== added this line ==> + +//<== replaced routes ==> +const routes: Routes = [ + { + path: '', + component: BooksComponent, + children: [{ path: '', component: BookListComponent }], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class BooksRoutingModule { } +``` + +* We imported `BookListComponent` and replaced `routes` const. + +We'll see **book-list works!** text on the books page: + +![Initial book list page](./images/bookstore-initial-book-list-page.png) + +#### Create BooksState + +Run the following command in the terminal to create a new state, named `BooksState`: + +![Initial book list page](./images/bookstore-generate-state-books.png) + +```bash +yarn ng generate ngxs-schematic:state books +``` + +* This command creates several new files and updates `app.modules.ts` file to import the `NgxsModule` with the new state. + +#### Get books data from backend + +Create data types to map the data from the backend (you can check Swagger UI or your backend API to see the data format). + +![BookDto properties](./images/bookstore-swagger-book-dto-properties.png) + +Open the `books.ts` file in the `app\store\models` folder and replace the content as below: + +```js +export namespace Books { + export interface State { + books: Response; + } + + export interface Response { + items: Book[]; + totalCount: number; + } + + export interface Book { + name: string; + type: BookType; + publishDate: string; + price: number; + lastModificationTime: string; + lastModifierId: string; + creationTime: string; + creatorId: string; + id: string; + } + + export enum BookType { + Undefined, + Adventure, + Biography, + Dystopia, + Fantastic, + Horror, + Science, + ScienceFiction, + Poetry, + } +} +``` + +* Added `Book` interface that represents a book object and `BookType` enum which represents a book category. + +#### BooksService + +Create a new service, named `BooksService` to perform `HTTP` calls to the server: + +```bash +yarn ng generate service books/shared/books +``` + +![service-terminal-output](./images/bookstore-service-terminal-output.png) + +Open the `books.service.ts` file in `app\books\shared` folder and replace the content as below: + +```js +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import { Books } from '../../store/models'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class BooksService { + constructor(private restService: RestService) {} + + get(): Observable { + return this.restService.request({ + method: 'GET', + url: '/api/app/book' + }); + } +} +``` + +* We added the `get` method to get the list of books by performing an HTTP request to the related endpoint. + +Open the`books.actions.ts` file in `app\store\actions` folder and replace the content below: + +```js +export class GetBooks { + static readonly type = '[Books] Get'; +} +``` + +#### Implement BooksState + +Open the `books.state.ts` file in `app\store\states` folder and replace the content below: + +```js +import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { GetBooks } from '../actions/books.actions'; +import { Books } from '../models/books'; +import { BooksService } from '../../books/shared/books.service'; +import { tap } from 'rxjs/operators'; + +@State({ + name: 'BooksState', + defaults: { books: {} } as Books.State, +}) +export class BooksState { + @Selector() + static getBooks(state: Books.State) { + return state.books.items || []; + } + + constructor(private booksService: BooksService) {} + + @Action(GetBooks) + get(ctx: StateContext) { + return this.booksService.get().pipe( + tap(booksResponse => { + ctx.patchState({ + books: booksResponse, + }); + }), + ); + } +} +``` + +* We added the `GetBooks` action that retrieves the books data via `BooksService` and patches the state. +* `NGXS` requires to return the observable without subscribing it in the get function. + +#### BookListComponent + +Open the `book-list.component.ts` file in `app\books\book-list` folder and replace the content as below: + +```js +import { Component, OnInit } from '@angular/core'; +import { Store, Select } from '@ngxs/store'; +import { BooksState } from '../../store/states'; +import { Observable } from 'rxjs'; +import { Books } from '../../store/models'; +import { GetBooks } from '../../store/actions'; + +@Component({ + selector: 'app-book-list', + templateUrl: './book-list.component.html', + styleUrls: ['./book-list.component.scss'], +}) +export class BookListComponent implements OnInit { + @Select(BooksState.getBooks) + books$: Observable; + + booksType = Books.BookType; + + loading = false; + + constructor(private store: Store) { } + + ngOnInit() { + this.get(); + } + + get() { + this.loading = true; + this.store.dispatch(new GetBooks()).subscribe(() => { + this.loading = false; + }); + } +} +``` + +* We added the `get` function that updates store to get the books. +* See the [Dispatching actions](https://ngxs.gitbook.io/ngxs/concepts/store#dispatching-actions) and [Select](https://ngxs.gitbook.io/ngxs/concepts/select) on the `NGXS` documentation for more information on these `NGXS` features. + +Open the `book-list.component.html` file in `app\books\book-list` folder and replace the content as below: + +```html +
+
+
+
+
+ {%{{{ "::Menu:Books" | abpLocalization }}}%} +
+
+
+
+
+
+ + + + + {%{{{ "::Name" | abpLocalization }}}%} + {%{{{ "::Type" | abpLocalization }}}%} + {%{{{ "::PublishDate" | abpLocalization }}}%} + {%{{{ "::Price" | abpLocalization }}}%} + + + + + {%{{{ data.name }}}%} + {%{{{ booksType[data.type] }}}%} + {%{{{ data.publishDate | date }}}%} + {%{{{ data.price }}}%} + + +
+
+``` + +* We added HTML code of book list page. + +Now you can see the final result on your browser: + +![Book list final result](./images/bookstore-book-list.png) + +The file system structure of the project: + +![Book list final result](./images/bookstore-angular-file-tree.png) + +In this tutorial we have applied the rules of official [Angular Style Guide](https://angular.io/guide/styleguide#file-tree). + +{{end}} + +### Next Part + +See the [part 2](part-2.md) for creating, updating and deleting books. diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md new file mode 100644 index 0000000000..8408cf6bfb --- /dev/null +++ b/docs/en/Tutorials/Part-2.md @@ -0,0 +1,1447 @@ +## ASP.NET Core {{UI_Value}} Tutorial - Part 2 +````json +//[doc-params] +{ + "UI": ["MVC","NG"] +} +```` + +{{ +if UI == "MVC" + DB="ef" + DB_Text="Entity Framework Core" + UI_Text="mvc" +else if UI == "NG" + DB="mongodb" + DB_Text="MongoDB" + UI_Text="angular" +else + DB ="?" + UI_Text="?" +end +}} + +### About this tutorial + +This is the second part of the ASP.NET Core {{UI_Value}} tutorial series. All parts: + +* [Part I: Creating the project and book list page](part-1.md) +* **Part II: Creating, updating and deleting books (this tutorial)** +* [Part III: Integration tests](part-3.md) + +*You can also watch [this video course](https://amazingsolutions.teachable.com/p/lets-build-the-bookstore-application) prepared by an ABP community member, based on this tutorial.* + +{{if UI == "MVC"}} + +### Creating a new book + +In this section, you will learn how to create a new modal dialog form to create a new book. The modal dialog will look like in the below image: + +![bookstore-create-dialog](./images/bookstore-create-dialog-2.png) + +#### Create the modal form + +Create a new razor page, named `CreateModal.cshtml` under the `Pages/Books` folder of the `Acme.BookStore.Web` project. + +![bookstore-add-create-dialog](./images/bookstore-add-create-dialog-v2.png) + +##### CreateModal.cshtml.cs + +Open the `CreateModal.cshtml.cs` file (`CreateModalModel` class) and replace with the following code: + +````C# +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace Acme.BookStore.Web.Pages.Books +{ + public class CreateModalModel : BookStorePageModel + { + [BindProperty] + public CreateUpdateBookDto Book { get; set; } + + private readonly IBookAppService _bookAppService; + + public CreateModalModel(IBookAppService bookAppService) + { + _bookAppService = bookAppService; + } + + public async Task OnPostAsync() + { + await _bookAppService.CreateAsync(Book); + return NoContent(); + } + } +} +```` + +* This class is derived from the `BookStorePageModel` instead of standard `PageModel`. `BookStorePageModel` inherits the `PageModel` and adds some common properties & methods that can be used in your page model classes. +* `[BindProperty]` attribute on the `Book` property binds post request data to this property. +* This class simply injects the `IBookAppService` in the constructor and calls the `CreateAsync` method in the `OnPostAsync` handler. + +##### CreateModal.cshtml + +Open the `CreateModal.cshtml` file and paste the code below: + +````html +@page +@inherits Acme.BookStore.Web.Pages.BookStorePage +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal +@model Acme.BookStore.Web.Pages.Books.CreateModalModel +@{ + Layout = null; +} + + + + + + + + + +```` + +* This modal uses `abp-dynamic-form` tag helper to automatically create the form from the model `CreateBookViewModel`. + * `abp-model` attribute indicates the model object where it's the `Book` property in this case. + * `data-ajaxForm` attribute sets the form to submit via AJAX, instead of a classic page post. + * `abp-form-content` tag helper is a placeholder to render the form controls (it is optional and needed only if you have added some other content in the `abp-dynamic-form` tag, just like in this page). + +#### Add the "New book" button + +Open the `Pages/Books/Index.cshtml` and set the content of `abp-card-header` tag as below: + +````html + + + +

@L["Books"]

+
+ + + +
+
+```` + +This adds a new button called **New book** to the **top-right** of the table: + +![bookstore-new-book-button](./images/bookstore-new-book-button.png) + +Open the `pages/books/index.js` and add the following code just after the `Datatable` configuration: + +````js +var createModal = new abp.ModalManager(abp.appPath + 'Books/CreateModal'); + +createModal.onResult(function () { + dataTable.ajax.reload(); +}); + +$('#NewBookButton').click(function (e) { + e.preventDefault(); + createModal.open(); +}); +```` + +* `abp.ModalManager` is a helper class to manage modals in the client side. It internally uses Twitter Bootstrap's standard modal, but abstracts many details by providing a simple API. + +Now, you can **run the application** and add new books using the new modal form. + +### Updating a book + +Create a new razor page, named `EditModal.cshtml` under the `Pages/Books` folder of the `Acme.BookStore.Web` project: + +![bookstore-add-edit-dialog](./images/bookstore-add-edit-dialog.png) + +#### EditModal.cshtml.cs + +Open the `EditModal.cshtml.cs` file (`EditModalModel` class) and replace with the following code: + +````csharp +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace Acme.BookStore.Web.Pages.Books +{ + public class EditModalModel : BookStorePageModel + { + [HiddenInput] + [BindProperty(SupportsGet = true)] + public Guid Id { get; set; } + + [BindProperty] + public CreateUpdateBookDto Book { get; set; } + + private readonly IBookAppService _bookAppService; + + public EditModalModel(IBookAppService bookAppService) + { + _bookAppService = bookAppService; + } + + public async Task OnGetAsync() + { + var bookDto = await _bookAppService.GetAsync(Id); + Book = ObjectMapper.Map(bookDto); + } + + public async Task OnPostAsync() + { + await _bookAppService.UpdateAsync(Id, Book); + return NoContent(); + } + } +} +```` + +* `[HiddenInput]` and `[BindProperty]` are standard ASP.NET Core MVC attributes. `SupportsGet` is used to be able to get `Id` value from query string parameter of the request. +* In the `GetAsync` method, we get `BookDto `from `BookAppService` and this is being mapped to the DTO object `CreateUpdateBookDto`. +* The `OnPostAsync` uses `BookAppService.UpdateAsync()` to update the entity. + +#### Mapping from BookDto to CreateUpdateBookDto + +To be able to map the `BookDto` to `CreateUpdateBookDto`, configure a new mapping. To do this, open the `BookStoreWebAutoMapperProfile.cs` in the `Acme.BookStore.Web` project and change it as shown below: + +````csharp +using AutoMapper; + +namespace Acme.BookStore.Web +{ + public class BookStoreWebAutoMapperProfile : Profile + { + public BookStoreWebAutoMapperProfile() + { + CreateMap(); + } + } +} +```` + +* We have just added `CreateMap();` to define this mapping. + +#### EditModal.cshtml + +Replace `EditModal.cshtml` content with the following content: + +````html +@page +@inherits Acme.BookStore.Web.Pages.BookStorePage +@using Acme.BookStore.Web.Pages.Books +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal +@model EditModalModel +@{ + Layout = null; +} + + + + + + + + + + +```` + +This page is very similar to the `CreateModal.cshtml`, except: + +* It includes an `abp-input` for the `Id` property to store `Id` of the editing book (which is a hidden input). +* It uses `Books/EditModal` as the post URL and *Update* text as the modal header. + +#### Add "Actions" dropdown to the table + +We will add a dropdown button to the table named *Actions*. + +Open the `Pages/Books/Index.cshtml` page and change the `` section as shown below: + +````html + + + + @L["Actions"] + @L["Name"] + @L["Type"] + @L["PublishDate"] + @L["Price"] + @L["CreationTime"] + + + +```` + +* We just added a new `th` tag for the "*Actions*" button. + +Open the `pages/books/index.js` and replace the content as below: + +````js +$(function () { + + var l = abp.localization.getResource('BookStore'); + + var createModal = new abp.ModalManager(abp.appPath + 'Books/CreateModal'); + var editModal = new abp.ModalManager(abp.appPath + 'Books/EditModal'); + + var dataTable = $('#BooksTable').DataTable(abp.libs.datatables.normalizeConfiguration({ + processing: true, + serverSide: true, + paging: true, + searching: false, + autoWidth: false, + scrollCollapse: true, + order: [[1, "asc"]], + ajax: abp.libs.datatables.createAjax(acme.bookStore.book.getList), + columnDefs: [ + { + rowAction: { + items: + [ + { + text: l('Edit'), + action: function (data) { + editModal.open({ id: data.record.id }); + } + } + ] + } + }, + { data: "name" }, + { data: "type" }, + { data: "publishDate" }, + { data: "price" }, + { data: "creationTime" } + ] + })); + + createModal.onResult(function () { + dataTable.ajax.reload(); + }); + + editModal.onResult(function () { + dataTable.ajax.reload(); + }); + + $('#NewBookButton').click(function (e) { + e.preventDefault(); + createModal.open(); + }); +}); +```` + +* Used `abp.localization.getResource('BookStore')` to be able to use the same localization texts defined on the server-side. +* Added a new `ModalManager` named `createModal` to open the create modal dialog. +* Added a new `ModalManager` named `editModal` to open the edit modal dialog. +* Added a new column at the beginning of the `columnDefs` section. This column is used for the "*Actions*" dropdown button. +* "*New Book*" action simply calls `createModal.open()` to open the create dialog. +* "*Edit*" action simply calls `editModal.open()` to open the edit dialog. + +You can run the application and edit any book by selecting the edit action. The final UI looks as below: + +![bookstore-books-table-actions](./images/bookstore-edit-button.png) + +### Deleting a book + +Open the `pages/books/index.js` and add a new item to the `rowAction` `items`: + +````js +{ + text: l('Delete'), + confirmMessage: function (data) { + return l('BookDeletionConfirmationMessage', data.record.name); + }, + action: function (data) { + acme.bookStore.book + .delete(data.record.id) + .then(function() { + abp.notify.info(l('SuccessfullyDeleted')); + dataTable.ajax.reload(); + }); + } +} +```` + +* `confirmMessage` option is used to ask a confirmation question before executing the `action`. +* `acme.bookStore.book.delete()` method makes an AJAX request to JavaScript proxy function to delete a book. +* `abp.notify.info()` shows a notification after the delete operation. + +The final `index.js` content is shown below: + +````js +$(function () { + + var l = abp.localization.getResource('BookStore'); + + var createModal = new abp.ModalManager(abp.appPath + 'Books/CreateModal'); + var editModal = new abp.ModalManager(abp.appPath + 'Books/EditModal'); + + var dataTable = $('#BooksTable').DataTable(abp.libs.datatables.normalizeConfiguration({ + processing: true, + serverSide: true, + paging: true, + searching: false, + autoWidth: false, + scrollCollapse: true, + order: [[1, "asc"]], + ajax: abp.libs.datatables.createAjax(acme.bookStore.book.getList), + columnDefs: [ + { + rowAction: { + items: + [ + { + text: l('Edit'), + action: function (data) { + editModal.open({ id: data.record.id }); + } + }, + { + text: l('Delete'), + confirmMessage: function (data) { + return l('BookDeletionConfirmationMessage', data.record.name); + }, + action: function (data) { + acme.bookStore.book + .delete(data.record.id) + .then(function() { + abp.notify.info(l('SuccessfullyDeleted')); + dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { data: "name" }, + { data: "type" }, + { data: "publishDate" }, + { data: "price" }, + { data: "creationTime" } + ] + })); + + createModal.onResult(function () { + dataTable.ajax.reload(); + }); + + editModal.onResult(function () { + dataTable.ajax.reload(); + }); + + $('#NewBookButton').click(function (e) { + e.preventDefault(); + createModal.open(); + }); +}); +```` + +Open the `en.json` in the `Acme.BookStore.Domain.Shared` project and add the following translations: + +````json +"BookDeletionConfirmationMessage": "Are you sure to delete the book {0}?", +"SuccessfullyDeleted": "Successfully deleted" +```` + +Run the application and try to delete a book. + +{{end}} + +{{if UI == "NG"}} + +### Creating a new book + +In this section, you will learn how to create a new modal dialog form to create a new book. + +#### Type definition + +Open `books.ts` file in `app\store\models` folder and replace the content as below: + +```js +export namespace Books { + export interface State { + books: Response; + } + + export interface Response { + items: Book[]; + totalCount: number; + } + + export interface Book { + name: string; + type: BookType; + publishDate: string; + price: number; + lastModificationTime: string; + lastModifierId: string; + creationTime: string; + creatorId: string; + id: string; + } + + export enum BookType { + Undefined, + Adventure, + Biography, + Dystopia, + Fantastic, + Horror, + Science, + ScienceFiction, + Poetry, + } + + //<== added CreateUpdateBookInput interface ==> + export interface CreateUpdateBookInput { + name: string; + type: BookType; + publishDate: string; + price: number; + } +} +``` + +* We added `CreateUpdateBookInput` interface. +* You can see the properties of this interface from Swagger UI. +* The `CreateUpdateBookInput` interface matches with the `CreateUpdateBookDto` in the backend. + +#### Service method + +Open the `books.service.ts` file in `app\books\shared` folder and replace the content as below: + +```js +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import { Books } from '../../store/models'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class BooksService { + constructor(private restService: RestService) {} + + get(): Observable { + return this.restService.request({ + method: 'GET', + url: '/api/app/book' + }); + } + + //<== added create method ==> + create(createBookInput: Books.CreateUpdateBookInput): Observable { + return this.restService.request({ + method: 'POST', + url: '/api/app/book', + body: createBookInput + }); + } +} +``` + +- We added the `create` method to perform an HTTP Post request to the server. +- `restService.request` function gets generic parameters for the types sent to and received from the server. This example sends a `CreateUpdateBookInput` object and receives a `Book` object (you can set `void` for request or return type if not used). + +#### State definitions + +Open `books.action.ts` in `app\store\actions` folder and replace the content as below: + +```js +import { Books } from '../models'; //<== added this line ==> + +export class GetBooks { + static readonly type = '[Books] Get'; +} + +//added CreateUpdateBook class +export class CreateUpdateBook { + static readonly type = '[Books] Create Update Book'; + constructor(public payload: Books.CreateUpdateBookInput) { } +} +``` + +* We imported the Books namespace and created the `CreateUpdateBook` action. + +Open `books.state.ts` file in `app\store\states` and replace the content as below: + +```js +import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { GetBooks, CreateUpdateBook } from '../actions/books.actions'; //<== added CreateUpdateBook==> +import { Books } from '../models/books'; +import { BooksService } from '../../books/shared/books.service'; +import { tap } from 'rxjs/operators'; + +@State({ + name: 'BooksState', + defaults: { books: {} } as Books.State, +}) +export class BooksState { + @Selector() + static getBooks(state: Books.State) { + return state.books.items || []; + } + + constructor(private booksService: BooksService) { } + + @Action(GetBooks) + get(ctx: StateContext) { + return this.booksService.get().pipe( + tap(booksResponse => { + ctx.patchState({ + books: booksResponse, + }); + }), + ); + } + + //added CreateUpdateBook action listener + @Action(CreateUpdateBook) + save(ctx: StateContext, action: CreateUpdateBook) { + return this.booksService.create(action.payload); + } +} +``` + +* We imported `CreateUpdateBook` action and defined the `save` method that will listen to a `CreateUpdateBook` action to create a book. + +When the `SaveBook` action dispatched, the save method is being executed. It calls `create` method of the `BooksService`. + +#### Add a modal to BookListComponent + +Open `book-list.component.html` file in `books\book-list` folder and replace the content as below: + +```html +
+
+
+
+
+ {%{{{ '::Menu:Books' | abpLocalization }}}%} +
+
+ +
+
+ +
+
+
+
+
+ + + + + {%{{{ "::Name" | abpLocalization }}}%} + {%{{{ "::Type" | abpLocalization }}}%} + {%{{{ "::PublishDate" | abpLocalization }}}%} + {%{{{ "::Price" | abpLocalization }}}%} + + + + + {%{{{ data.name }}}%} + {%{{{ booksType[data.type] }}}%} + {%{{{ data.publishDate | date }}}%} + {%{{{ data.price }}}%} + + +
+
+ + + + +

{%{{{ '::NewBook' | abpLocalization }}}%}

+
+ + + + + + +
+``` + +* We added the `abp-modal` which renders a modal to allow user to create a new book. +* `abp-modal` is a pre-built component to show modals. While you could use another approach to show a modal, `abp-modal` provides additional benefits. +* We added `New book` button to the `AbpContentToolbar`. + +Open `book-list.component.` file in `books\book-list` folder and replace the content as below: + +```js +import { Component, OnInit } from '@angular/core'; +import { Store, Select } from '@ngxs/store'; +import { BooksState } from '../../store/states'; +import { Observable } from 'rxjs'; +import { Books } from '../../store/models'; +import { GetBooks } from '../../store/actions'; + +@Component({ + selector: 'app-book-list', + templateUrl: './book-list.component.html', + styleUrls: ['./book-list.component.scss'], +}) +export class BookListComponent implements OnInit { + @Select(BooksState.getBooks) + books$: Observable; + + booksType = Books.BookType; + + loading = false; + + isModalOpen = false; //<== added this line ==> + + constructor(private store: Store) { } + + ngOnInit() { + this.get(); + } + + get() { + this.loading = true; + this.store.dispatch(new GetBooks()).subscribe(() => { + this.loading = false; + }); + } + + //added createBook method + createBook() { + this.isModalOpen = true; + } +} +``` + +* We added `isModalOpen = false` and `createBook` method. + +You can open your browser and click **New book** button to see the new modal. + +![Empty modal for new book](./images/bookstore-empty-new-book-modal.png) + +#### Create a reactive form + +[Reactive forms](https://angular.io/guide/reactive-forms) provide a model-driven approach to handling form inputs whose values change over time. + +Open `book-list.component.ts` file in `app\books\book-list` folder and replace the content as below: + +```js +import { Component, OnInit } from '@angular/core'; +import { Store, Select } from '@ngxs/store'; +import { BooksState } from '../../store/states'; +import { Observable } from 'rxjs'; +import { Books } from '../../store/models'; +import { GetBooks } from '../../store/actions'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; //<== added this line ==> + +@Component({ + selector: 'app-book-list', + templateUrl: './book-list.component.html', + styleUrls: ['./book-list.component.scss'], +}) +export class BookListComponent implements OnInit { + @Select(BooksState.getBooks) + books$: Observable; + + booksType = Books.BookType; + + loading = false; + + isModalOpen = false; + + form: FormGroup; + + constructor(private store: Store, private fb: FormBuilder) { } //<== added FormBuilder ==> + + ngOnInit() { + this.get(); + } + + get() { + this.loading = true; + this.store.dispatch(new GetBooks()).subscribe(() => { + this.loading = false; + }); + } + + createBook() { + this.buildForm(); //<== added this line ==> + this.isModalOpen = true; + } + + //added buildForm method + buildForm() { + this.form = this.fb.group({ + name: ['', Validators.required], + type: [null, Validators.required], + publishDate: [null, Validators.required], + price: [null, Validators.required], + }); + } +} +``` + +* We imported `FormGroup, FormBuilder and Validators`. +* We injected `fb: FormBuilder` service to the constructor. The [FormBuilder](https://angular.io/api/forms/FormBuilder) service provides convenient methods for generating controls. It reduces the amount of boilerplate needed to build complex forms. +* We added `buildForm` method to the end of the file and executed `buildForm()` in the `createBook` method. This method creates a reactive form to be able to create a new book. + * The `group` method of `FormBuilder`, `fb` creates a `FormGroup`. + * Added `Validators.required` static method which validates the relevant form element. + +#### Create the DOM elements of the form + +Open `book-list.component.html` in `app\books\book-list` folder and replace ` ` with the following code part: + +```html + +
+
+ * + +
+ +
+ * + +
+ +
+ * + +
+ +
+ * + +
+
+
+``` + +- This template creates a form with `Name`, `Price`, `Type` and `Publish` date fields. +- We've used [NgBootstrap datepicker](https://ng-bootstrap.github.io/#/components/datepicker/overview) in this component. + +#### Datepicker requirements + +Open `books.module.ts` file in `app\books` folder and replace the content as below: + +```js +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { BooksRoutingModule } from './books-routing.module'; +import { BooksComponent } from './books.component'; +import { BookListComponent } from './book-list/book-list.component'; +import { SharedModule } from '../shared/shared.module'; +import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; //<== added this line ==> + +@NgModule({ + declarations: [BooksComponent, BookListComponent], + imports: [ + CommonModule, + BooksRoutingModule, + SharedModule, + NgbDatepickerModule //<== added this line ==> + ] +}) +export class BooksModule { } +``` + +* We imported `NgbDatepickerModule` to be able to use the date picker. + + + +Open `book-list.component.ts` file in `app\books\book-list` folder and replace the content as below: + +```js +import { Component, OnInit } from '@angular/core'; +import { Store, Select } from '@ngxs/store'; +import { BooksState } from '../../store/states'; +import { Observable } from 'rxjs'; +import { Books } from '../../store/models'; +import { GetBooks } from '../../store/actions'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; //<== added this line ==> + +@Component({ + selector: 'app-book-list', + templateUrl: './book-list.component.html', + styleUrls: ['./book-list.component.scss'], + providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }] //<== added this line ==> +}) +export class BookListComponent implements OnInit { + @Select(BooksState.getBooks) + books$: Observable; + + booksType = Books.BookType; + + //added bookTypeArr array + bookTypeArr = Object.keys(Books.BookType).filter( + bookType => typeof this.booksType[bookType] === 'number' + ); + + loading = false; + + isModalOpen = false; + + form: FormGroup; + + constructor(private store: Store, private fb: FormBuilder) { } + + ngOnInit() { + this.get(); + } + + get() { + this.loading = true; + this.store.dispatch(new GetBooks()).subscribe(() => { + this.loading = false; + }); + } + + createBook() { + this.buildForm(); + this.isModalOpen = true; + } + + buildForm() { + this.form = this.fb.group({ + name: ['', Validators.required], + type: [null, Validators.required], + publishDate: [null, Validators.required], + price: [null, Validators.required], + }); + } +} +``` + +* We imported ` NgbDateNativeAdapter, NgbDateAdapter` + +* We added a new provider `NgbDateAdapter` that converts Datepicker value to `Date` type. See the [datepicker adapters](https://ng-bootstrap.github.io/#/components/datepicker/overview) for more details. + +* We added `bookTypeArr` array to be able to use it in the combobox values. The `bookTypeArr` contains the fields of the `BookType` enum. Resulting array is shown below: + + ```js + ['Adventure', 'Biography', 'Dystopia', 'Fantastic' ...] + ``` + + This array was used in the previous form template in the `ngFor` loop. + +Now, you can open your browser to see the changes: + + +![New book modal](./images/bookstore-new-book-form.png) + +#### Saving the book + +Open `book-list.component.html` in `app\books\book-list` folder and add the following `abp-button` to save the new book. + +```html + + + + + + +``` + +* This adds a save button to the bottom area of the modal: + +![Save button to the modal](./images/bookstore-new-book-form-v2.png) + +Open `book-list.component.ts` file in `app\books\book-list` folder and replace the content as below: + +```js +import { Component, OnInit } from '@angular/core'; +import { Store, Select } from '@ngxs/store'; +import { BooksState } from '../../store/states'; +import { Observable } from 'rxjs'; +import { Books } from '../../store/models'; +import { GetBooks, CreateUpdateBook } from '../../store/actions'; //<== added CreateUpdateBook ==> +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; + +@Component({ + selector: 'app-book-list', + templateUrl: './book-list.component.html', + styleUrls: ['./book-list.component.scss'], + providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }] +}) +export class BookListComponent implements OnInit { + @Select(BooksState.getBooks) + books$: Observable; + + booksType = Books.BookType; + + bookTypeArr = Object.keys(Books.BookType).filter( + bookType => typeof this.booksType[bookType] === 'number' + ); + + loading = false; + + isModalOpen = false; + + form: FormGroup; + + constructor(private store: Store, private fb: FormBuilder) { } + + ngOnInit() { + this.get(); + } + + get() { + this.loading = true; + this.store.dispatch(new GetBooks()).subscribe(() => { + this.loading = false; + }); + } + + createBook() { + this.buildForm(); + this.isModalOpen = true; + } + + buildForm() { + this.form = this.fb.group({ + name: ['', Validators.required], + type: [null, Validators.required], + publishDate: [null, Validators.required], + price: [null, Validators.required], + }); + } + + //<== added save ==> + save() { + if (this.form.invalid) { + return; + } + + this.store.dispatch(new CreateUpdateBook(this.form.value)).subscribe(() => { + this.isModalOpen = false; + this.form.reset(); + this.get(); + }); + } +} +``` + +* We imported `CreateUpdateBook`. +* We added `save` method + +### Updating an existing book + +#### BooksService + +Open the `books.service.ts` in `app\books\shared` folder and add the `getById` and `update` methods. + +```js +getById(id: string): Observable { + return this.restService.request({ + method: 'GET', + url: `/api/app/book/${id}` + }); +} + +update(updateBookInput: Books.CreateUpdateBookInput, id: string): Observable { + return this.restService.request({ + method: 'PUT', + url: `/api/app/book/${id}`, + body: updateBookInput + }); +} +``` + +#### CreateUpdateBook action + +Open the `books.actions.ts` in `app\store\actions` folder and replace the content as below: + +```js +import { Books } from '../models'; + +export class GetBooks { + static readonly type = '[Books] Get'; +} + +export class CreateUpdateBook { + static readonly type = '[Books] Create Update Book'; + constructor(public payload: Books.CreateUpdateBookInput, public id?: string) { } //<== added id parameter ==> +} +``` + +* We added `id` parameter to the `CreateUpdateBook` action's constructor. + +Open the `books.state.ts` in `app\store\states` folder and replace the `save` method as below: + +```js +@Action(CreateUpdateBook) +save(ctx: StateContext, action: CreateUpdateBook) { + if (action.id) { + return this.booksService.update(action.payload, action.id); + } else { + return this.booksService.create(action.payload); + } +} +``` + +#### BookListComponent + +Open `book-list.component.ts` in `app\books\book-list` folder and inject `BooksService` dependency by adding it to the constructor and add a variable named `selectedBook`. + +```js +import { Component, OnInit } from '@angular/core'; +import { Store, Select } from '@ngxs/store'; +import { BooksState } from '../../store/states'; +import { Observable } from 'rxjs'; +import { Books } from '../../store/models'; +import { GetBooks, CreateUpdateBook } from '../../store/actions'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; +import { BooksService } from '../shared/books.service'; //<== imported BooksService ==> + +@Component({ + selector: 'app-book-list', + templateUrl: './book-list.component.html', + styleUrls: ['./book-list.component.scss'], + providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }] +}) +export class BookListComponent implements OnInit { + @Select(BooksState.getBooks) + books$: Observable; + + booksType = Books.BookType; + + bookTypeArr = Object.keys(Books.BookType).filter( + bookType => typeof this.booksType[bookType] === 'number' + ); + + loading = false; + + isModalOpen = false; + + form: FormGroup; + + selectedBook = {} as Books.Book; //<== declared selectedBook ==> + + constructor(private store: Store, private fb: FormBuilder, private booksService: BooksService) { } + + ngOnInit() { + this.get(); + } + + get() { + this.loading = true; + this.store.dispatch(new GetBooks()).subscribe(() => { + this.loading = false; + }); + } + + //<== this method is replaced ==> + createBook() { + this.selectedBook = {} as Books.Book; //<== added ==> + this.buildForm(); + this.isModalOpen = true; + } + + //<== added editBook method ==> + editBook(id: string) { + this.booksService.getById(id).subscribe(book => { + this.selectedBook = book; + this.buildForm(); + this.isModalOpen = true; + }); + } + + //<== this method is replaced ==> + buildForm() { + this.form = this.fb.group({ + name: [this.selectedBook.name || "", Validators.required], + type: [this.selectedBook.type || null, Validators.required], + publishDate: [ + this.selectedBook.publishDate + ? new Date(this.selectedBook.publishDate) + : null, + Validators.required + ], + price: [this.selectedBook.price || null, Validators.required] + }); + } + + save() { + if (this.form.invalid) { + return; + } + + //<== added this.selectedBook.id ==> + this.store.dispatch(new CreateUpdateBook(this.form.value, this.selectedBook.id)) + .subscribe(() => { + this.isModalOpen = false; + this.form.reset(); + this.get(); + }); + } +} +``` + +* We imported `BooksService`. +* We declared a variable named `selectedBook` as `Books.Book`. +* We injected `BooksService` to the constructor. `BooksService` is being used to retrieve the book data which is being edited. +* We added `editBook` method. This method fetches the book with the given `Id` and sets it to `selectedBook` object. +* We replaced the `buildForm` method so that it creates the form with the `selectedBook` data. +* We replaced the `createBook` method so it sets `selectedBook` to an empty object. +* We added `selectedBook.id` to the constructor of the new `CreateUpdateBook`. + +#### Add "Actions" dropdown to the table + +Open the `book-list.component.html` in `app\books\book-list` folder and replace the `
` tag as below: + +```html +
+ + + + + {%{{{ "::Actions" | abpLocalization }}}%} + {%{{{ "::Name" | abpLocalization }}}%} + {%{{{ "::Type" | abpLocalization }}}%} + {%{{{ "::PublishDate" | abpLocalization }}}%} + {%{{{ "::Price" | abpLocalization }}}%} + + + + + +
+ +
+ +
+
+ + {%{{{ data.name }}}%} + {%{{{ booksType[data.type] }}}%} + {%{{{ data.publishDate | date }}}%} + {%{{{ data.price }}}%} + +
+
+``` + +- We added a `th` for the "Actions" column. +- We added `button` with `ngbDropdownToggle` to open actions when clicked the button. +- We have used to [NgbDropdown](https://ng-bootstrap.github.io/#/components/dropdown/examples) for the dropdown menu of actions. + +The final UI looks like as below: + +![Action buttons](./images/bookstore-actions-buttons.png) + +Open `book-list.component.html` in `app\books\book-list` folder and find the `` tag and replace the content as below. + +```html + +

{%{{{ (selectedBook.id ? 'AbpIdentity::Edit' : '::NewBook' ) | abpLocalization }}}%}

+
+``` + +* This template will show **Edit** text for edit record operation, **New Book** for new record operation in the title. + +### Deleting a book + +#### BooksService + +Open `books.service.ts` in `app\books\shared` folder and add the below `delete` method to delete a book. + +```js +delete(id: string): Observable { + return this.restService.request({ + method: 'DELETE', + url: `/api/app/book/${id}` + }); +} +``` + +* `Delete` method gets `id` parameter and makes a `DELETE` HTTP request to the relevant endpoint. + +#### DeleteBook action + +Open `books.actions.ts` in `app\store\actions `folder and add an action named `DeleteBook`. + +```js +export class DeleteBook { + static readonly type = '[Books] Delete'; + constructor(public id: string) {} +} +``` + +Open the `books.state.ts` in `app\store\states` folder and replace the content as below: + +```js +import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { GetBooks, CreateUpdateBook, DeleteBook } from '../actions/books.actions'; //<== added DeleteBook==> +import { Books } from '../models/books'; +import { BooksService } from '../../books/shared/books.service'; +import { tap } from 'rxjs/operators'; + +@State({ + name: 'BooksState', + defaults: { books: {} } as Books.State, +}) +export class BooksState { + @Selector() + static getBooks(state: Books.State) { + return state.books.items || []; + } + + constructor(private booksService: BooksService) { } + + @Action(GetBooks) + get(ctx: StateContext) { + return this.booksService.get().pipe( + tap(booksResponse => { + ctx.patchState({ + books: booksResponse, + }); + }), + ); + } + + @Action(CreateUpdateBook) + save(ctx: StateContext, action: CreateUpdateBook) { + if (action.id) { + return this.booksService.update(action.payload, action.id); + } else { + return this.booksService.create(action.payload); + } + } + + //<== added DeleteBook ==> + @Action(DeleteBook) + delete(ctx: StateContext, action: DeleteBook) { + return this.booksService.delete(action.id); + } +} +``` + +- We imported `DeleteBook` . + +- We added `DeleteBook` action listener to the end of the file. + + + +#### Add a delete button + + +Open `book-list.component.html` in `app\books\book-list` folder and modify the `ngbDropdownMenu` to add the delete button as shown below: + +```html +
+ + +
+``` + +The final actions dropdown UI looks like below: + +![bookstore-final-actions-dropdown](./images/bookstore-final-actions-dropdown.png) + +#### Delete confirmation dialog + +Open `book-list.component.ts` in`app\books\book-list` folder and inject the `ConfirmationService`. + +Replace the constructor as below: + +```js +import { ConfirmationService } from '@abp/ng.theme.shared'; +//... + +constructor( + private store: Store, private fb: FormBuilder, + private booksService: BooksService, + private confirmationService: ConfirmationService // <== added this line ==> +) { } +``` + +* We imported `ConfirmationService`. +* We injected `ConfirmationService` to the constructor. + +In the `book-list.component.ts` add a delete method : + +```js +import { GetBooks, CreateUpdateBook, DeleteBook } from '../../store/actions'; //<== added DeleteBook ==> + +import { ConfirmationService, Confirmation } from '@abp/ng.theme.shared'; //<== added Confirmation ==> + +//... + +delete(id: string, name: string) { + this.confirmationService + .warn('::AreYouSureToDelete', 'AbpAccount::AreYouSure') + .subscribe(status => { + if (status === Confirmation.Status.confirm) { + this.store.dispatch(new DeleteBook(id)).subscribe(() => this.get()); + } + }); +} +``` + +The `delete` method shows a confirmation popup and subscribes for the user response. `DeleteBook` action dispatched only if user clicks to the `Yes` button. The confirmation popup looks like below: + +![bookstore-confirmation-popup](./images/bookstore-confirmation-popup.png) + +{{end}} + +### Next Part + +See the [next part](part-3.md) of this tutorial. diff --git a/docs/en/Tutorials/images/bookstore-actions-buttons.png b/docs/en/Tutorials/images/bookstore-actions-buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..e8243fedc7f88a85060ca27e13a10281acca59a4 GIT binary patch literal 29435 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 fYg-%~f_M&aj@0}w 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-add-create-dialog-v2.png b/docs/en/Tutorials/images/bookstore-add-create-dialog-v2.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-add-create-dialog-v2.png rename to docs/en/Tutorials/images/bookstore-add-create-dialog-v2.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-add-edit-dialog.png b/docs/en/Tutorials/images/bookstore-add-edit-dialog.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-add-edit-dialog.png rename to docs/en/Tutorials/images/bookstore-add-edit-dialog.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-add-index-page-v2.png b/docs/en/Tutorials/images/bookstore-add-index-page-v2.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-add-index-page-v2.png rename to docs/en/Tutorials/images/bookstore-add-index-page-v2.png diff --git a/docs/en/Tutorials/images/bookstore-angular-file-tree.png b/docs/en/Tutorials/images/bookstore-angular-file-tree.png new file mode 100644 index 0000000000000000000000000000000000000000..28e570f6042fad36a9f6e98563ac1cccb9d0f330 GIT binary patch literal 246634 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-appservice-tests.png b/docs/en/Tutorials/images/bookstore-appservice-tests.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-appservice-tests.png rename to docs/en/Tutorials/images/bookstore-appservice-tests.png diff --git a/docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png b/docs/en/Tutorials/images/bookstore-backend-solution-v2.png similarity index 100% rename from docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png rename to docs/en/Tutorials/images/bookstore-backend-solution-v2.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-book-list-2.png b/docs/en/Tutorials/images/bookstore-book-list-2.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-book-list-2.png rename to docs/en/Tutorials/images/bookstore-book-list-2.png diff --git a/docs/en/Tutorials/images/bookstore-book-list.png b/docs/en/Tutorials/images/bookstore-book-list.png new file mode 100644 index 0000000000000000000000000000000000000000..9e6cc9e01053f7cf4c0ca222d8bea01c635c69c6 GIT binary patch literal 62133 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

6_dYx85g;cQVO#peBdH&RIU-ZFWN&&{t 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 psI{s)(GAa4Kw literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-books-table-actions.png b/docs/en/Tutorials/images/bookstore-books-table-actions.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-books-table-actions.png rename to docs/en/Tutorials/images/bookstore-books-table-actions.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-books-table.png b/docs/en/Tutorials/images/bookstore-books-table.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-books-table.png rename to docs/en/Tutorials/images/bookstore-books-table.png diff --git a/docs/en/Tutorials/Angular/images/bookstore-confirmation-popup.png b/docs/en/Tutorials/images/bookstore-confirmation-popup.png similarity index 100% rename from docs/en/Tutorials/Angular/images/bookstore-confirmation-popup.png rename to docs/en/Tutorials/images/bookstore-confirmation-popup.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-create-dialog-2.png b/docs/en/Tutorials/images/bookstore-create-dialog-2.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-create-dialog-2.png rename to docs/en/Tutorials/images/bookstore-create-dialog-2.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-create-dialog.png b/docs/en/Tutorials/images/bookstore-create-dialog.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-create-dialog.png rename to docs/en/Tutorials/images/bookstore-create-dialog.png diff --git a/docs/en/Tutorials/images/bookstore-create-project-angular.png b/docs/en/Tutorials/images/bookstore-create-project-angular.png new file mode 100644 index 0000000000000000000000000000000000000000..b9eb38b8b7abef5fddb963147df5dde67a125d42 GIT binary patch literal 24546 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

>>kW7u^FCrq+ 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 XjYT+Y*j2M_$@67dQMWJRimTKpj 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%0DMvnC2 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

H_h&%B$jQZxS;Twd@&120e;Oe}7N2?Q|vt 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

%hI@WFdN*I*1e%hYrx45X_e|p2zbll{+trh5z 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 Nv^5^7*QnZs{|7b!VfFw3 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-pmc-add-book-migration-v2.png b/docs/en/Tutorials/images/bookstore-pmc-add-book-migration-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..2baea2023606f03214d6c2f91241aa8cd9a697c2 GIT binary patch literal 34181 zcmd42XH-*L7cLBFz*IqaNJ2Nf$f5eR z562ZZZ$?m*75~~`9+&)DQ4{rEsb=JsC>U#!71RpFB5|$orf}eGU(Wzkd5Lcc)+{SL zi*8X%E6GSW$@tFy9E!68dx$>+rgb}i{VYW54*{apf3Nxd9fbYwV3J9l@6RBDTd;`b z&%l7?I73bU9xf3%9DmN$*w0Ne{}~i9zf$~j&LpE|!1ia5!}{0%rI*}Ec%@k5v*ify zbxsX^;1Q}v|Es;FF1%TB(eq=#0`V2?k1hs1V~{`)q3XBzbI&INLLV$D&|1QrycXwH z`-T<{bxVtLhFg80nYSJ|r1o_u?j>-2u%l+GR+_bi^_?W)Ci#O6^qRx^!_r*COs*S9 z#$Dc~RlHI(-*y20vJ1vh>6J8R?1XM5B@$4oh3Gu@>?`z&O%!YbtnNX5V!g!V{^gZI z3E9F;O%rUZfzOeECcW}y;~l~W6!d!{VSI-rxs@(yKY zhxNqQPWYO5X7=tBLNkUZ!jJvuy-c6U{kUS^ajO*^IZLbN0bKVt|V=kX-CHXo(smKJ`7!-^!DHX5n(1OM@{z|C}ifl_!)f7QH{C4 z3jChaTIn!$Q+vVz+i20KNgTJRww8tYg}s&qZ*~}{VGiMn|CQnCZ_}f0U7{DEZxUF4 zm~Wtd1hEB1HIe&u(ej$ZpfH!yB(=oBe2l&wE({;Hf;h*u@J z^AKYT$Fzyzxs`A0uft`@gayZ&Ve!q2%pwCf`pX4mypD=CU2Ve908jajMRj|TMXIa;DYbqkEpBQ^OO9MP|pA<ds45wIyuy!QfR`oGX9D=>t@eTG7_&hw|M)}Gt%LE zabK|QHh9vjETua8g(*Mq-wz$-C}0DT1jbwKQ!)irhQ%P*&~v=&p>B+@necr`g=~+a#MDjG7ot$b!!A<>&JAo`)xRj?&6WF#U4>4CQ3RhyIQV}nFT zag?~P(`~_t5N4rrsMhNL(7t-3Iv))6wzmM!F8d6DbiNW_n5eiRz6*j^!R^mvTQnlw zf7bD=@=V+jZ(FH;U8|j9$9)TTZ!kQ=bHV>OPpmE>NS!V5=h1hfqPlE+6Z?p9HCc-C zwlOofxQ0VNHe9Z7XVxZxb2ZE9CSx6}h=`#%HM`OQpI+h0G5Z~jq4%PRWe!wj$$;(P z^7$mGF4SPn@ZAE;>tn?ofA_@M^9?U-vOQcT$88d2sGA9yTu2|D?qk(!r&ArkxS1lE z{~?GaSe=hJ*~+8#Yn`0n25|v>^fsSz?;dhyb`$d?dt<3AJ$p9jG3Ugf)xwu~A)+-t z?t(cJqm{5#3pub`w-tOk$x*oVk;Zb+g+_was!99G|+Y3Q3XvFKBUpB-Lc`@UrmK({<~q?q-xQMc%pA^ z=57%6Zo-9Q?9TPAnCDPR5GU?qnV7Bg#~H6Z*(`Qgi<`?0 z8k&yV!90HgO_5zS8Wl;kE#yfyjq(Z6kIcm(%PiLs;baE)-?30Pof~N_E&oLgz zRnE=EnpW?l^j%a<9P!V_eW_HrXj!JWVpEp<*8xQGO829k;8bOAFIf~Pt;Dd=!cG|7 zbg+?=UeM<2n(KlX8%W(CW;I(A_<8g6x^DyqpqNN<% z1BGDm%w}-;z3f=NX>g_1vbRYS=yaSh=iYQw)iNTG(5&KQ*>1DO$wuz;4{i-|BnUam zto5Xtg4WEb4Z{mZ{!nw%MB5iti?ewc{p~Hz%@cJZj-KW7E&Pv}FI6}x;m-d1+7c76 zK~JztSV)33kBgo8a>1rID^Bht(Q^7a^s14ZE}F;=Hhmo?f9+_x8pWAYfwWAR`_j5jA)#f8n{F}|%7$$2`97BBmL@Bws?9@{O z;_^lcuC?k_=BjXUUbKMcgT+f?%?77CSb}vvkG;&> zV_335jom+uIzJkS%c)wgU3%-`Jti6)@D?7xbx(_fIq*iEKoTylRs09G!h^^O=L1Vy z&;>hp*7-_L4iY~i+CC+i`lhV_NAg2WMd<%sR{pN)hjku}G#(GnG^XI6lr{E};Ru|^ zlak8mrAJYAc(y5r9$i<{=L?f90!hJso>78Re=R7l7X+QR2*b znuY(WadlwQm~CbSH}l%;OW41bzyun9m92Ps>U1?eC(#VMmk4yH$LQUs{<)2PlcV>j z5I+m;A*?446&ro~l3XP4?@hIZbCZ3K*uRFwwBRbZ_9%jwfbAtb^lZx;Zzaq4!$0xg zARx9lG3L~n%`p{~3wO-4GYtM%f5gGtY{kY*K^{$1|L6s(tV^FyBZf!dhTW*_%!n;!sckQ{rMfWwIN}*?L_fR)$gJkixXi>9abR~Xq4vMggL zcxK?TmN1~V_p_qf={toSOgTkn3B`HGWF=cyS{B1c#CMkk=+j}LM>{_Iv3kfw9tXta)hfWf5PYGw~KOZzwwwoP&e8#g$TXVuAItpAPJqYCx z5wK3^`$IujBd%ZYnTcsq>rT!+@>s%v1Ka~nH^rNt!(;{=RjD*GXT6Q4MJf9X0Q&$7 z$}dO4zn+Ap_##`(e4|6YJOdh=C&O^Y&u zFy-$LDRmdlY(8XB?DzB&|CqQ4PNP~DIL`%-m~Wy?e?#la2*%w6)jh|n2MM_6C~;KZ z-b6Sw9BY6N-|rN_2DCw_n@&D^JD#|Jc&G3?;y^U@YGc>{>j6@(&5j=X=arMx(o>s9 zc(jEGX7MMgyFFecCyz$bMC`nvP``vKtu`#jCr;=CR3`j>yrWfrx@{RgHPoZ(vl_f- z#bg>dRmyN@!Q-y;ymCxT&pGAno}0Ox;gefUKec|8O5X)$%B44bunrAFv|welSF&LV zePjeZl$uf56~i@9fT#R(wA)43=U=3Q4u%8T^1_z`DRXEEE?bg4b@=4XOQzj9sqOcj zxSx}p;1Dqe_`XT~rK!_Hh?eQAXMc1pkkc#dp?FYt5W6TLd#4~Ze&(zwZH+E}ivkEs zJ~}!<2$UO((6jio{bl2q52%c2VCGA{Db77=IJp!n7e_4!@y9{BS^bhWHk=RUiFEb0 zJ3;Ob)HEB(i@`iWwBM#+z_vZDSjewbQF2Ui==TDB`gm_b6-F&b^$Hwy2*`VijxH>? zpXDe{8q;QD8s#`U(6boQw%2l?zmnoiy*_wa)04tkYCDojn_Jt{k5HD^tnJC1-{m*m z#tigutP6lXAB4nzKWe-~wH(2%0;$9J^?)``AU)^+x{aR1TRJhH0P!bnakW`UH2+lb zLDd{;wkv~{W`%sZowc8Dm1`39L$nYqOoQPa`~Cd{2^6e9;QJe{S$c`}x8tC3FPJHD zuaS*7Vui07QNZ2VtGh}~e6!jJYjslh3vLbJ*95~r#Cgh=tG+s_L1+>^v4Dg~r< zARpQGfJ3fqst(hn?&7+*C|@5s98wQdp&dxV%lPM`N58!zbbU<@EE`P7F%;%w=>YYC zXeTGlmyfm-dTP5v7G+=aP0-)}@*Y(^qX&JQ=n25i5O3HtzXRqH%zdl%L9sd?ne~>x z%kq$j0Z?S{LOwUrcvRtank^I6Yq@95pZ(r3_FoO0Uwzg{E^R+Qx0VdAEFmha37f7+@O zAQd(*`#1b(s^_jgI($=taxdN4T|cWeiZrxC>O545SS!S*da8T@0;H}{8n3Z3UA%av zx=a-TM4VEh?Juuh7idmC*T8b0eEEwdd?y-&!7xAXwu$~QfZwR z@^1|Yna}eg=1Xv2y?6sB%+bQydk}kCO%%fR4#uRB$bXt;dQ2n5EJg& z)K(p0=1!g>EJ)X3;vK``9XR>-@ib*ZM|EgJ?}Yn>X-Aiv&GjZ-!{#7(bIA>^tU{FNY51aB>#M?W#LE{mskN0}mYa8$0l{lj%TKOlUnf<6{NUWe4G zZw(ySAMiA*KaaDfrcFHqc7;*wjYPZT!!yu!3X=WKhyDjG9P8G!Hw_xFn$;R~vxREI zQ^bkNrQ=ZuthH34m!1KpFU{Qv7eKH`4f$F6eQ9_Zg2)}em^IwV^>@IL?(AZ2m?U3- ztzDbqE<_`iIZJ@rov|8DAAaIshk=HJVyKoX7aQ#-dbUueFBfVOg%Lmvgv?FMjAvQK z50(69Ea|~&ZSp1A-XU;ng;_~a^yKFNOc;GDO^ zd#jLsWtS@%S#`nA#W{;gW^lXCaNxdiUQ@<2kRB;CSwcD zRkm1sh)S6P%!H|Nz(EmTui-1kwqdKQJJvqz*}6e4pd`r6!hnI_p}TdGo{Vk(OV>%M z;g8yK*n8u9e#C>m$fmh)*mT-O$Ru5u)Y4xXZQM=el^^ssaoo&buk{2Hv^b5SS*ud}$OEAP^g3k<3!S6NOo}hz)b@U4R%o-;ona0GhqLo|<&NNk zxk=-xu4)SusY$a&99IRW(af?kd$UHGheFJDC-uQfxl|xp2!}bGi zGG3bEnNsaHAo+P#Wa!AYQEoEeGuc9yCSg&pcyF7t3WT)4oWs{R04C^}>p_h=Anxb4 zAw~&TS(X+4zQaH8$V&Un-jcRzg}c}{Z(CFunZ?nZ4uF!`&j9oLqpiRsPCfY! z{!ZBeM)V^*3z^dysL6!vMawBlW`}9epoD(HH0E!Xi4u|3rP^+A%}P!^ThSCDw4#d3 za2pg%(!P5!YlIpSkoFEj$Z<;;20m}Moj8>4I}d4eTX4Kl4u$iNjd;URHqdrbPl#JI=}j+*s*@ zjMk3X%R)#|v3&UE8f9*vXV=A5?=UL|z1UWA^%p*X@P z;Ll^7iH2|uee^u5!G~`6A)RlH*;71KjS;Jf{HAM;Vf}h0Jt=14XVPS#tzQ@?F)ir! znP5f;Dl?8%Rk783#FCL(Enaed)BtXY!>Y#RQ{hB*5XSRJ?fo)XZ=3F)7^+yaujtF8 z5=VKMxI8~b^Zh3vJH*E<)>KhN*uzNAHzGtY8~lVCTw-0T_-VKDL{F^Yyu#P5jW6A! zGf%zfpYfQe_5*2WH^pGSR=d~w1s>X*4P*qgClTJG4Qte>kdS9&n10?Vs|g`Ancy~y zc3TY8L@16V-*C4yGx>UZ%mO*Z;bXts`M)-ghEr5*)ifEiEKn<)dTO&}I}upNqWGR0 zNXjK!Ul%y)b-JgIpdht3M_v|QkFEfD+E$<<56=aA&A#T5~W_lUPENg^U|Q%wfSvd<4_xpGcegyjwia;zQ5Eq5}rzhU>xwRWJ%7(<{TlLTlf7 znbg=Cc1sd^lQRIhXdxv+*(DMh0!I2!6R|~t+V_Nytmw~(P5}C&TRF={%wM=@WWYwi z-!O%$1KkDvuw71SNp}ijNL$FQN%j_HR#(I?YySJD`#tN7l8XUDu;dsU;meKjLpCFh z^YE8j2tD0%I;}70?LP|b5^u6dv2in*Mvaw!>BtlK5K2n?7MFdLp+7*p!24QN{&Gj^ zYRX(08n6*RlLM7pheFChcTc=GariLz;R63Un(8JK0lLb5Ka#b$K^Pge`s|7unn&#@ z1C<8hmQX~z3%Vdb`jm%Xt|t^b_bJzVn9nO{&4cguKa-(FI!|U(pdNgwO0NiPtQb$5 z1*iiat*^oQflNYsE!{S@;LcA64DD>n%%-Nkk}Mup9_zrgZcU5vaB>?c{ot)`(9V36 zK0sWLWC?pvE|RmBeDF*`NM1tsbo|x4*S@de;?VLG_@%4nuIia*hf@O9w*rsS1mq=i zx9PF1@!yH3!<=s7>GfUs#L}%*>682$O-jpHz#d}R*I*TULOHglyl&WI;pQzui^1N} zhKMs_&}SQNF#sBn_NzEGWZtINiWiUKo8GV!KZ{i+RdOnSG}ix!Qi6qysk;P(mc^Z+u$8KJ2RN;86mZG$lrJFvrDE0(>F};FV0c0HzxbrmFKLJ$3 zZB3e{tlpqDmw_NqW&I#>a?|%UX^X~Oc9vCEW7rI!vVmb}u08;fX{MaKg2r~08b_}B z;S(F$E(TdQZArW4>*h$bKn$JY5Y)n3(AMf%t*B|X?wXV5TQhuG99I{ubOjNvd$lF| zpv3wDA5a(v^6C48A_rG1;3STIR@&HpuRdklDdcI6#eMq(bMOV`L0kNFt%ltZdT}zC zg2|JBEP=-zmz5;iJ9nkv=f8PG96Wpw_0h#kioJ=xpBS@>G4grj$0vTzLV96?ooJoA^&bw6fcJD=B3fGIN5IX_Uo(9URD~h{1ZI4 zdmyRF%@s53nZxb6ARJjfB0cr4q|_iPcNY1z_2Sl#uk^HmL9wJEARL(fD#k!WV{loP}P2 zw8CQqD&x~gm5VE8Z&hO?R~A1xbm#ObJe$>>nYyv?ygD6n_K9DQ9Cf$yH zUB(vQwe^MzXyyUF5)|clLBf358+XF&lS!~`FSG?eUxuOOO*FkKUzI(cQ+AL`(M(gs zwFP{C>283Tk?b?yYYSa$YL828F=X|BDkmDrf44pnEt%)h{)JJHV{>c{c6g3niSM<_ z3g8DBU*yR*WWOk-1>q&@% z41@?w;rnr_-pU)uXXC~bd;#;`hf^UYw7Lw*k-C?dIXKyaqMqkvv5^zqY!mGHeuMbw zyJFQOZn}kN{WVlO%HI}x^KqbJc;6+KcPvr@t?t%PeT(aG?kJv}LH3?7mf}MlaA)qUc zEAgVBrB9b|tmAXswm(uvqCBm@c=#FyAzt`pMg?v=DJ-D)Xb3f(@s&O4^)YO@{0r`U zfab;Oh+(#vEk%7hmu~^(vB9!#r~3H=3;LCPBo*LUQu3upZ}4*1*Q=e`J= zM2c&kTx0Q5IrGQ}z0SDm6sLuipVY;sR=Mr9!KU*F#qo@9%fp_@6I0y>!7GElnP9R? z=1$+Bv>Y{(s4r?oKiQ$oesM^ArlIP4w0WO3*)+w;^gm$PcE1>9t-=HN+uy%S_~!HQ z7|BIurkOOx^oQEx;=}WH4>`j2B=cb~{je=m*wBIfL+OQC3SiF}ynwTXq7|64IslYc z$CWV3l)-CM(artkgw%T@%ElGENB6+=WC#*a4o3xCtw4*mAbUaLmTX93KxdRj#VSv$ zt)zEx*N+NLvDWw@i;*t86}IyzzhS^#P)6={Bm1Wf9*$6`xUAeMFuQ#>v8o|X@%-6& z804W&;QM*k!J*l}TyBLZ5yQz9)sJPb_&>JC!zH}umUeh@Aep2A`1+B(C;|Zym9TNx zn%SLMk`?uj3M2VFa`e!iS2cECfFM6d_heiMQu|h33aKb%Z!yu0X4QgSYq4`F|7Y6g z&R^_$9=yQ6%N&NUZSRYGT!IICm@@Og)#c`uio9>%E4b97^EBJ{p=upK;Q12K?Y(!m zi03Fwr)edrV7PR8&plh>VCijU`!ffaB^>^A$NR$(zfd0tlkEP>0>HH^pKHQA6v@Gi z__^+3so&R7Pt!K~v<)MD8(JomXlcehbsV%Qe(4u%t^2r&+!%GJf0IKoE_BImXt$g&e zb2niG07JiP!J>d7C~FF8x6d8;$(4~?>YVdPM710Oap?C)n_a-(g#aAhQujoptR;E^ zayT%znxOhq1iX9|GadCv(eHI};XLj`j+w1%e&glxC?T8gREaW8JtTQ&Ogf;V0ryQ5 z=0HIDR#8$EomKBNQ7#5Kl>8kKfp=qUFfk|h1d^UyU zW)&}ca;X=r5XjQ1YNm%-#es8yIQDoU;{YSAfimR`I&yH3UE5pA2+y>qrXZ2&qg*SXI zwnHkwC+fK~WbjPkdL^5;DI`(Z&NH1D05OYe{yvPCR+tHdXVz_tiHu}z;G&_k-_kEzs8iqp-OuvPI|QMz6?z1iqRhfxUJg9}V4$s3ZM4!$y6z|!9Ec-s8=4qAKH(FFlM#M>>|uX)7F{cBCkD745I?X;RRvF2 zr1q84reJSXG4if_SQT1)xXpKI=;?gkH`oPWgepJTWpm$RdbE7!60l%~$#&XBJL2LK(w6u9$2cO>#|DkN#41SVW|dVGJc;*tv{6o21H*Pv(k zQn`;Z8?+&01gl|6POq}z<(HTC-b_>0OC%uIGrmC)LJ2pI%UB{jE?KEQgTdwG%lMY6 zJybLH=G9}i=vIwm+lAMCP|4aWu@h$|l7|D8cE35T#89$QnIeXvO?hzKSF;o5CTgpx z2*sO{;f>)Z_s3zjldurL;aI{-HxBj*aLfchSScR#!u(rrab z6Ai#E-l{Eo{#zBP&nSkSfsdMWqErMIa{lpc+nadS6=!d%m~2$InH8aK__g=>88*Ok>7st8=!m26;VDpen-iwZ~Cg%sV&V#JL0h5x?Y;bxXy;H(eQy0dF4)i zmrIuvXEK)edtBdh_f8BT3#VKyIL!8+Z1g5NHT;_Dt@Gp$udk1gAmRemEcoFofoJEj zv4BLUL8Ziewkxk%@ZWf6LAEb@q*5Of=cQ}|u9b4?D;w$osCy|oE*8$UDn-i+I$1Td znHh(TPG{H}0e@|bv7KGPI_4hZ89JtPfE52Ak*hWAM<(QzXggp2@|(QUN*-_+7Gu!D z;sE!84LCN~cJJ$#S_ZTXW!r>qkHUQx%N${plw>Cn{tpzqpRJA0gdzB-@Abw_;S(A2 zVAzLNMv3}O#)YjJ0iA(>HUb|;H}>5-x^|n_vhb=TZ8_**QW)76-e&)}jZ_Dd$+te8 zUgwcSqwRFFX}D}L0(XojsA7Qu;Tk&HN?hYwP`OjKG06_-PA!V&pv;R?Z(t6bE2Wqp zWbwKs_E;M8fk6#4a3M*z14C|70Q z#HWbk{jjGOt$r?3ifdEDsR+d03!d z3HLMN8z0(^$Y0!P_H2Eqy8m&c{<+b>le{ekdx(+U^2kb6{9FDf9fL^07sKIUdl`4_ z*#0rKb86^|12RZN&4fy7p2pj^4!*g;1bnNA_h5!mrr(ogF8VIK4@`<_UKKm($P*H@ zH$M8=e8H#Mrox*5xD|la_^4cs4AmZ}DWa15ZLo~`*fjxp6iute7cDVtPm^hcTy$fK zNQyskILsUNv-HsPfJ6Dt7vP&z3vDE5&M`w3b6g!6+qc&H6tdNb{0DKl{Lr%O;z>v1 zG-f`@w}anMY^-p9PTj~Vgj^Bu-$ zkeR!-oQ0qu?fiQJE)`qqeE4^8E6Gn=UzmEMs;OUNp3l#W@MIl@fnlm`Q!S}i$KR@u z>&U$ZKjMrNtnaR|`fsP;B+sz<_dkV)LV|od6^n>QQAOEs4S?2_)ggQ=*kL}}3321W zN22cTG-i=^hPB5b*pH>F7}|^5g51LN7VuEr<>DIiR6R#SEkO&E>-q_-*^i}DvOsxZ zSmy(MYYUue0JsEX8nxIBT^BB#JcVn~74tWZf*%2zyl8 za+wgsEX1ap?%OXK6k1XtwZI0+RmmL}3F6BT^i*+b^*2pVsVV6(W8mALK3hErm~*Ru zf?z@E&-IY{p4}l_evijRf-wAi{-q<~AyB8zbDI|7B9<0mPtymu$j{M&o&E=q0#+Xn zw?HeOuAypuxeGJko$CZjod4M?kTpgsF3qJD1gTAMtu+Oll`It={p^3h<&knW+VbKaHjZt_y(Z&%QX1Q z^g&H%kM*+ZlH^E9=SUKl+I^>&!3LQ80AMks(D#^N>WrMQi;@1i&27}pGfX(BLCq%L znL(V+_K@Y>OVd{g+3TlS{oj{oP|^<9#G7ofA|tPTbI~zH-eJK$kjq1YE$qW9^U{!; zECOfIquG1gu>Q|&*Xn!brG}v%^$66@+LH0wP1Ue3GVb)h9q56X-J) zXf$hTUhd&G3=ddcD|MVG)a^zn5eDzAva5Jb;uSN$TmBssYL}3A_p$&}(T~~k-ny3{ z)H6))d%KAH;T0R-zudrt_KU#QiN(Qj#r<=BacLT3xak{UoB}0O+eZO@q$txd#=@4# zdaE;#qpC&fIyX;CW=AMXTnKZCy-RNXp5#z5YhU{nHA61+L(t0e=9;x6=H)kJTR0=(#J(pRT08aFr`RM0xqK+xX1SZ}gao}K zmzX1FY2y8C+AOwE|{tb*6p zg_#hieW!|iG&7ST>Ng*bOh4L#k`Un5O~;rO2Cq!(vbaysNC=Jx_#qhIisBfw4*dS6 zdQTjmv~0U}8<$qx^L*1c+yfCm+u)tovQaj$r^Mig7>b}w&hlLv1>*(I219CIetd#3 zYk?1c!P8o)_^VJw^?Y>Tl-O1{;jRtz&1wT{Z_pNUFQ|ID?j^}pDm;4{C!)RQJ8|Oi zk-Im&&7OLpUWig>(T1Cro`cZ2Rp#nkLliIwJ)0v^_c(QC3)AljYhbWuB5ofg1(_;? zIqd9>oTuk)mAayoA1?!KH)A(Xd6QcUU8gsKc?g0@;F0zCM-*z$_NTW39y;vSZ)!$V z=XlID(bYW3+>`3E2T^uK8PdNRpgtvCnl#Lf%-Vp`^)5pWZ&E;`Fx$iAki$fLssMez z=TJC)IRRj+N=$_h`~rYD$i7Lx%+v$uW<tx*0cf@75X-tKJ?cV@vlw(Wo>&TMa@z=cs}gZFvxP|E~Fy+*~&9F{BR zC!G^9Z6xokQ$L=8J*_PnJj#go4Uv4QL8sOmmM_oHEfKrfrxdAV^hV2H^1fY-B!s`d z01=?_j_;fIxlwg-m0&dvtn1z-LS-rkQ<7GJ=IqO}Uv)dhB5F+}GYJLs`k$YJI4}YJ zvofbUo(b}+XFVyJyx^Jg1va!!Rv*UCA8l#Ndc^i!Wl+Nm#4kc0(#2muPztUTSl(uL=BVYQEfNE#-kZ2X_et~sCA}u+67j@ zgaguwY>O@J#CQdB@7m4?@Ozf_QJ+@hi{_VN&Zto-JqFbfAJ%}?5*K6do-BSim{VpL zTTo;7A4cZgo=L5Ni!0v6lddJugi~kgPB~yFZ7^}g%W>XU{ji#jZktq}Phm=E#^Vw9 zTcrFhc8@WCcnf%;7d4?ONNGD%wa7*1g02`t4accoVhv}3>7&Nb3o1T+({heWCREuc z3%9~>!N>g=RMWRgFW5YF;yu09*j}C_j!r3atTU%3>O2x>&|1e~%;HOhKo$lI^-X3NyP9`C4h46=DTy;s35dQ~#znmw zw6AEfaa8M&uQYN1TJ-M0Z%WKm`s);ms_F~yDrj%I=$Ix%I^@$e6r|_vfgWHmrP{$Z zd*J%qOJuIE%}bjS+qHZ*tFXA&@RnqZ-^6Z)HBUNLbPL?B;<*lwPr|JKJ@A`Zox`YS z72lKkmWUv9OopDlYBZ(W-@vh+vuM&udcW$;JbS%5bjzaJ-3W2Q($2%jGvB_RTg;q{ zGw1ZlnNd}xeAt{4n?eL-ANNaYW3O&BN2G+!NTZJ_@;MsS%dkr%cWTMZT`}+;*$~qZ zRW2@FdcQyzs6CPwWqLm3APOm#vS*_^-R$N0V(g+AHl#F)w{;+Y zd;+^-2IDGUD7{^owOBXvO{V(G`{uYc|y;bHHt8G98@`}|%{>kr=qVas^K9+J*T_%7B z9f^I4;wCA7Y=4FZMY?KrvfQj`{x&xsUF(6R46twVe%xZ`$~}?tyW2qRt!QRgx$DAB z?~J46>{tFq02#dvh~QN5J)aSQl|Ad9s=_x_w7!5y^9Tt zLb=)fdm^HR6G{zVoR?pas(s*N;U)Du_tK$zrKWtv)-){sn93|S60x`F5xEDZ%3Z$l z;5u%{T#wo}RLaO3w6XWW55N@c-5F)OMRRkGqPH?h7oFMeeV%K5 zKz_)bq+-#NiM5qfa#-8ITIHe0{|r9#cY(2G)#(t{{0B--`+2>17QReN_HF!abbcjY z)w6P<_pF=FOG>mJO-`@s@&snGUh^IHmkF=$Hkw*mDg0@`auP5uf6l)HRF6V^Ca9cf zK0mCytySm1)yV#L*mA;zSB(yGPw4ouQz)3rLvL<&9>9au-h@71AX)LfRrpkc&9evo zcS3C!chuAQ!jmUqLSbcpX(#%KGAjACTl+(>#}=20^HK;#l`^Eqelm>QX`utcW_7;8 z0g+wi8e@+jKbdOfrwaCPTR0xQ=O{}ku$b-GJ6d$3X6Ur4mNIhNdOz5lvQyH)b^mem zqeYWBdiZAq@iq~36J#LdzW=w{?IH~!nEGSr!C!i|v#};7EQxc1(A^SY405DqxMXL@ z2L1EO!wxBJzdIu7tPf>K8)-b3%23rF%N? zGdwK$-L-|6SIW>T+nn8nCZcVY$d4|srOTfVt6NXT z^*3TsqE6&@G`&< zs4C#nQ-k6HBf9&;xp->&?s&!OM(d|2u9c^=6M?Zsp)wajZhI=XD5O;Z0@C)9_{P#Q zkm^ObkgTd6UFUzDALtYtsKtaA$?p9C#!Sw{%@%IeM)Tw%4r?Zto?`4F_ap_EQ^%XKD}jO*>w#mYBbBzDvF>Vr>S-6~$dJ zt`sV?bzQDP$NP9-s(`G^I|lZW3b2;4CO+pbRXpIs`OpvD+cuZ3;JZ&}rkEmY?)|uZ zXtJ?UAAkCR=+_WO_t2Dp4%9TI$hB%QK7a4sf=aasLPrw(XC>TM=bMUHijNsplK(VK z5GsvYZnDn}Fwi&^>UAS$;#IVUZ%L`d#u$45dkbsV=V+xa*UBOZeDlP*!ZoF6Q~)i~0u}AJ6rfg253& zHuvJ?Y z$Ggp9ACMy_dDHn{iwr91nSi^G$AT=Jt|A6;8_%T*K!hF-<-g}p+^;l9Bpj~gOuG2* z2K5NNWW}Q8mC>_+k5_d@p1HJm7n?|ofu~m3lNJO&a1SQg-Vmp}TTnao`3!T`CT{bd zoKK^(_L=+aLU99rHxV7VEl2z3o5p-y`e(aox^e6#QgL37`b+)^LVgVTYJrG-s!(Qp z(RA!e>POT-PtyB-V?)6bD>8S@J|=5TKOF9!H5Yo+T_9NlwX;+Qey{Gg(A>HNd9}5~ zY@<}T`x5g<+Sge1$x3=@-&UlvA?mnLq1u^38!^&Pt+260g}3SXDdGtn{9Q@J$!V`9 z+jogpEN9sk&QDO9^y`mL&>kfqMz4THCW;Cy|J_xKpB~CIGhh4k^wH>zT z#wFGB_<}AGh2&2Qy<0LrL?WYGUg^)7*9{X4jVw$pG)<+Tb{Q8X3lrB`P|va~hlvXD zhtFd`SwDJ?lTtY^*0jB~%K5dg4>+SLl8@MbE?EQ z#r_^wzhtQ6O4mFhIh(QhAjYu#lY0{jGKRLt)~1&NjAejyY*k~(j;z}FkCG~*!sSKYfAG_7*LW*{MI(_6jcjUr1||UHOPIby z%PLuinkpwp-q8=^uz$IP#>6a;DUVtaqTGmXLqHS@3mg$93yf$nYkt=tH??WKZmZiF zwi6%wJQu_e6CYLVjTRtlG&iDj5+F91CMr9J<%&sC-FTWH5fr?DdqGuX7aN<-A|JBV z#H4ve@axWXk{5d1tK8N>SZW$n;3vht8GZWHv(O=qC7*QpQXCBxvxO+VZ_H2$zX0>M zv4R?liI0hu849NI*t*WLTJw+z-EN-5;Nr;S{2neLCd2}z6|1!YE8BPbJs8Ep)iNI<=%(Lo2aON0kvnY2m(^X}@?1!j(CFxB=uHt<3F!l>)k<}+r z%_r*3wwKEsPCQ=HkR)ALI}XTF3A9Et2X}_P^ZTKWjBH2)ww)(}lakNerjGSvXBhEF zgfK=CN%oNq##~ey1EqkB;M9NI>&hc&`=+I6FeeGJK)Vdz4Uz=O&%?B4h?8%K$6O?D z%AV<(R4op$)5;U8Sm_G0HQv7H8ccT)cwp3PGz3_74-mn=SgToQvkq~#Db3_`5|8&# zOa3rWmbPOgCu}*`1jSs>=bbt@#O>Va~ zh|zNCUPylW>;@doRb@2jB_coLG9X^vs3KxX!W<3KFU0|!1Jnq*%rtWVc;nPXYJYeR z($Q2Jqo(BYnoKNF*95Xv2TLz%j9?j9c>^YK2Luqr6mYcjdMOx!ywcW~0v=5v`2CnmTx17X12^y+GV?SG)L^b0$BX65IU4weW$#;tn^vvCv{yEncj{(uS>qXqVTAWd@)YzL4>$S$tNU zMDe0a-wRB|%y8G!PT9SMUD`ug{$ivX7F*_c+iR+Hdc8wPXC=~0oUuc+V^2xTAm@o? z0N#t4(kOnUDw}p=Wz%4>3JWq9zcU4|VL;lP!2A~KCW3E=^%Yfh@;b|Wpec3DT-P6MUyoV9LLD=mpWaCo4#5c={V3+=UHJA5)s$V|CT+ZM6@6-+H{}lT0 zf4{HO|8Fxn@18VKGG}&ta}F>D*y0G{!yUenI!j|9P3(BD4DIvXWkj5*SHv@9#m=Jf z)a{T~Equ9yU7W_5XTd{$`9rTVvAIlsPwJz#XIluIvRI*!lura8BirV%Tzuo*cg3;X z$3W*YJUlC~_j38yyk2Q2U$-1>kYs(Xf2#r7tU95xP3lK@Ro9W z&EEj&}PK^qVR~Zc1I6$7m1Uxj-}T*f%y)Ny9yDIWGtLx;s6u z3HI^&?T1NzvCWyjeQBA)ll=2OAL!LOi}p)aI*f zOdrhj^}v69&Cb|pdi)yYV=DS~vhiB$l-%H?FW(SvoNOM>j*cb0#+l8ScSb7{GXIt~ zs8AH{JL#cnp5Kr(#yGZ1xSXkQoQSFQt!@(*dah)Z4`jyJp;J~ndyi_v7#qSFwDPws zOuR5O==Oyegw}53@$li{FmH5dJ59{-ZMWFfr-=e^xddo;oulVYN^Xk>>*)f`YH6tF z7!BI@dW~l9wn;nhnGGVkFC^ct_lwNy*?HaGE(}&efORSPs6M{2HJy?q)P!BiO~MU; z%grsPUKfF|u~qfKV+EY6HxK1%#CMELk(~KH(I|~VD=tsSL8_1G%{$oi>_c-AA%yz8 zGedS0cQFc;)KnF>!KOW9p_!o_abVxvkVa!2@{Y#HUbsrOXmu5c2sm9$=8xBkpu({w zol3O}hQI5(J6$=a^%h0Gu@`)YiwX#G*0K~r?|b^|?}*!t=52Kv?cd%m z?x2=n{B_%{fvDq9?%}Hj=~Jtd>c8AuypwD@0q2l6U(fudYU8j+;mg?1Q=k&h&q*nL z@SH75;#h9Itm+DlLtKAHT0;R2RLA%LDc}`!5oqhgc%w?jJk^10f~Myugvj+PuAH%F zgJ9FnanF0?&VH>}Pz`;thx+a%_?pU%9k;mKz2M%)gNYf@3wA@rc@?=GJBhYP&R2Ii zlZDjh8bmlAsx8GHFU-?m)0+;>nVC?oN2QJ`jcE2-=a&48XA}E_CF9*_@=)3!dvW-o zJU;dzr-!_S#>j3TA5aB_4QQ0ZO5@5-?noXyF>QK zf)#2Mv95k97p%FTd0_|U6%EMvnsxdwh#8cq8`9@tIsJy*M1ujzoZ5OM*II|>m%gun zN*i8UO`o@IDJ-H!j3?Fs$iz;5%U2#!nARN=%V@?)$J;h`<^?mm!23e%tR)< zSrJJttsmKKyFOP9L92J6#}k<5yCkh-k<{O(`#Qmwv={ zikvB@@4;jgdq9fh!^YZje&pB$qtfcF2rm&y%tq+~_fjcoZ|Xdds>Dnpe)qfWGuPo) zg15vC^2P6z(6E}NK)AlFy!&`XZb5U)7acv%yvGbCVe_S_oAk~Szcy7dEGz-`I;fV4 zIIx(?edRVa0cbJFCb@1e&Rrk+5{c&B7j5~_Q$>*P;xtYyV;~aq?rUL{)SW4|CZfUv zM}8t>hR}8+?RlJnBP!bhoz3HW$7d5Ba;mf?iP_1QJ%xwJ!AFw_%Skut0Lf;pvVcUk z_10?QJA9&zOUm#QTz4Jl)3_B*B5yRcV+=P-3FhjHSGGD8oHwswP zuGB8c2IgJBw}F#Y_Kug2N%Jg;4s(gAzJ*rT47~+!$BUT+Qxo;J<~ol=tU%c61emHPD`PPQqsO;$@{2r6%ZLMvG))s@eAIB)+8S3Qpj(e5K)USjNx_J7$ZWd zi9|HhR(CLwpO?apw9}3g&3Z`&N|TJrJGZu8wC!m`qc6#zbC*S!suEI=xBAcYDv&^S zR&V~1m6>q0m@+hxf^ogiIZr4EeW2!?zyhs_68uS&Lm|GAlZ}OWU$%Ygrs`6*YggR1 z)?IR@c6jWcIq;1Vto)J-};!n(#WK^L17o~ns_(Ay$$flH(|SdIWfES z-PWhORdGH?o^&tDwy3W`OVhf~i_skg3ZHt&Td4hK8wTFI1Vbezb!#O>x_s(ny1AF> z2${Tx?&%^X^E67N$pd^H>Dbn6z`M$U|L96=q6~a$;pn*1VIQ*i{Qxn+!tsORxwt^3 z^e#jq)I!OsGqwH8jlQwOy*z6LTm=mGySDl=`uCpNxdOfUy6h`FQ1W)zKor?Rpl+e%-gX3LC94>1O+XH8~%BfuE5$TRcK|?S#LNOzzV#6B-3s*{)*%R<`wIej885>DQzj+)EC;X^*dV= zX<8{E;sC0bEL&1oW7rwXo*A+ouDDstSl6+OzKEaIMQUMR>=73K9=~>{Z(HGPt~ZLx z4osZzZ^#yTQNzCP-J6onBFUZ=@CCElB-6B|A*R@>D{ytwt7ZA9z{78-6}q3rOFxEj zF*p(a_SHPcMC!iR~+k?Gj;A^`>2Bc(CGy*nTK0rJoNJ*FE;MeJsh*r!S@~ z>zU8n^~mavb653F(q`JqU+i46G7fqTqYW#HsF%(U(P(eD@#{z^d$njt+#qEIm!vIk zNU*>@aBsj(efcFHw<-CQnY_@o^=(>7xavY-u`pK1TG3JyND zagVjr$L*rS)Gf-rG0wix&vAB2rB7w{3WirtWy0ToaJygQptHgur#utboa$hOkVvBP zC&DPr*oj4+hmR&aV@6E%m8(!n(K(G?j|R5CKEE?&>leJoZ)b`7c%V|Mrkm~y2yYuiVjZ*{@!fhvDxI>t4g&Rba7dJ#z(L1)SeqFSogKx!#n+0 z6{~lEidhwcL#u|wZ_-6@73>^(rK48KcW;+GcSv}I3Y$yvOD6n#f!#lyq+#2* z7K_C1*2aAr4ZTp7_4&w8eK{Kzl%AV>-y;23$1aYs{6!ByITm8Dx}=`^pbuv6<_PA# zUr6?#FSR=`hmGS0oUYjEkLjeXl)C(mlhc+gko0EUe()yxfuzlY1^0D=0#@ns&*0(R zjI#-Z*nIDqvuq{tanaNj{*~4I3Z;Y4r63DU42IjRxIA%~Zl#f__${aD_xJuKcoodY z2_l!dOD{k4Ngd2=^yBjWG^a{4e)I2T%bU`7^dhFtqi!z00?T^l1@PG7w zs-5!xZ(;ZU+ZNaV zaIPOoB!RK+lebxVm`e|)29AuIf1S1p#KUt-WtK`d4SMIbnPP>wEWSg%_tG{2V_on` ztHvgDY_NvCB8=IiZI|uXklDQX1w7vi(0}R{ANKN&2{d(qa{gsKY-WxUrk!(*mjB*X z(QxRRUPbqj$Sb;Q7b4bEKjxwNY=^3g$eSMtFL0dQ(0}>HDYqn(I{E|hQ!)^+NPlV1 zd>0PtDHiE##HT!nhW_{@`gZveRZ#}O9U1Y-tbQt3hy$8LA*);Ke^hAAm-@G{xAv~h zu8Iq#cXGuNQNIcbYuT;X;^;Q?#3Zl)VXNaoa^Rp9a9hgoSI__6R#ySkzXYn2rU1e3 z^CNa~PupISF^Or2ROr!#il>THPbFZ%0`_r6Vp-#rIfE?U-YjuOb_97#v+QEW1pN7>7sp7$j zpJAEanj^2S-#AKQ*8b_RsvoH>64B)vOT$W93^!J3%bQ*on1QF*fbf;E+!?4x%|SdT z!)|*_zlW{I*Eq3`uRaN8Lk1ZXfv6;`@uX*7Dl=wXFXaeF3og#F_Oh7f;c&p{%y<^+ zSl^|LP2ADH+$Qe036X8%>4MWVi#VE#sZPM!JXfl4#(GxO0h^BKVsDG?+4Z)lg@bd> z+dYM8URYrJQgw~R06{)Ddu75*x11fQ%SN2 zVcxfDJMNe9ZAHPY0on^RM`)v-jyP&*#*Zy6Px(dEcQ|Ll31B1P9_)1o`q=W{1O|3qjgf2>s$CexV?f*X)*70L~4*-@?Ev?@^JTu8w?S7fcik2qaj% zj0*sY$a~Ou)oyONPusN-Iz4ru%=@q$KEU(J4C1v*ej~1jAX&eYcmWAKYT3c+xrLdP49ekwX()XR+{(iSkLa_yz=b zI|BmXCm|_n0=J)g8`ieeF|nnE^^%Grru?Ay=ORdcObnL?bS_+iKSK6YHIkAE^hZ00 z@@Ho**LIFIXRrC>qK`QuN1pJZXeI|5dfwA13Z&K`vWcZQvz|?%+swX-Wkbx5u6rc0 zEIl#)+z@LqRT9?tOyaURr)3rW3p07>dT`~+>8y_zXmc#zEep@6LL|+I?ve$JGc-SX z(;UJ0{&NR~sJQ|nruik=t2TB~0bJv#dNas#<<^X!L}EDaZ;>1iC+TmnbLFF62(UP! z+nRiPYdxIqZ?IXg_>R0>xjo6D)rj{VEadEJbJe~$LR0L`Qw2yy6VL|YE0tZONIjKk zyjIMO_$nETehuAuDx)X8kv0J*p4XmD^p2ba_b4Nm1aYh5;-ppnAhi^?B0G zVP-N|W?sq@_k@%>6@O(Bb!%s8(vL9zm&hrkI z(_Ly1hnE1d4anTpHw5DY2`C5@VI;LJ5d%u3$#ftW8KEqVQIUx zB@-sw6`sW=w+|-jJf$b+9_n%$K)XoJ!0@I*ZKC%2GN`EWo*?L_1+-%%!U7V3X5{-b z0@U9K7?(3YLu~Smbf2WsIIOJs}(@_pB__QtHPK^l>S9>R7m9Qr-mq%4<8GL2<&V3s1Z5bpT6aZt`3YE=%u zsP!T~)>xhmRydaFW0Y4pX3Fyb^X^a{TlCbA>^h5>9#q&%jKHP|_ok#gCqqk0U`8Mx z+sD@zL%20dcWsS|!o11{(^l3AYNy#2Z;;pi07!I#m!84GW0o~Hnabiq1_D->t=(kF z(=i*;_+*_gT~waFTJlYFA9eMw$$UkhnJg0}#-zZ)U;CF%Bs(-@=L-vh7*!pUfH1IW z!+XX52|)mpqcK6n>sj7Zh-{4s(Wx5T%J*da79N%5#LQch9Wn_Iq4%hsYzz7V+}O5_i9Uq;y)H>K}pLJs(e|j*7aayPVsY zKA|&tBs(Y;IhgCW9YH1ba&tqgSlD{5J#s8=0Zct|y=hE?BJ7g)FPR(h;9^Z2YX$&) zeBoXOSh6pYSKh@qlQ!k)kJ{UKA)_`pm&y#^GqjVs+|Np1o|RfJ12~HggiHfQ+ynaR z7K>}wEQO-Y8Z!ZL1at#vA*sCXySJwww+m;KA1w@9v+;e{VN0~6FVHnvBW%taW}nmS z>NB;glyyh;e9(ru$3T1*tPrU%GM_c$(o3xqd$V1wK1MV}*-11G=>78DQ$)IvP@IKz z&Yh2sozIcu{-DM+Ae|H)qW8{bm5s-A4{mD#0OFA1-oYy{xj&GR&|6|z$W^ZbhF+Lbs7 zZ_m0>LfiGFpYv+l-g$3P!bdsdwH6bPQv-M)a_^RpXDIL{0n4@ega70JI;|f$be(pb z&^A=Cjet7p%gmAtiz_1x9w7G<0PASYE60*WXK9Mrw%_-E>^rTVIOt)uW$Hamk zU`FNHmm3GYebI9zm=2ZZD)u+jv27CV3_Iy8#dXrBqGPbIi*!|PZm23^C&+kq`Z%;* zXboVMedH^-5G=L-;|}AhH7at==cgUWw-$++L|9>&F*V@UPGq_Ry)ZXq1LEBtDn0lnu&s_@kwkvHU1;OnF{XR80F(fM$ zrb!^YPcOdv`F-_kE+-s1@8F(lmz)SE--?;yuu&&8qZtE$0^D5+BE0@_fLI;izrTK3 z4go+A-VC`xyYbYK({cSaMDjpZpyEQ3vNKM+)1w*CY>%#}oqhJf@Aq)>LU65; zAPS@e&Q==?z+TY4|Nc5}0YU7e2(->%4l_(fG#ag$en?l zJKn(kDe{6K^+6sleK7icDUB8fRg`@Ee0f06P@_RaEw)}&cNuw>!9Kk@ClwGyxfRmf z;wc-^dYIYuuQzgA{(j@a`c4q08+6Zy)4r!o3;~ zCjZW^USa0-D9BGXX^#3Lq^&;=1sc|YJF?y|H*la>WX)?<4n0iDA2cF}GF!F+)ah54 zgWmDq*{RC}q^g$WNMqhnfLEy_RHk5Q8$J|XUX$#C)dNdjncGvhO^9qao3F8ttZ?5M z#0nsunvb8X?Vun21W(rFnJ@<+eY75RQ4Z8*O|REmsJ4VnlpRzAkc=-*g419g3srE5 zHHvEOCP)F^hcG&UC>_&e#EfV~0sP!*09i*?n0oV4X_~j>$4H9BVe*+feQ7Y1!AL#h zRZdnB^=NYk!<_rLSe0xyOZFBWS;zyBId3*cSb2 z#lmA+6B^>2&GUOJhKXhPaX0!Rv?VQ#si7KYE-5E=MH)R+lo9tmws(TD(=5D2*{Rvi z^4|-ozMQHmolsz!pP%2PVqIE2l9PPvG^#tD~lz&PL~3AoP{#sH3`oKQg5i@hred7iwWR}T1E{qf5%IuotvXNRO7q_G*tLT z;s3I!llT&MK1l+Q8$flb-KzV$oOr96qQ{0))jxvi1M3;yM^aNVk5VdX)ThNHWtr-G)|ch003-w9$;`6iX!>9 z6O@VsEaL&c=U&_Kl!-)v#Sx0dV6)qlIrv`CD`H#^@8BCJ>;7xJ<{F~8538SsKfNxo zf7D-|M(pciyO4FXd6AIP<(n%Twq}oin%~(}}Ft_fN z&JSNZ@$vDEd76RmKG0g%*~^0OpeSUEF)S6;R}=R+mS>1aypG%Z{y5bxyUAQg+N93C zZyDN9kI+fd`k+&Nz#mMbT^#uF(pEBf-ITS0q_Gz1W>*YotS^2eKp;>D~k#%D)ixM(u4LXyXrH}Ov)=LBiQ09VRYj-OuA5!0AjSz!(S{a8`09#2-Q}|Gq!pQH|p)kTM z)^@0e5p7Wcf0~BEp@z5OcDcAJ8x-@WqQ3-mErOyV$O5AOxf0C(VApjMlkEQc@C`|h z{|o{BZwil_!UR-X9V5fBwI3^!{pPywntu zz5aOWT4VNgvA!xP!M)|7UY^837;fmVLck-H1{BWvchK}C&tUl}Ot|`z457R{q_cPm zFuD{+Mjzz-`@^znDG;FC+s?7>{MTPz+qj%f$>L+9mhz?Df&0)P`2oxcmJ z?_n1KK38Aw_LE!Gn1%PT3x#HpM#mZRln{0qk1Rx~+`}!rB6wA4Ex2B^sAgNHW`coE;WQl_6Q-joP z_0&C;y>+}?2qbi1(O2VesPme{1yRg{0r#(P_axHRcG#?Ba%HEth!yK}eu3`p=Kpe+ ztJ1T_rARI56tlQL778+I^l}~g$2$3E{EUO}Ijem3?(E`m;1$w zeDorkh-X@1K{KkUkAM=2uT;v4?|mjmLd=WBpvrhkOKTBXyKfo!D95V-qDLlttit&3 zBQNil0@a2{8MozzHv3pd|HB+jo|>cNM(p~H=m*)#Y|l?it@yU$9uv&(cr&TAsORqK zIc+vCdf5nGo&B$i-%Ya9uaQ?#S1JSOLD6RqeEF+f_9I$`g#+*&eUmDi{Pv5o7RW99 z9Ym(qUt{!0jQxE$bt2Qhjgd`WE&LAo_EBgebyIOE00q5vKW9b*UoPoBH$++g)er&j zeu3rQOHHYZ9(ZtJhA~&SkWiilhb3pifQY<9y0&4;+)s6r`%(afVep<#fEVdMWzt{w z+$J$zm$-atlh}M*3Q!SwybB1v+P$F9c}Hl`X?H88ZO+x23f3@4f)-Nxc-?Ojl0tgQH2TC%!wfr$lh}I}E)m9i<^EdO3 zOLVZst@t6n(-=nwXWs3XL2Fn)MI80j!Bw37c6a%L=F;4XV!~99#KCL3r9Q_;n_WIm z_hlueqklQgv{x^1>0?$6i#TeIfPDRJ%-_M>d>yznw4J(9is%Mn-Jb{(M~ZNpui~QI zxVF&OQF%V~EBvT366Lr+Qj5~&t~&^9X{EB@dLBAy;An86nNvbMHDea(F;^mhw63qn ztTX>9+i{26(CLmtfr&j_`Uy=KxVVVQZ5U#wVq0 zhI>cdIQz(=9Wjuq`y$t7ZL%$Ckow%CHQ0S%`d?vK>O#0d4Igr!|K-t9A!) zv1N|Hx1C_+EpX*4w-wivbI@c9XkcKPm^jX1BBEQcWB2QDv0as_rSP#N>X2tG4oWo|6y$rt5_UGHfgAI-cIg?9n^Uaf4K?Ya ziwFyRWkC&Kba%?NSOLdudQ6^1BOh}O>Q{GU7I-&?8gqeN_jT9CM#CV_nP@O9OHHe< zq!TfRYVy#hQ6!2|*EIpjWU)Pstww#oR()*p{T$H{ra9<54MA(`cW#Us4LbKL%68I7 z$?hs_d1d%*UmN+btDPvdSuI+^{RWp}kvxHcwH0$XHT-N7{fJ@a24ltJ-Hk3~xe<7;+hU?DFTq zk}A)M!L%8_k!UgISOCE`&Ldgq-rlwNcr9}N>|iE=!LR;b5y>lL#uLMfv2tQqMRV(_ zmbHK~h6^C3YE-CG+laBQ?z7g>x*&6w9(*U7u@g?~NmOfK?x*B1={)+Oy;){4;i zc&gg1w^@FX^xwNHAudCHkH%HCTx&h_*May=T&pCN)?L_=I416E^23?1kn5eLtDn4p z4lKY=xn>qnZ`!gXsF|CiBRwPN$p&RM&kZHq4`dE@!&h;tdn3k99_Aub8BSw36+|9Q zKBFzl;6n)ek}ieC<^xKKjPr{Tc!$dM`@&?@Pwkzr?;RG~HFbgPm4t*6Ng9xnq4oSM zu`O&M!9ld64L{;zF_%{+O|seFqF(J?xeFvZ0$jME$aWa*fJTI`rhqvvP?d8b;%3YM z5LxO~&F^sw(*AliIC4;(ptnxBhFqUWyLdU@G7wWN-~6VvR?WR|%-k2<8`so6gV5;X zDWHLHSJZ@^neX1-fvP6)=SkY0Wt-i;gAIeVa=HXih+4Jd>Xk#i~X}eoDT*FU<`;P@+Em~M#a#kWOp=;Rp63c%@FqW zm?@RLq*k7``z7jQ&7ABq&W~tzD+fafu}PjpWovtFFQ!XrE`5lQCVr(szWU(BLpqyr zlY+3FwQIG00H{)YzeAUsX)Tg#0zAsJCvKe#P@sYxp~AI@T1pYat*;Fvrk-N_%41qh zkUebfBumZB0^jM^$_96bC6+H;uBlP0@VhlC0SJvRdh|GYX`d_!ll6Q2@%wcAa4q|l*T#QUQ7=YKps-mvm+Y$;uc3W=S|GX$oJ|l2LxVaL4 zLE%g)x(TBRU}wx*7j^}Ni2ZZB)KX6bLaT3DE~YgZ!lkwwB}7_;3SBlt0jIUB-{`ZZ z2*b&3PD6`Inb1l*&Jnp5-+NncE8lBw=*C={pYyQn8T3k^rz(34c zH2nHtHIO!&S=gP5yWP)OqgF)Q9dJvFM9?u2NQnouD7rlY8R(8`u-X2m)}6b$pR%!A zzqtc;GtjKbWEr@4Tx#~YCaakZH98}D-Z5k}ttPdz{4mpTJ8vP?tN-J}!}2YLgzGG? zUg_$-s#YsBO4=aNhPvUJ4Aht0A0fVb+t6yY+<2Tt1r}Ebd4_CfT^C>4`5FH{t>t7^ z?L;4>)=|m)dMOhVs!*Ww8N##bAgVy!S4TiK$x^G=N?q$*UmEgeNXQZ57h6*Ayg=rm zC=jDNRh{l$n#Wc^djJ+7RART<2NTiHn>Vq&X9m({aqFL>zd*jlr8TF2IHnz=OFHLr zNs4GgvQ?>7mqDaUvI*&^7w#FUiGxiyt(*#N-Z4kV7qe>n5gWPut%AOP%MLJ% zA1|O@PO^DLJB6*v{JnMjC|&lK|}-VkYopj>5o#YX^FZDNcmDv;~F z374?$2S1+yPlId>EN8#mb$XK9;Yw_N^WyJHAt-d)(N3IUF_ff`X`;;r^AK_Ea zZVQAgr6}+8X;z?#f@0YVWjb7^hzOBki?ir_(&CC_XO3Bp7E8C=o7jE9A<$XsP z@l_4e$BX|0+$cW6it}O|5MM%sY?il2QNL_2ww-tlCT!^+?rfrRu{T_B*;S~jdi(U2 z$#TU1j~lAk#D0=o%6@j4B5YqxNFMgcz-w9jo~x-{WPV%|ekuFo zCdyro;tig>us$0p5Uf*Nm~G53=`(73ORiV^&TUgn|2=d133R8?H1Wu_)xy4P7`H9b zSU5Gvj`DCW^_JaJ=0qa1bgI?i$&ouf&i-VIB#@4^4YRR|d!R{H^H}+Dh&TBMCW#xX0xO10<&1T9mg#s^8W(R3m z0)8^kF$^D{zCfxb1luul-Cptvk88Xg9juQ&Iu8J_KO$*v-;d@-ZD;YoO;U60*LT`=)Inl&U8LX5lnhj~i z>JYF60#MYtUU*B)z=1C+6XL!b`FuvZyfSPQqn00VXjEBE&`Be^r(lWq;tN`!!m+$g zL#W$`W&E(aCk4iBi6kTZi4uq&VACzj8WRDpUb^^DnBk%8fdze|zsYr$@6VQDae5oB zC}>(TOHe@8=3T2Z(}0)!{NJ1=BfP~2K00m|inf%S z@5=sQD)Qd|5G*wg2)K7RB2M_9u;b0T|MaIwJ+0$knI2>*FdDc*VI*WAen3RN?oae*vxMU6l@IZ3p#_(#pD-`UHLRnG;PTlqj z=u*=*J&57#YLeKFg4E89DL-SAll{H9If?y%6Jq}ZFR2EP1<+-PnvE$Xk;xQa7=tAebmOwl9L G!2bbGS+4*9 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-pmc-add-book-migration.png b/docs/en/Tutorials/images/bookstore-pmc-add-book-migration.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-pmc-add-book-migration.png rename to docs/en/Tutorials/images/bookstore-pmc-add-book-migration.png diff --git a/docs/en/Tutorials/images/bookstore-service-terminal-output.png b/docs/en/Tutorials/images/bookstore-service-terminal-output.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6145e03f24f4675cae8067d37fab151f669ea9 GIT binary patch literal 17888 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 Aq5uE@ literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-solution-structure-angular.png b/docs/en/Tutorials/images/bookstore-solution-structure-angular.png new file mode 100644 index 0000000000000000000000000000000000000000..07d064a8804464a22d7c34b271b80b4ef0db4aac GIT binary patch literal 11845 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%0ABR#yY-^GlElDy)b+@yKbpTw6##s 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 F`foPYfo1>z literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-start-project-mvc.png b/docs/en/Tutorials/images/bookstore-start-project-mvc.png new file mode 100644 index 0000000000000000000000000000000000000000..133dc6f131470738b8d6b47804546563c489796c GIT binary patch literal 144467 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%0Ah+$YTf^sW z&w}5h7bmXcC8NyiW^q?48;f zo_pM?t$UwfZu_cYO|fqwuvpS?|7A0=-@v^@oSA4HRy?0p98&TEd! zQj#$M?V9@J4iX+8g#_;y4Seot8Vz_;R7u2a$_P>c zV+KzPqW)j`E$L%AuUIMt{FwBS=1D)isCgAZkjNcf7B~9FKCb^X$m@@`ZTYRg?BaJk zzp|aT(8d<1rCXtT+D*>a?C!Wr*#Qoi6gs+-^D+d}A3inedQ&_IKBKwo@r38@99;Le zRW>~w!%q^)n~eqF+55iA?ZdA;Ww%c#3ekL{h;#Y*pKau6%`j_dru3rEl3OXKu(()J z%PD1g`t$S*(j+5qcPNtC%4hW#V&$%JHC zKrta0t_%o9agZUixi}TC%5FpfeuwEg-$@HFaRzLo_SFsX~e2?*jEDgJ~cke^uh4k9AG zGixqTb#>WO(?DfoMqFB=%2=vp>M0UP79r_)KI)_LBM|-kY?oFl&8;~z203Gac4{9f zvNw1+wd1Jh9+zw|HiWjuPsn{RNkZ^uLZ3efAR^t6L?mT$qf=uTm?uiJwGAf_{5f>> zDQSXMNgi81JFI~*8INRnG{ufIM8QnChb2AITsCjTc4pS$#%1?nL$=ua^MamBwV8E& zA~lzLJp*_}gih%dp54*62vUPyS}X{C!T7ED1!`hBO>K~?oi zIkViXf5XRa7hEIc_J(DOcFs)c{^TPHU!gY}FT+T?JSeXGXP zH7VjYFu_p8X^71k1v@1uSq%R&0Nm-3%2#ARxL%UHsG%tQv3~58CZ=aoIY`o670t7- zG5iQ}9AP(2EGG*HAR$%od&QvD;UkdsszKhLF{vn(4-oUp+;s!{aWgpl&Kv)2M#SAf zVRLaoA>-Poer|PJF&`d|prN73tNtA;^nS%OnkEp+ldLzA=`PT9skHOh%ixZNjxOMM z&or};(K~$ia&+{^toQmNrE?R1`nt4)Zp_FiN0H;)6S&90Sgl1FsAyaofW92U$a@!veNZpCdhWhANUdvD3c_cSR6l zjdv|36Om>%7$J2K$h9%f;NKR5z3vZjF$^3vpacoqK_4UgcYT2BA@Xr<{ zy@hY?7F2q?48lfRLJhDkg+(3R+rEqRFxSYoyQPU%qfMvMXg$8wJof%b_3hAP#RfyQ z4*vaoF&kp<4GNxnXJ+h3Q8>g38j|?)q{KbG0?@`^)TMo1KP%bDZfA`_#Eu6CzYt=6 zWkAGa$0Xccqq;D@M{rq}H5xyQQJO1|Tv(+iKM7|~D2lJ+Lf6y59Kjy5=;qo`QLN0r zo%FjeILKwYJt)#HB;o!FlfIL+G1p5Bl#p^T@PAe_Pw(nNZ#Xz=R6^LDn3xhbQ{q@R zihXQtMF0`zbK7AeuX*q+thx%}&S@+4Qqh7jbc(U z0}zu81$#p1MT#lpt;obG<5fPA7`MIiP^~7Z%Ry|~NFQGSdHPVfc#rz2QM~t+F9|D5 z&A<4Fyd$-5!kW9J6Y^sP(`;-G>y^>*3B!*coBM=>zrCsw`5sQFI`~G~?5}s-5c^2J z@wi5j$G%p&oGwWH?S{qO;ONvd#8WBs4h*C-=*(ApTyd3YR;R>mi`d$6MB%c<=88&g z?wk!}$W)S(a|h3C2&pJ6y`Lpm+f~<2D|t{yo(5?pEY$BDnHnD?y@_a3SGhY^*&@y? zufLlFc!W@6&=O=4!VvkgD7>FQW_fR!$#}f?C3`%+r-xqxYQjQQjEGP

1pwUO%hW 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

+
- Books + {{ "::Menu:Books" | abpLocalization }}
- +
+ +
- - - - Actions - Book name - Book type - Publish date - Price - - - - - -
- +
+ + -
- - -
- - {{ data.name }} - {{ booksType[data.type] }} - {{ data.publishDate | date }} - {{ data.price }} - - - +
+ + {{ data.name }} + {{ booksType[data.type] }} + {{ data.publishDate | date }} + {{ data.price }} + +
-

{{ selectedBook.id ? 'Edit' : 'New Book' }}

+

+ {{ + (selectedBook.id ? "AbpIdentity::Edit" : "::NewBook") | abpLocalization + }} +

* - +
* - +
*
@@ -95,11 +129,12 @@ - diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.ts index bba94cb368..187480ed5e 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.ts @@ -1,19 +1,22 @@ -import { Component, OnInit } from '@angular/core'; -import { Store, Select } from '@ngxs/store'; -import { BooksState } from '../../store/states'; -import { Observable } from 'rxjs'; -import { Books } from '../../store/models'; -import { GetBooks, CreateUpdateBook, DeleteBook } from '../../store/actions'; -import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; -import { BooksService } from '../shared/books.service'; -import { ConfirmationService, Toaster } from '@abp/ng.theme.shared'; +import { Component, OnInit } from "@angular/core"; +import { Store, Select } from "@ngxs/store"; +import { BooksState } from "../../store/states"; +import { Observable } from "rxjs"; +import { Books } from "../../store/models"; +import { GetBooks, CreateUpdateBook, DeleteBook } from "../../store/actions"; +import { FormGroup, FormBuilder, Validators } from "@angular/forms"; +import { + NgbDateNativeAdapter, + NgbDateAdapter +} from "@ng-bootstrap/ng-bootstrap"; +import { BooksService } from "../shared/books.service"; +import { ConfirmationService, Confirmation } from "@abp/ng.theme.shared"; @Component({ - selector: 'app-book-list', - templateUrl: './book-list.component.html', - styleUrls: ['./book-list.component.scss'], - providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }], + selector: "app-book-list", + templateUrl: "./book-list.component.html", + styleUrls: ["./book-list.component.scss"], + providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }] }) export class BookListComponent implements OnInit { @Select(BooksState.getBooks) @@ -21,39 +24,36 @@ export class BookListComponent implements OnInit { booksType = Books.BookType; + bookTypeArr = Object.keys(Books.BookType).filter( + bookType => typeof this.booksType[bookType] === "number" + ); + loading = false; isModalOpen = false; form: FormGroup; - bookTypeArr = Object.keys(Books.BookType).filter(bookType => typeof this.booksType[bookType] === 'number'); - selectedBook = {} as Books.Book; constructor( private store: Store, private fb: FormBuilder, private booksService: BooksService, - private confirmationService: ConfirmationService, + private confirmationService: ConfirmationService ) {} ngOnInit() { + this.get(); + } + + get() { this.loading = true; this.store.dispatch(new GetBooks()).subscribe(() => { this.loading = false; }); } - buildForm() { - this.form = this.fb.group({ - name: [this.selectedBook.name || '', Validators.required], - type: this.selectedBook.type || null, - publishDate: this.selectedBook.publishDate ? new Date(this.selectedBook.publishDate) : null, - price: this.selectedBook.price || null, - }); - } - createBook() { this.selectedBook = {} as Books.Book; this.buildForm(); @@ -68,23 +68,41 @@ export class BookListComponent implements OnInit { }); } + buildForm() { + console.warn(this.selectedBook); + this.form = this.fb.group({ + name: [this.selectedBook.name || "", Validators.required], + type: [this.selectedBook.type || null, Validators.required], + publishDate: [ + this.selectedBook.publishDate + ? new Date(this.selectedBook.publishDate) + : null, + Validators.required + ], + price: [this.selectedBook.price || null, Validators.required] + }); + } + save() { if (this.form.invalid) { return; } - this.store.dispatch(new CreateUpdateBook(this.form.value, this.selectedBook.id)).subscribe(() => { - this.isModalOpen = false; - this.form.reset(); - }); + this.store + .dispatch(new CreateUpdateBook(this.form.value, this.selectedBook.id)) + .subscribe(() => { + this.isModalOpen = false; + this.form.reset(); + this.get(); + }); } delete(id: string, name: string) { this.confirmationService - .error(`${name} will be deleted. Do you confirm that?`, 'Are you sure?') + .warn("::AreYouSureToDelete", "AbpAccount::AreYouSure") .subscribe(status => { - if (status === Toaster.Status.confirm) { - this.store.dispatch(new DeleteBook(id)); + if (status === Confirmation.Status.confirm) { + this.store.dispatch(new DeleteBook(id)).subscribe(() => this.get()); } }); } diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts index 8bd5f84e71..fcf540af5e 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts @@ -1,18 +1,19 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { BooksComponent } from './books.component'; -import { BookListComponent } from './book-list/book-list.component'; +import { NgModule } from "@angular/core"; +import { Routes, RouterModule } from "@angular/router"; + +import { BooksComponent } from "./books.component"; +import { BookListComponent } from "./book-list/book-list.component"; const routes: Routes = [ { - path: '', + path: "", component: BooksComponent, - children: [{ path: '', component: BookListComponent }], - }, + children: [{ path: "", component: BookListComponent }] + } ]; @NgModule({ imports: [RouterModule.forChild(routes)], - exports: [RouterModule], + exports: [RouterModule] }) export class BooksRoutingModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts index cb6de9aadd..bd9f3553e4 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts @@ -1,8 +1,15 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-books', templateUrl: './books.component.html', - styleUrls: ['./books.component.scss'], + styleUrls: ['./books.component.scss'] }) -export class BooksComponent {} +export class BooksComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts index 40090b0717..4f8280f7a9 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts @@ -1,14 +1,14 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; -import { BooksRoutingModule } from './books-routing.module'; -import { BooksComponent } from './books.component'; -import { SharedModule } from '../shared/shared.module'; -import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; -import { BookListComponent } from './book-list/book-list.component'; +import { BooksRoutingModule } from "./books-routing.module"; +import { BooksComponent } from "./books.component"; +import { BookListComponent } from "./book-list/book-list.component"; +import { SharedModule } from "../shared/shared.module"; +import { NgbDatepickerModule } from "@ng-bootstrap/ng-bootstrap"; @NgModule({ declarations: [BooksComponent, BookListComponent], - imports: [CommonModule, BooksRoutingModule, SharedModule, NgbDatepickerModule], + imports: [CommonModule, BooksRoutingModule, SharedModule, NgbDatepickerModule] }) export class BooksModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/shared/books.service.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/shared/books.service.ts index 3ab1691d0f..ce51bb6583 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/books/shared/books.service.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/shared/books.service.ts @@ -4,7 +4,7 @@ import { Books } from '../../store/models'; import { Observable } from 'rxjs'; @Injectable({ - providedIn: 'root', + providedIn: 'root' }) export class BooksService { constructor(private restService: RestService) {} @@ -12,7 +12,7 @@ export class BooksService { get(): Observable { return this.restService.request({ method: 'GET', - url: '/api/app/book?MaxResultCount=100', + url: '/api/app/book' }); } @@ -20,29 +20,32 @@ export class BooksService { return this.restService.request({ method: 'POST', url: '/api/app/book', - body: createBookInput, + body: createBookInput }); } getById(id: string): Observable { return this.restService.request({ method: 'GET', - url: `/api/app/book/${id}`, + url: `/api/app/book/${id}` }); } - update(updateBookInput: Books.CreateUpdateBookInput, id: string): Observable { + update( + updateBookInput: Books.CreateUpdateBookInput, + id: string + ): Observable { return this.restService.request({ method: 'PUT', url: `/api/app/book/${id}`, - body: updateBookInput, + body: updateBookInput }); } delete(id: string): Observable { return this.restService.request({ method: 'DELETE', - url: `/api/app/book/${id}`, + url: `/api/app/book/${id}` }); } } diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html index 4fafc67398..f4d41daf4f 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html @@ -1,15 +1,20 @@ -
-
{{ '::Welcome' | abpLocalization }}
-
-

- {{ '::LongWelcomeMessage' | abpLocalization }} -

-

- {{ 'AbpIdentity::Login' | abpLocalization }} -

-
-

abp.io

+
+
+

{{ '::Welcome' | abpLocalization }}

+
+
+

{{ '::LongWelcomeMessage' | abpLocalization }}

+
+
+ abp.io + {{ 'AbpAccount::Login' | abpLocalization }}
diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.spec.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.spec.ts new file mode 100644 index 0000000000..b52901d692 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.spec.ts @@ -0,0 +1,51 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { HomeComponent } from './home.component'; +import { HomeModule } from './home.module'; +import { RouterTestingModule } from '@angular/router/testing'; +import { NgxsModule } from '@ngxs/store'; +import { By } from '@angular/platform-browser'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + let mockOAuthService: { hasValidAccessToken: () => boolean }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ NgxsModule.forRoot(), HomeModule, RouterTestingModule], + providers: [{ provide: OAuthService, useValue: { hasValidAccessToken: () => false } }], + }); + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + mockOAuthService = TestBed.get(OAuthService); + fixture.detectChanges(); + }); + + describe('#hasLoggedIn', () => { + it('should return the hasValidAccessToken method of oAuthService', () => { + const spy = spyOn(mockOAuthService, 'hasValidAccessToken'); + spy.and.returnValue(false); + + expect(component.hasLoggedIn).toBe(false); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('login button', () => { + it('should display', () => { + const button = fixture.debugElement.query(By.css('[routerLink="/account/login"]')); + expect(button).toBeTruthy(); + expect(button.nativeElement.textContent).toContain('AbpAccount::Login'); + }); + + it('should not display when user logged in', () => { + const spy = spyOn(mockOAuthService, 'hasValidAccessToken'); + spy.and.returnValue(true); + fixture.detectChanges(); + + const button = fixture.debugElement.query(By.css('#login-button')); + expect(button).toBeFalsy(); + }); + }); +}); diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.ts index aa56d34131..a42b960493 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.ts @@ -2,7 +2,7 @@ import { Component } from '@angular/core'; import { OAuthService } from 'angular-oauth2-oidc'; @Component({ - selector: 'abp-home', + selector: 'app-home', templateUrl: './home.component.html', }) export class HomeComponent { diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/setting-management-wrapper.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/setting-management-wrapper.module.ts new file mode 100644 index 0000000000..e5f3db8878 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/setting-management-wrapper.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { SettingManagementModule } from '@abp/ng.setting-management'; + +@NgModule({ + imports: [SettingManagementModule], +}) +export class SettingManagementWrapperModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts index 56370675d0..d8deba3fa5 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts @@ -1,15 +1,18 @@ -import { Books } from '../models'; +import { Books } from "../models"; export class GetBooks { - static readonly type = '[Books] Get'; + static readonly type = "[Books] Get"; } export class CreateUpdateBook { - static readonly type = '[Books] Create Update Book'; - constructor(public payload: Books.CreateUpdateBookInput, public id?: string) {} + static readonly type = "[Books] Create Update Book"; + constructor( + public payload: Books.CreateUpdateBookInput, + public id?: string + ) {} } export class DeleteBook { - static readonly type = '[Books] Delete'; + static readonly type = "[Books] Delete"; constructor(public id: string) {} } diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts index 7e629bd4a3..0130dc8db3 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts @@ -29,7 +29,7 @@ export namespace Books { Horror, Science, ScienceFiction, - Poetry, + Poetry } export interface CreateUpdateBookInput { diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts index e43098f394..f2d1c78d90 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts @@ -1,12 +1,16 @@ -import { State, Action, StateContext, Selector } from '@ngxs/store'; -import { Books } from '../models/books'; -import { BooksService } from '../../books/shared/books.service'; -import { tap, switchMap } from 'rxjs/operators'; -import { GetBooks, CreateUpdateBook, DeleteBook } from '../actions/books.actions'; +import { State, Action, StateContext, Selector } from "@ngxs/store"; +import { + GetBooks, + CreateUpdateBook, + DeleteBook +} from "../actions/books.actions"; +import { Books } from "../models/books"; +import { BooksService } from "../../books/shared/books.service"; +import { tap } from "rxjs/operators"; @State({ - name: 'BooksState', - defaults: { books: {} } as Books.State, + name: "BooksState", + defaults: { books: {} } as Books.State }) export class BooksState { @Selector() @@ -21,27 +25,23 @@ export class BooksState { return this.booksService.get().pipe( tap(booksResponse => { ctx.patchState({ - books: booksResponse, + books: booksResponse }); - }), + }) ); } @Action(CreateUpdateBook) save(ctx: StateContext, action: CreateUpdateBook) { - let request; - if (action.id) { - request = this.booksService.update(action.payload, action.id); + return this.booksService.update(action.payload, action.id); } else { - request = this.booksService.create(action.payload); + return this.booksService.create(action.payload); } - - return request.pipe(switchMap(() => ctx.dispatch(new GetBooks()))); } @Action(DeleteBook) delete(ctx: StateContext, action: DeleteBook) { - return this.booksService.delete(action.id).pipe(switchMap(() => ctx.dispatch(new GetBooks()))); + return this.booksService.delete(action.id); } } diff --git a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts index c5e2e020b1..5cd6b9f7db 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts @@ -6,7 +6,7 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44341', + issuer: 'https://localhost:44317', clientId: 'BookStore_App', dummyClientSecret: '1q2w3e*', scope: 'BookStore', @@ -16,7 +16,7 @@ export const environment = { }, apis: { default: { - url: 'https://localhost:44341', + url: 'https://localhost:44317', }, }, localization: { diff --git a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts index 72a6ff0fb5..bf65cc8610 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts @@ -6,7 +6,7 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44341', + issuer: 'https://localhost:44317', clientId: 'BookStore_App', dummyClientSecret: '1q2w3e*', scope: 'BookStore', @@ -16,7 +16,7 @@ export const environment = { }, apis: { default: { - url: 'https://localhost:44341', + url: 'https://localhost:44317', }, }, localization: { diff --git a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts index f75d9b069e..e6d29e96eb 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts @@ -6,7 +6,7 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44341', + issuer: 'https://localhost:44317', clientId: 'BookStore_App', dummyClientSecret: '1q2w3e*', scope: 'BookStore', @@ -16,7 +16,7 @@ export const environment = { }, apis: { default: { - url: 'https://localhost:44341', + url: 'https://localhost:44317', }, }, localization: { diff --git a/samples/BookStore-Angular-MongoDb/angular/src/favicon.ico b/samples/BookStore-Angular-MongoDb/angular/src/favicon.ico index 8081c7ceaf2be08bf59010158c586170d9d2d517..39695854d21146f87f3c65b27b9baef29b609255 100644 GIT binary patch literal 102968 zcmeI537pq+{>Q&#(w&J=Nlo~pW0Qn59Wxb$bSNuPvRT%hqf4s;ZCSZ(OWK-7Y)i-r zZEQ`BWU(4$h17J>bWX=~%{0yb`I^3;@t%*GgB-i_?eTc}yx-r?{dphX@9!Ex5EGOS z^e-l;AAC?X2(CpQHEO@!pkhpLdbJ=(N(%M%L2%hITswWg{Go3(h~chiXMdP2K1AzcFXkM=vQ{WM`>iK5IQHnHPQRzt zxkvx;s7jSiY*7E1QRg0e@=fmruisv=!i!UmiT(7r-c?Q>^;)%O7fpC5@2#Ahhc^GJ zc5>$0C7GKhH6QZVg@0M|&$Vr0QyMMH=rZ<+jg^Mi%Dysf$mp&MT9hAtOjga5#7eo% zGP;fLU+3RXrM>z31*vgKJ@U>8o_Y89phy2Bf`-j1jQZ1)u}K$x6jT4?v(qwTGiKeA zHD<-h+f$OuP5Lb6qfu?Y7@Ji-V?ffhLFHz3NS$`{((5kWxw^xI2B+jSed3wQ-T>bO zj~sPJaQ+{=WDg3KW!zk;Y3|K(S*CgxBl++`JUy(6z(p?=ty|YGk=d|n7^S(%X_z(L|&WIn=HLt>ZQ_|ydUtr;T zdSyLY#Igrv4-by~9>>cSTZimE4LMSznFLY?oLkyLnpE zd)n5`UYXYPwE4GW&AoEptxvsn@modAv*ozES`5p2szyqSw75|tnh*SPR_=#sv+f=d zlXd;YV<*Sw)yg_Kt>4{U6VqF!?Yg&ZTtb^&qtfoEaN6A?nq)0b=~sSu#q5NPDi{9! z!EeU=ZAI;GUCnMqo>=FOrrDd*)+MxBwy?{Rtv608KRhmDU~0~B8C6pH#SZWN_11rn z?wXu8krq2UO-Zga>9YxGcN}@zg9(ZE&aIL)qusQ%NBpJl{mU}iT*ApMeBzBF40H2G z38NlQ!Drq%XJp*HX>X3t?6zw|a)sPpY3pXk^lG0TpRjB|w++Fi?MIf&ZaO77Cih_~ zf>*n)XrIxoL*9`Czsy{9b=vilKB#oog0)3#D0W%KC)=0CkLtRx6MnPg?*s0>vemnn zcIX%69+C08c0|)_Ip6GBS~+82-MnELucp8AHIBA#e%ix#cU`h>#+a@f`qUdcVqn8z z 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 Kp#2tJdH+9GLJime literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- - +
diff --git a/samples/BookStore-Angular-MongoDb/angular/src/styles.scss b/samples/BookStore-Angular-MongoDb/angular/src/styles.scss index d62aefa968..efe57bd8c3 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/styles.scss +++ b/samples/BookStore-Angular-MongoDb/angular/src/styles.scss @@ -21,7 +21,6 @@ position: fixed; top: 50%; left: 50%; - /* bring your own prefixes */ transform: translate(-50%, -50%); } } diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj index 5f891705ab..78fbf262c3 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj @@ -12,11 +12,11 @@ - - - - - + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookDto.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookDto.cs index 5a94fbce1e..66085e3a5b 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookDto.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using Volo.Abp.Application.Dtos; namespace Acme.BookStore diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/CreateUpdateBookDto.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/CreateUpdateBookDto.cs index 8dc38a9e31..1f144a4fd4 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/CreateUpdateBookDto.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/CreateUpdateBookDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace Acme.BookStore diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/IBookAppService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/IBookAppService.cs index 5a17a8f19d..584c1f6e19 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/IBookAppService.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/IBookAppService.cs @@ -1,10 +1,10 @@ -using System; +using System; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; namespace Acme.BookStore { - public interface IBookAppService : + public interface IBookAppService : ICrudAppService< //Defines CRUD methods BookDto, //Used to show books Guid, //Primary key of the book entity diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj index d5c461a4ec..01884a764b 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj @@ -13,11 +13,11 @@ - - - - - + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookAppService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/IBookAppService.cs similarity index 75% rename from samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookAppService.cs rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/IBookAppService.cs index 8d9d29468a..c8f57151bb 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookAppService.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/IBookAppService.cs @@ -1,16 +1,16 @@ -using System; +using System; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace Acme.BookStore { - public class BookAppService : + public class BookAppService : CrudAppService, + CreateUpdateBookDto, CreateUpdateBookDto>, IBookAppService { - public BookAppService(IRepository repository) + public BookAppService(IRepository repository) : base(repository) { diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj index 9b7543cf7f..e3f23bc85e 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj @@ -26,7 +26,7 @@ - + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Logs/logs.txt b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Logs/logs.txt new file mode 100644 index 0000000000..d71f6c2aba --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Logs/logs.txt @@ -0,0 +1,10 @@ +2020-02-28 10:50:32.009 +03:00 [INF] Started database migrations... +2020-02-28 10:50:32.039 +03:00 [INF] Migrating host database schema... +2020-02-28 10:50:32.040 +03:00 [INF] Executing host database seed... +2020-02-28 10:50:34.397 +03:00 [INF] Successfully completed host database migrations. +2020-02-28 10:50:34.567 +03:00 [INF] Successfully completed database migrations. +2020-02-28 14:38:28.119 +03:00 [INF] Started database migrations... +2020-02-28 14:38:28.145 +03:00 [INF] Migrating host database schema... +2020-02-28 14:38:28.146 +03:00 [INF] Executing host database seed... +2020-02-28 14:38:29.427 +03:00 [INF] Successfully completed host database migrations. +2020-02-28 14:38:29.584 +03:00 [INF] Successfully completed database migrations. diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/appsettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/appsettings.json index c89b726bac..89717740c3 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/appsettings.json +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/appsettings.json @@ -7,7 +7,7 @@ "BookStore_Web": { "ClientId": "BookStore_Web", "ClientSecret": "1q2w3e*", - "RootUrl": "https://localhost:44357" + "RootUrl": "https://localhost:44383" }, "BookStore_App": { "ClientId": "BookStore_App", diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/tempkey.rsa b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/tempkey.rsa new file mode 100644 index 0000000000..c313a56f8a --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/tempkey.rsa @@ -0,0 +1 @@ +{"KeyId":"uJGOjuG6IaY44NtDmqRybg","Parameters":{"D":"MneJN4+n7rLDTJ015kE8QUHUJvHOEt+HtpMZU/m/cQ5p1wLLKqZyml6q/RFXwtfczSXDh+ThyZ6czEHyPFdOvByVEJxdky8r27TPdKv+dGsKXmwoHOqdf9eAR3aTMmS4D8ljPIwc/3/PdE/SrMc2uRTzYBcNHmMpUC0cOQ+OXrfrGwfgyNKTFCrNKEnkn5uFF2Q2tCMAfi2kGdLJZldFW8Bb522rl+lUoEgrnWE6OX2FqYhVD2JxfbMjrSfHf4snwdde0Vc9ee/avtXk4wHTYl1E/xJ6HDRA4UDI+dcIEQ0b1xHGSruy+0LBark+tjumQExDSiK4YbTtGUCwfvksgQ==","DP":"SJps1XBF8F3/BeJihJA0pw43Xus2keWqZSwcCjr3c0GA/dxpdIXwZlSvoa8F0uVCtSXa7n8efBTbsICKNctV+pueeSbv3rgaYiFO39Fnq3mO3uvo9VOuOJhOMc/kNNpKJT5qHaqdl1pL6NIP4Hx4GdG12d6+qka8u6D9iBydxIE=","DQ":"Lf2dO5CGcX0xs2rRVUruBozLCnhwWRIWEeTAV1FxpAH8clFcmARblMtzYh0Q9UbH/2jUPJo3W1LBOW7SSgrLVHvytc8oSqbYc1l8QXsY8eQqQKz4Ey+huJU4iZgfme7a8lwf6hsJsuigLWgQ67DyKSTHiIINzXfO+phfUEnszF0=","Exponent":"AQAB","InverseQ":"z5fhltiEYkrWSCaBAFcmXBMtreVEaNl7kpFQvHS8FR+QFwqwMOhLGdTTArp+XmdOSYq5xsTpN87iDORIdURjwkGFBNSeoABaS/WbS75mBAHc4fy0RmzoSpnVVJt9LILtIJmNqxAH+HqsiIxE1MhL89mQhZEcqRMN1mOyr0RCSqY=","Modulus":"vEFGJZO6rP+bRnzpPyc34y32mSvFm9yK3UJ8kdB15F781GXaznAg4mU7FQB2umrcAm1SilgfGiHAtzpkxy44f5MkSO9KJVeSs0N+6+X+DbCC7aIrd3quKSJgAjK3lMFdihUdJ+acSMA0+3yrmSfJVV4QMGlWcTjACab57SRJ0kHxzfXrYYexpbxejGMoT3sU6rpLq7DBqWOO+6mv5v00V6IfnYio56smpBVLviNxDs5gOa4x6idiUm4crMwg9BlfGUhWJagd+XAcnNpZL1DNP2pfD17YoT5AAkI8YICiH2iNoiZZFSx81jNLQ91VzyXzFixGb7z4y83wv6UlcVdCDw==","P":"59As5b9v7n0PvPfZLI8YAwdwSXef+sPDkjpViYD00++XByBkyQp2iYE1lZJ9ZHAeQxs3AX9NJEkIeRS2XptZJijFnaN4eaBg6QXTEKQf/Ti6Foi9ygd6QPxRcYvJSD5yfK1NgH7bFSBLEgJaeodz/joD/F2Ysd42qCTU730q18E=","Q":"z+WkIXBxm/scuNlX1LVL2Q/QYdBfzTBm6H6b9AY7fxfGcQpmFddzdz4NTl9VrkanJnkN53bDrGktqneknpWeloAuFQKdd5jvMYLD6Rq0sKqTNWsNvYgV5jOCZe5vI1LCU2Xsr8fYaSOd7iKCPPytgVdGnitoayzAlLx5x04+Dc8="}} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj index 432792f1b0..5f6c8b5fe5 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj @@ -8,14 +8,14 @@ - - - - - - - - + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs index 6ac58cef9e..1d5c43b39c 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs @@ -5,11 +5,11 @@ using Volo.Abp.FeatureManagement; using Volo.Abp.Identity; using Volo.Abp.IdentityServer; using Volo.Abp.Localization; -using Volo.Abp.Validation.Localization; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement; using Volo.Abp.SettingManagement; using Volo.Abp.TenantManagement; +using Volo.Abp.Validation.Localization; using Volo.Abp.VirtualFileSystem; namespace Acme.BookStore diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs index ba84b4fe2a..d97da0e1cf 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs @@ -1,4 +1,4 @@ -namespace Acme.BookStore +namespace Acme.BookStore { public enum BookType { diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json index baa9fe753e..16e93b5768 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json @@ -3,6 +3,18 @@ "texts": { "Menu:Home": "Home", "Welcome": "Welcome", - "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io." + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io.", + + "Menu:BookStore": "Book Store", + "Menu:Books": "Books", + "PublishDate": "Publish date", + "Actions": "Actions", + "Edit": "Edit", + "NewBook": "New book", + "Name": "Name", + "Type": "Type", + "Price": "Price", + "CreationTime": "Creation time", + "AreYouSureToDelete": "Are you sure you want to delete this item?" } -} \ No newline at end of file +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json new file mode 100644 index 0000000000..31e0ab5a47 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json @@ -0,0 +1,8 @@ +{ + "culture": "zh-Hant", + "texts": { + "Menu:Home": "首頁", + "Welcome": "歡迎", + "LongWelcomeMessage": "歡迎來到此應用程式. 這是一個基於ABP框架的起始專案. 有關更多訊息, 請瀏覽 abp.io." + } + } \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj index 0d4f4786b9..4f6d4e80f7 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj @@ -12,15 +12,16 @@ - - - - - - - - - + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs index 93dd6d9adc..2b52d628b6 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs @@ -1,4 +1,4 @@ -using System; +using System; using Volo.Abp.Domain.Entities.Auditing; namespace Acme.BookStore @@ -12,5 +12,19 @@ namespace Acme.BookStore public DateTime PublishDate { get; set; } public float Price { get; set; } + + protected Book() + { + + } + + public Book(Guid id, string name, BookType type, DateTime publishDate, float price) : + base(id) + { + Name = name; + Type = type; + PublishDate = publishDate; + Price = price; + } } } \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs new file mode 100644 index 0000000000..5227ff4fd3 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs @@ -0,0 +1,52 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Guids; + +namespace Acme.BookStore +{ + public class BookStoreDataSeederContributor + : IDataSeedContributor, ITransientDependency + { + private readonly IRepository _bookRepository; + private readonly IGuidGenerator _guidGenerator; + + public BookStoreDataSeederContributor( + IRepository bookRepository, + IGuidGenerator guidGenerator) + { + _bookRepository = bookRepository; + _guidGenerator = guidGenerator; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (await _bookRepository.GetCountAsync() > 0) + { + return; + } + + await _bookRepository.InsertAsync( + new Book( + id: _guidGenerator.Create(), + name: "1984", + type: BookType.Dystopia, + publishDate: new DateTime(1949, 6, 8), + price: 19.84f + ) + ); + + await _bookRepository.InsertAsync( + new Book( + id: _guidGenerator.Create(), + name: "The Hitchhiker's Guide to the Galaxy", + type: BookType.ScienceFiction, + publishDate: new DateTime(1995, 9, 27), + price: 42.0f + ) + ); + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs index 4db6b4af83..96d376467f 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs @@ -1,8 +1,12 @@ -using System.Threading.Tasks; +using System; +using System.Linq; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; +using Volo.Abp.MultiTenancy; +using Volo.Abp.TenantManagement; namespace Acme.BookStore.Data { @@ -12,13 +16,19 @@ namespace Acme.BookStore.Data private readonly IDataSeeder _dataSeeder; private readonly IBookStoreDbSchemaMigrator _dbSchemaMigrator; + private readonly ITenantRepository _tenantRepository; + private readonly ICurrentTenant _currentTenant; public BookStoreDbMigrationService( IDataSeeder dataSeeder, - IBookStoreDbSchemaMigrator dbSchemaMigrator) + IBookStoreDbSchemaMigrator dbSchemaMigrator, + ITenantRepository tenantRepository, + ICurrentTenant currentTenant) { _dataSeeder = dataSeeder; _dbSchemaMigrator = dbSchemaMigrator; + _tenantRepository = tenantRepository; + _currentTenant = currentTenant; Logger = NullLogger.Instance; } @@ -27,13 +37,43 @@ namespace Acme.BookStore.Data { Logger.LogInformation("Started database migrations..."); - Logger.LogInformation("Migrating database schema..."); + await MigrateHostDatabaseAsync(); + + var i = 0; + var tenants = await _tenantRepository.GetListAsync(); + foreach (var tenant in tenants) + { + i++; + + using (_currentTenant.Change(tenant.Id)) + { + Logger.LogInformation($"Migrating {tenant.Name} database schema... ({i} of {tenants.Count})"); + await MigrateTenantDatabasesAsync(tenant); + Logger.LogInformation($"Successfully completed {tenant.Name} database migrations."); + } + } + + Logger.LogInformation("Successfully completed database migrations."); + } + + private async Task MigrateHostDatabaseAsync() + { + Logger.LogInformation("Migrating host database schema..."); await _dbSchemaMigrator.MigrateAsync(); - Logger.LogInformation("Executing database seed..."); + Logger.LogInformation("Executing host database seed..."); await _dataSeeder.SeedAsync(); - Logger.LogInformation("Successfully completed database migrations."); + Logger.LogInformation("Successfully completed host database migrations."); + } + + private async Task MigrateTenantDatabasesAsync(Tenant tenant) + { + Logger.LogInformation($"Migrating schema for {tenant.Name} database..."); + await _dbSchemaMigrator.MigrateAsync(); + + Logger.LogInformation($"Executing {tenant.Name} tenant database seed..."); + await _dataSeeder.SeedAsync(tenant.Id); } } } \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj index 92f405974e..a77fd9cccf 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj @@ -12,11 +12,11 @@ - - - - - + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj index 0afb022b3e..6119146712 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj @@ -4,9 +4,9 @@ netcoreapp3.1 - InProcess Acme.BookStore true + Acme.BookStore-4681b4fd-151f-4221-84a4-929d86723e4c @@ -16,11 +16,12 @@ - - - - - + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs index d7ccc537e0..9ea202218d 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs @@ -18,6 +18,7 @@ using Volo.Abp.Account.Web; using Volo.Abp.AspNetCore.Authentication.JwtBearer; using Volo.Abp.AspNetCore.MultiTenancy; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Localization; using Volo.Abp.Modularity; @@ -34,7 +35,8 @@ namespace Acme.BookStore typeof(BookStoreMongoDbModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), - typeof(AbpAccountWebIdentityServerModule) + typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAspNetCoreSerilogModule) )] public class BookStoreHttpApiHostModule : AbpModule { @@ -120,6 +122,7 @@ namespace Acme.BookStore options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文")); }); } @@ -172,6 +175,7 @@ namespace Acme.BookStore }); app.UseAuditing(); + app.UseAbpSerilogEnrichers(); app.UseMvcWithDefaultRouteAndArea(); } } diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Program.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Program.cs index 5cc5d48721..23d000d9d7 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Program.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Program.cs @@ -1,5 +1,4 @@ using System; -using System.IO; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; using Serilog; diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json index 3cd60ed3ef..e7caefc5e6 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44341", - "sslPort": 44341 + "applicationUrl": "https://localhost:44317", + "sslPort": 44317 } }, "profiles": { @@ -18,7 +18,7 @@ "Acme.BookStore.HttpApi.Host": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:44341", + "applicationUrl": "https://localhost:44317", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Startup.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Startup.cs index af5a330272..ee73dc247c 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Startup.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Startup.cs @@ -1,9 +1,7 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace Acme.BookStore { diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json index 88f0faa86c..ce4bedfc0f 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json @@ -1,12 +1,12 @@ { "App": { - "SelfUrl": "https://localhost:44341", + "SelfUrl": "https://localhost:44317", "CorsOrigins": "https://*.BookStore.com,http://localhost:4200" }, "ConnectionStrings": { "Default": "mongodb://localhost:27017/BookStore" }, "AuthServer": { - "Authority": "https://localhost:44341" + "Authority": "https://localhost:44317" } } diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/package.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/package.json index f9f133aa16..b620e756f7 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/package.json +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^1.0.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^2.1.0" } } \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.css index ddf9cae5b2..ee3c5080a5 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.css +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/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/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.js index 730db8bc97..cef1cf55e1 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.js +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.js @@ -1,636 +1,636 @@ -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) { - sourceName = sourceName || abp.localization.defaultResourceName; - - 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.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); - }; - +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) { + sourceName = sourceName || abp.localization.defaultResourceName; + + 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.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 diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/jquery/abp.jquery.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/jquery/abp.jquery.js index 6a84bfbb61..6e2ee001b8 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/jquery/abp.jquery.js @@ -1,389 +1,393 @@ -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) { - $.getScript(url) - .done(function () { - 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]) + } + ); + } + } + } + } + }; + + 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/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/jquery.validate.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/jquery.validate.js index 12674b08b2..abc357d190 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/jquery.validate.js +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/jquery.validate.js @@ -1,21 +1,21 @@ -/*! - * jQuery Validation Plugin v1.17.0 - * - * https://jqueryvalidation.org/ - * - * Copyright (c) 2017 Jörn Zaefferer - * Released under the MIT license - */ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery"], factory ); - } else if (typeof module === "object" && module.exports) { - module.exports = factory( require( "jquery" ) ); - } else { - factory( jQuery ); - } -}(function( $ ) { - +/*! + * jQuery Validation Plugin v1.17.0 + * + * https://jqueryvalidation.org/ + * + * Copyright (c) 2017 Jörn Zaefferer + * Released under the MIT license + */ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery"], factory ); + } else if (typeof module === "object" && module.exports) { + module.exports = factory( require( "jquery" ) ); + } else { + factory( jQuery ); + } +}(function( $ ) { + $.extend( $.fn, { // https://jqueryvalidation.org/validate/ @@ -1561,7 +1561,7 @@ $.extend( $.validator, { } } ); - + // Ajax mode: abort // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() @@ -1597,5 +1597,5 @@ if ( $.ajaxPrefilter ) { return ajax.apply( this, arguments ); }; } -return $; +return $; })); \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js index 4299965949..500942fb8f 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js @@ -230,6 +230,174 @@ var luxon = (function (exports) { 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 @@ -429,9 +597,14 @@ var luxon = (function (exports) { } // signedOffset('-5', '30') -> -330 function signedOffset(offHourStr, offMinuteStr) { - var offHour = parseInt(offHourStr, 10) || 0, - offMin = parseInt(offMinuteStr, 10) || 0, - offMinSigned = offHour < 0 ? -offMin : offMin; + 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 @@ -440,7 +613,6 @@ var luxon = (function (exports) { if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue)) throw new InvalidArgumentError("Invalid unit value " + value); return numericValue; } - function normalizeObject(obj, normalizer, nonUnitKeys) { var normalized = {}; @@ -458,7 +630,7 @@ var luxon = (function (exports) { function formatOffset(offset, format) { var hours = Math.trunc(offset / 60), minutes = Math.abs(offset % 60), - sign = hours >= 0 ? "+" : "-", + sign = hours >= 0 && !Object.is(hours, -0) ? "+" : "-", base = "" + sign + Math.abs(hours); switch (format) { @@ -480,196 +652,27 @@ var luxon = (function (exports) { } 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 n = "numeric", - s = "short", - l = "long", - d2 = "2-digit"; - 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: d2 - }; - var TIME_WITH_SECONDS = { - hour: n, - minute: d2, - second: d2 - }; - var TIME_WITH_SHORT_OFFSET = { - hour: n, - minute: d2, - second: d2, - timeZoneName: s - }; - var TIME_WITH_LONG_OFFSET = { - hour: n, - minute: d2, - second: d2, - timeZoneName: l - }; - var TIME_24_SIMPLE = { - hour: n, - minute: d2, - hour12: false - }; - /** - * {@link toLocaleString}; format like '09:30:23', always 24-hour. - */ - var TIME_24_WITH_SECONDS = { - hour: n, - minute: d2, - second: d2, - hour12: false - }; - /** - * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour. - */ - var TIME_24_WITH_SHORT_OFFSET = { - hour: n, - minute: d2, - second: d2, - hour12: false, - timeZoneName: s - }; - /** - * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour. - */ + 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; - var TIME_24_WITH_LONG_OFFSET = { - hour: n, - minute: d2, - second: d2, - hour12: false, - timeZoneName: l - }; - /** - * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is. - */ + case "short": + return monthsShort; - var DATETIME_SHORT = { - year: n, - month: n, - day: n, - hour: n, - minute: d2 - }; - /** - * {@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: d2, - second: d2 - }; - var DATETIME_MED = { - year: n, - month: s, - day: n, - hour: n, - minute: d2 - }; - var DATETIME_MED_WITH_SECONDS = { - year: n, - month: s, - day: n, - hour: n, - minute: d2, - second: d2 - }; - var DATETIME_MED_WITH_WEEKDAY = { - year: n, - month: s, - day: n, - weekday: s, - hour: n, - minute: d2 - }; - var DATETIME_FULL = { - year: n, - month: l, - day: n, - hour: n, - minute: d2, - timeZoneName: s - }; - var DATETIME_FULL_WITH_SECONDS = { - year: n, - month: l, - day: n, - hour: n, - minute: d2, - second: d2, - timeZoneName: s - }; - var DATETIME_HUGE = { - year: n, - month: l, - day: n, - weekday: l, - hour: n, - minute: d2, - timeZoneName: l - }; - var DATETIME_HUGE_WITH_SECONDS = { - year: n, - month: l, - day: n, - weekday: l, - hour: n, - minute: d2, - second: d2, - timeZoneName: l - }; - - 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 "long": + return monthsLong; case "numeric": return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; @@ -855,1369 +858,1391 @@ var luxon = (function (exports) { } } + function stringifyTokens(splits, tokenToString) { + var s = ""; + + for (var _iterator = splits, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var token = _ref; + + 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 + }; /** - * @interface + * @private */ - var Zone = + var Formatter = /*#__PURE__*/ function () { - function Zone() {} - - var _proto = Zone.prototype; + Formatter.create = function create(locale, opts) { + if (opts === void 0) { + opts = {}; + } - /** - * 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} - */ - ; + return new Formatter(locale, opts); + }; - _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} - */ - ; + Formatter.parseFormat = function parseFormat(fmt) { + var current = null, + currentFull = "", + bracketed = false; + var splits = []; - _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} - */ - ; + for (var i = 0; i < fmt.length; i++) { + var c = fmt.charAt(i); - _proto.equals = function equals(otherZone) { - throw new ZoneIsAbstractError(); - } - /** - * Return whether this Zone is valid. - * @abstract - * @type {boolean} - */ - ; + if (c === "'") { + if (currentFull.length > 0) { + splits.push({ + literal: bracketed, + val: currentFull + }); + } - _createClass(Zone, [{ - key: "type", + 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 + }); + } - /** - * The type of zone - * @abstract - * @type {string} - */ - get: function get() { - throw new ZoneIsAbstractError(); + currentFull = c; + current = c; + } } - /** - * The name of this zone. - * @abstract - * @type {string} - */ - }, { - key: "name", - get: function get() { - throw new ZoneIsAbstractError(); + if (currentFull.length > 0) { + splits.push({ + literal: bracketed, + val: currentFull + }); } - /** - * 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 splits; + }; - return Zone; - }(); + Formatter.macroTokenToFormatOpts = function macroTokenToFormatOpts(token) { + return _macroTokenToFormatOpts[token]; + }; - var singleton = null; - /** - * Represents the local zone for this Javascript environment. - * @implements {Zone} - */ + function Formatter(locale, formatOpts) { + this.opts = formatOpts; + this.loc = locale; + this.systemLoc = null; + } - var LocalZone = - /*#__PURE__*/ - function (_Zone) { - _inheritsLoose(LocalZone, _Zone); - - function LocalZone() { - return _Zone.apply(this, arguments) || this; - } + var _proto = Formatter.prototype; - var _proto = LocalZone.prototype; + _proto.formatWithSystemDefault = function formatWithSystemDefault(dt, opts) { + if (this.systemLoc === null) { + this.systemLoc = this.loc.redefaultToSystem(); + } - /** @override **/ - _proto.offsetName = function offsetName(ts, _ref) { - var format = _ref.format, - locale = _ref.locale; - return parseZoneInfo(ts, format, locale); - } - /** @override **/ - ; + var df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.format(); + }; - _proto.formatOffset = function formatOffset$1(ts, format) { - return formatOffset(this.offset(ts), format); - } - /** @override **/ - ; + _proto.formatDateTime = function formatDateTime(dt, opts) { + if (opts === void 0) { + opts = {}; + } - _proto.offset = function offset(ts) { - return -new Date(ts).getTimezoneOffset(); - } - /** @override **/ - ; + var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.format(); + }; - _proto.equals = function equals(otherZone) { - return otherZone.type === "local"; - } - /** @override **/ - ; + _proto.formatDateTimeParts = function formatDateTimeParts(dt, opts) { + if (opts === void 0) { + opts = {}; + } - _createClass(LocalZone, [{ - key: "type", + var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.formatToParts(); + }; - /** @override **/ - get: function get() { - return "local"; + _proto.resolvedOptions = function resolvedOptions(dt, opts) { + if (opts === void 0) { + opts = {}; } - /** @override **/ - }, { - key: "name", - get: function get() { - if (hasIntl()) { - return new Intl.DateTimeFormat().resolvedOptions().timeZone; - } else return "local"; - } - /** @override **/ + var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); + return df.resolvedOptions(); + }; - }, { - key: "universal", - get: function get() { - return false; + _proto.num = function num(n, p) { + if (p === void 0) { + p = 0; } - }, { - key: "isValid", - get: function get() { - return true; + + // we get some perf out of doing this here, annoyingly + if (this.opts.forceSimple) { + return padStart(n, p); } - }], [{ - key: "instance", - /** - * Get a singleton instance of the local zone - * @return {LocalZone} - */ - get: function get() { - if (singleton === null) { - singleton = new LocalZone(); - } + var opts = Object.assign({}, this.opts); - return singleton; + if (p > 0) { + opts.padTo = p; } - }]); - return LocalZone; - }(Zone); + return this.loc.numberFormatter(opts).format(n); + }; - var matchingRegex = RegExp("^" + ianaRegex.source + "$"); - var dtfCache = {}; + _proto.formatDateTimeFromString = function formatDateTimeFromString(dt, fmt) { + var _this = this; - 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" - }); - } + 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 dtfCache[zone]; - } + 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); - var typeToPos = { - year: 0, - month: 1, - day: 2, - hour: 3, - minute: 4, - second: 5 - }; + 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); - 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]; - } + case "u": // falls through - function partsOffset(dtf, date) { - var formatted = dtf.formatToParts(date), - filled = []; + case "SSS": + return _this.num(dt.millisecond, 3); + // seconds - for (var i = 0; i < formatted.length; i++) { - var _formatted$i = formatted[i], - type = _formatted$i.type, - value = _formatted$i.value, - pos = typeToPos[type]; + case "s": + return _this.num(dt.second); - if (!isUndefined(pos)) { - filled[pos] = parseInt(value, 10); - } - } + case "ss": + return _this.num(dt.second, 2); + // minutes - return filled; - } + case "m": + return _this.num(dt.minute); - var ianaZoneCache = {}; - /** - * A zone identified by an IANA identifier, like America/New_York - * @implements {Zone} - */ + case "mm": + return _this.num(dt.minute, 2); + // hours - var IANAZone = - /*#__PURE__*/ - function (_Zone) { - _inheritsLoose(IANAZone, _Zone); + case "h": + return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12); - /** - * @param {string} name - Zone name - * @return {IANAZone} - */ - IANAZone.create = function create(name) { - if (!ianaZoneCache[name]) { - ianaZoneCache[name] = new IANAZone(name); - } + case "hh": + return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2); - return ianaZoneCache[name]; - } - /** - * Reset local caches. Should only be necessary in testing scenarios. - * @return {void} - */ - ; + case "H": + return _this.num(dt.hour); - 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} - */ - ; + case "HH": + return _this.num(dt.hour, 2); + // offset - 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} - */ - ; + case "Z": + // like +6 + return formatOffset({ + format: "narrow", + allowZ: _this.opts.allowZ + }); - IANAZone.isValidZone = function isValidZone(zone) { - try { - new Intl.DateTimeFormat("en-US", { - timeZone: zone - }).format(); - return true; - } catch (e) { - return false; - } - } // Etc/GMT+8 -> -480 + case "ZZ": + // like +06:00 + return formatOffset({ + format: "short", + allowZ: _this.opts.allowZ + }); - /** @ignore */ - ; + case "ZZZ": + // like +0600 + return formatOffset({ + format: "techie", + allowZ: false + }); - IANAZone.parseGMTOffset = function parseGMTOffset(specifier) { - if (specifier) { - var match = specifier.match(/^Etc\/GMT([+-]\d{1,2})$/i); + case "ZZZZ": + // like EST + return dt.zone.offsetName(dt.ts, { + format: "short", + locale: _this.loc.locale + }); - if (match) { - return -60 * parseInt(match[1]); - } - } + case "ZZZZZ": + // like Eastern Standard Time + return dt.zone.offsetName(dt.ts, { + format: "long", + locale: _this.loc.locale + }); + // zone - return null; - }; + case "z": + // like America/New_York + return dt.zoneName; + // meridiems - function IANAZone(name) { - var _this; + case "a": + return meridiem(); + // dates - _this = _Zone.call(this) || this; - /** @private **/ + case "d": + return useDateTimeFormatter ? string({ + day: "numeric" + }, "day") : _this.num(dt.day); - _this.zoneName = name; - /** @private **/ + case "dd": + return useDateTimeFormatter ? string({ + day: "2-digit" + }, "day") : _this.num(dt.day, 2); + // weekdays - standalone - _this.valid = IANAZone.isValidZone(name); - return _this; - } - /** @override **/ + case "c": + // like 1 + return _this.num(dt.weekday); + case "ccc": + // like 'Tues' + return weekday("short", true); - var _proto = IANAZone.prototype; + case "cccc": + // like 'Tuesday' + return weekday("long", true); - /** @override **/ - _proto.offsetName = function offsetName(ts, _ref) { - var format = _ref.format, - locale = _ref.locale; - return parseZoneInfo(ts, format, locale, this.name); - } - /** @override **/ - ; + case "ccccc": + // like 'T' + return weekday("narrow", true); + // weekdays - format - _proto.formatOffset = function formatOffset$1(ts, format) { - return formatOffset(this.offset(ts), format); - } - /** @override **/ - ; + case "E": + // like 1 + return _this.num(dt.weekday); - _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]; + case "EEE": + // like 'Tues' + return weekday("short", false); - var asUTC = objToLocalTS({ - year: year, - month: month, - day: day, - hour: hour, - minute: minute, - second: second, - millisecond: 0 - }); - var asTS = date.valueOf(); - asTS -= asTS % 1000; - return (asUTC - asTS) / (60 * 1000); - } - /** @override **/ - ; + case "EEEE": + // like 'Tuesday' + return weekday("long", false); - _proto.equals = function equals(otherZone) { - return otherZone.type === "iana" && otherZone.name === this.name; - } - /** @override **/ - ; + case "EEEEE": + // like 'T' + return weekday("narrow", false); + // months - standalone - _createClass(IANAZone, [{ - key: "type", - get: function get() { - return "iana"; - } - /** @override **/ + case "L": + // like 1 + return useDateTimeFormatter ? string({ + month: "numeric", + day: "numeric" + }, "month") : _this.num(dt.month); - }, { - key: "name", - get: function get() { - return this.zoneName; - } - /** @override **/ + case "LL": + // like 01, doesn't seem to work + return useDateTimeFormatter ? string({ + month: "2-digit", + day: "numeric" + }, "month") : _this.num(dt.month, 2); - }, { - key: "universal", - get: function get() { - return false; - } - }, { - key: "isValid", - get: function get() { - return this.valid; - } - }]); + case "LLL": + // like Jan + return month("short", true); - return IANAZone; - }(Zone); + case "LLLL": + // like January + return month("long", true); - var singleton$1 = null; - /** - * A zone with a fixed offset (i.e. no DST) - * @implements {Zone} - */ + case "LLLLL": + // like J + return month("narrow", true); + // months - format - var FixedOffsetZone = - /*#__PURE__*/ - function (_Zone) { - _inheritsLoose(FixedOffsetZone, _Zone); + case "M": + // like 1 + return useDateTimeFormatter ? string({ + month: "numeric" + }, "month") : _this.num(dt.month); - /** - * 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} - */ - ; + case "MM": + // like 01 + return useDateTimeFormatter ? string({ + month: "2-digit" + }, "month") : _this.num(dt.month, 2); - FixedOffsetZone.parseSpecifier = function parseSpecifier(s) { - if (s) { - var r = s.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); + case "MMM": + // like Jan + return month("short", false); - if (r) { - return new FixedOffsetZone(signedOffset(r[1], r[2])); - } - } + case "MMMM": + // like January + return month("long", false); - return null; - }; + case "MMMMM": + // like J + return month("narrow", false); + // years - _createClass(FixedOffsetZone, null, [{ - key: "utcInstance", + case "y": + // like 2014 + return useDateTimeFormatter ? string({ + year: "numeric" + }, "year") : _this.num(dt.year); - /** - * Get a singleton instance of UTC - * @return {FixedOffsetZone} - */ - get: function get() { - if (singleton$1 === null) { - singleton$1 = new FixedOffsetZone(0); - } + 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 - return singleton$1; - } - }]); + case "G": + // like AD + return era("short"); - function FixedOffsetZone(offset) { - var _this; + case "GG": + // like Anno Domini + return era("long"); - _this = _Zone.call(this) || this; - /** @private **/ + case "GGGGG": + return era("narrow"); - _this.fixed = offset; - return _this; - } - /** @override **/ + case "kk": + return _this.num(dt.weekYear.toString().slice(-2), 2); + case "kkkk": + return _this.num(dt.weekYear, 4); - var _proto = FixedOffsetZone.prototype; + case "W": + return _this.num(dt.weekNumber); - /** @override **/ - _proto.offsetName = function offsetName() { - return this.name; - } - /** @override **/ - ; + case "WW": + return _this.num(dt.weekNumber, 2); - _proto.formatOffset = function formatOffset$1(ts, format) { - return formatOffset(this.fixed, format); - } - /** @override **/ - ; + case "o": + return _this.num(dt.ordinal); - /** @override **/ - _proto.offset = function offset() { - return this.fixed; - } - /** @override **/ - ; + case "ooo": + return _this.num(dt.ordinal, 3); - _proto.equals = function equals(otherZone) { - return otherZone.type === "fixed" && otherZone.fixed === this.fixed; - } - /** @override **/ - ; + case "q": + // like 1 + return _this.num(dt.quarter); - _createClass(FixedOffsetZone, [{ - key: "type", - get: function get() { - return "fixed"; - } - /** @override **/ + case "qq": + // like 01 + return _this.num(dt.quarter, 2); - }, { - 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; - } - }]); + case "X": + return _this.num(Math.floor(dt.ts / 1000)); - return FixedOffsetZone; - }(Zone); + case "x": + return _this.num(dt.ts); - /** - * A zone that failed to parse. You should never need to instantiate this. - * @implements {Zone} - */ + default: + return maybeMacro(token); + } + }; - var InvalidZone = - /*#__PURE__*/ - function (_Zone) { - _inheritsLoose(InvalidZone, _Zone); + return stringifyTokens(Formatter.parseFormat(fmt), tokenToString); + }; - function InvalidZone(zoneName) { - var _this; + _proto.formatDurationFromString = function formatDurationFromString(dur, fmt) { + var _this2 = this; - _this = _Zone.call(this) || this; - /** @private */ + var tokenToField = function tokenToField(token) { + switch (token[0]) { + case "S": + return "millisecond"; - _this.zoneName = zoneName; - return _this; - } - /** @override **/ + case "s": + return "second"; + case "m": + return "minute"; - var _proto = InvalidZone.prototype; + case "h": + return "hour"; - /** @override **/ - _proto.offsetName = function offsetName() { - return null; - } - /** @override **/ - ; + case "d": + return "day"; - _proto.formatOffset = function formatOffset() { - return ""; - } - /** @override **/ - ; + case "M": + return "month"; - _proto.offset = function offset() { - return NaN; - } - /** @override **/ - ; + case "y": + return "year"; - _proto.equals = function equals() { - return false; - } - /** @override **/ - ; + default: + return null; + } + }, + tokenToString = function tokenToString(lildur) { + return function (token) { + var mapped = tokenToField(token); - _createClass(InvalidZone, [{ - key: "type", - get: function get() { - return "invalid"; - } - /** @override **/ + if (mapped) { + return _this2.num(lildur.get(mapped), token.length); + } else { + return token; + } + }; + }, + tokens = Formatter.parseFormat(fmt), + realTokens = tokens.reduce(function (found, _ref2) { + var literal = _ref2.literal, + val = _ref2.val; + return literal ? found : found.concat(val); + }, []), + collapsed = dur.shiftTo.apply(dur, realTokens.map(tokenToField).filter(function (t) { + return t; + })); - }, { - key: "name", - get: function get() { - return this.zoneName; - } - /** @override **/ + return stringifyTokens(tokens, tokenToString(collapsed)); + }; - }, { - key: "universal", - get: function get() { - return false; - } - }, { - key: "isValid", - get: function get() { - return false; - } - }]); + return Formatter; + }(); - return InvalidZone; - }(Zone); + var Invalid = + /*#__PURE__*/ + function () { + function Invalid(reason, explanation) { + this.reason = reason; + this.explanation = explanation; + } - /** - * @private - */ - function normalizeZone(input, defaultZone) { - var offset; + var _proto = Invalid.prototype; - 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); - } - } + _proto.toMessage = function toMessage() { + if (this.explanation) { + return this.reason + ": " + this.explanation; + } else { + return this.reason; + } + }; + + return Invalid; + }(); - 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. + * @interface */ - - var Settings = + var Zone = /*#__PURE__*/ function () { - function Settings() {} + function Zone() {} + + var _proto = Zone.prototype; /** - * Reset Luxon's global caches. Should only be necessary in testing scenarios. - * @return {void} + * 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} */ - Settings.resetCaches = function resetCaches() { - Locale.resetCache(); - IANAZone.resetCache(); - }; + _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} + */ + ; - _createClass(Settings, null, [{ - key: "now", + _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} + */ + ; - /** - * 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} - */ + _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} + */ + ; - }, { - 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} - */ + _proto.equals = function equals(otherZone) { + throw new ZoneIsAbstractError(); + } + /** + * Return whether this Zone is valid. + * @abstract + * @type {boolean} + */ + ; - }, { - key: "defaultZone", - get: function get() { - return defaultZone || LocalZone.instance; - } - /** - * Get the default locale to create DateTimes with. Does not affect existing instances. - * @type {string} - */ + _createClass(Zone, [{ + key: "type", - }, { - 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. + * The type of zone + * @abstract * @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; + throw new ZoneIsAbstractError(); } /** - * Get the default output calendar to create DateTimes with. Does not affect existing instances. + * The name of this zone. + * @abstract * @type {string} */ }, { - key: "defaultOutputCalendar", + key: "name", 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; + throw new ZoneIsAbstractError(); } /** - * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * Returns whether the offset is known to be fixed for the whole year. + * @abstract * @type {boolean} */ }, { - key: "throwOnInvalid", + key: "universal", get: function get() { - return throwOnInvalid; + throw new ZoneIsAbstractError(); } - /** - * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals - * @type {boolean} - */ - , - set: function set(t) { - throwOnInvalid = t; + }, { + key: "isValid", + get: function get() { + throw new ZoneIsAbstractError(); } }]); - return Settings; + return Zone; }(); - function stringifyTokens(splits, tokenToString) { - var s = ""; - - for (var _iterator = splits, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } + var singleton = null; + /** + * Represents the local zone for this Javascript environment. + * @implements {Zone} + */ - var token = _ref; + var LocalZone = + /*#__PURE__*/ + function (_Zone) { + _inheritsLoose(LocalZone, _Zone); - if (token.literal) { - s += token.val; - } else { - s += tokenToString(token.val); - } + function LocalZone() { + return _Zone.apply(this, arguments) || this; } - return s; - } + var _proto = LocalZone.prototype; - 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 - */ + /** @override **/ + _proto.offsetName = function offsetName(ts, _ref) { + var format = _ref.format, + locale = _ref.locale; + return parseZoneInfo(ts, format, locale); + } + /** @override **/ + ; - var Formatter = - /*#__PURE__*/ - function () { - Formatter.create = function create(locale, opts) { - if (opts === void 0) { - opts = {}; - } + _proto.formatOffset = function formatOffset$1(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + ; - return new Formatter(locale, opts); - }; + _proto.offset = function offset(ts) { + return -new Date(ts).getTimezoneOffset(); + } + /** @override **/ + ; - Formatter.parseFormat = function parseFormat(fmt) { - var current = null, - currentFull = "", - bracketed = false; - var splits = []; + _proto.equals = function equals(otherZone) { + return otherZone.type === "local"; + } + /** @override **/ + ; - for (var i = 0; i < fmt.length; i++) { - var c = fmt.charAt(i); + _createClass(LocalZone, [{ + key: "type", - if (c === "'") { - if (currentFull.length > 0) { - splits.push({ - literal: bracketed, - val: currentFull - }); - } + /** @override **/ + get: function get() { + return "local"; + } + /** @override **/ - 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 - }); - } + }, { + key: "name", + get: function get() { + if (hasIntl()) { + return new Intl.DateTimeFormat().resolvedOptions().timeZone; + } else return "local"; + } + /** @override **/ - currentFull = c; - current = c; - } + }, { + key: "universal", + get: function get() { + return false; + } + }, { + key: "isValid", + get: function get() { + return true; } + }], [{ + key: "instance", - if (currentFull.length > 0) { - splits.push({ - literal: bracketed, - val: currentFull - }); + /** + * Get a singleton instance of the local zone + * @return {LocalZone} + */ + get: function get() { + if (singleton === null) { + singleton = new LocalZone(); + } + + return singleton; } + }]); - return splits; - }; + return LocalZone; + }(Zone); - Formatter.macroTokenToFormatOpts = function macroTokenToFormatOpts(token) { - return _macroTokenToFormatOpts[token]; - }; + var matchingRegex = RegExp("^" + ianaRegex.source + "$"); + var dtfCache = {}; - function Formatter(locale, formatOpts) { - this.opts = formatOpts; - this.loc = locale; - this.systemLoc = null; + 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" + }); } - var _proto = Formatter.prototype; + return dtfCache[zone]; + } - _proto.formatWithSystemDefault = function formatWithSystemDefault(dt, opts) { - if (this.systemLoc === null) { - this.systemLoc = this.loc.redefaultToSystem(); - } + var typeToPos = { + year: 0, + month: 1, + day: 2, + hour: 3, + minute: 4, + second: 5 + }; - var df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts)); - return df.format(); - }; + 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]; + } - _proto.formatDateTime = function formatDateTime(dt, opts) { - if (opts === void 0) { - opts = {}; - } + function partsOffset(dtf, date) { + var formatted = dtf.formatToParts(date), + filled = []; - var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); - return df.format(); - }; + for (var i = 0; i < formatted.length; i++) { + var _formatted$i = formatted[i], + type = _formatted$i.type, + value = _formatted$i.value, + pos = typeToPos[type]; - _proto.formatDateTimeParts = function formatDateTimeParts(dt, opts) { - if (opts === void 0) { - opts = {}; + if (!isUndefined(pos)) { + filled[pos] = parseInt(value, 10); } + } - 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 = {}; - } + return filled; + } - var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts)); - return df.resolvedOptions(); - }; + var ianaZoneCache = {}; + /** + * A zone identified by an IANA identifier, like America/New_York + * @implements {Zone} + */ - _proto.num = function num(n, p) { - if (p === void 0) { - p = 0; - } + var IANAZone = + /*#__PURE__*/ + function (_Zone) { + _inheritsLoose(IANAZone, _Zone); - // we get some perf out of doing this here, annoyingly - if (this.opts.forceSimple) { - return padStart(n, p); + /** + * @param {string} name - Zone name + * @return {IANAZone} + */ + IANAZone.create = function create(name) { + if (!ianaZoneCache[name]) { + ianaZoneCache[name] = new IANAZone(name); } - var opts = Object.assign({}, this.opts); - - if (p > 0) { - opts.padTo = p; - } + return ianaZoneCache[name]; + } + /** + * Reset local caches. Should only be necessary in testing scenarios. + * @return {void} + */ + ; - return this.loc.numberFormatter(opts).format(n); - }; + 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} + */ + ; - _proto.formatDateTimeFromString = function formatDateTimeFromString(dt, fmt) { - var _this = this; + 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} + */ + ; - 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"; - } + IANAZone.isValidZone = function isValidZone(zone) { + try { + new Intl.DateTimeFormat("en-US", { + timeZone: zone + }).format(); + return true; + } catch (e) { + return false; + } + } // Etc/GMT+8 -> -480 - 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); + /** @ignore */ + ; - 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); + IANAZone.parseGMTOffset = function parseGMTOffset(specifier) { + if (specifier) { + var match = specifier.match(/^Etc\/GMT([+-]\d{1,2})$/i); - case "u": // falls through + if (match) { + return -60 * parseInt(match[1]); + } + } - case "SSS": - return _this.num(dt.millisecond, 3); - // seconds + return null; + }; - case "s": - return _this.num(dt.second); + function IANAZone(name) { + var _this; - case "ss": - return _this.num(dt.second, 2); - // minutes + _this = _Zone.call(this) || this; + /** @private **/ - case "m": - return _this.num(dt.minute); + _this.zoneName = name; + /** @private **/ - case "mm": - return _this.num(dt.minute, 2); - // hours + _this.valid = IANAZone.isValidZone(name); + return _this; + } + /** @override **/ - 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); + var _proto = IANAZone.prototype; - case "H": - return _this.num(dt.hour); + /** @override **/ + _proto.offsetName = function offsetName(ts, _ref) { + var format = _ref.format, + locale = _ref.locale; + return parseZoneInfo(ts, format, locale, this.name); + } + /** @override **/ + ; - case "HH": - return _this.num(dt.hour, 2); - // offset + _proto.formatOffset = function formatOffset$1(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + ; - case "Z": - // like +6 - return formatOffset({ - format: "narrow", - allowZ: _this.opts.allowZ - }); + _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; - case "ZZ": - // like +06:00 - return formatOffset({ - format: "short", - allowZ: _this.opts.allowZ - }); + var asUTC = objToLocalTS({ + year: year, + month: month, + day: day, + hour: adjustedHour, + minute: minute, + second: second, + millisecond: 0 + }); + var asTS = date.valueOf(); + asTS -= asTS % 1000; + return (asUTC - asTS) / (60 * 1000); + } + /** @override **/ + ; - case "ZZZ": - // like +0600 - return formatOffset({ - format: "techie", - allowZ: false - }); + _proto.equals = function equals(otherZone) { + return otherZone.type === "iana" && otherZone.name === this.name; + } + /** @override **/ + ; - case "ZZZZ": - // like EST - return dt.zone.offsetName(dt.ts, { - format: "short", - locale: _this.loc.locale - }); + _createClass(IANAZone, [{ + key: "type", + get: function get() { + return "iana"; + } + /** @override **/ - case "ZZZZZ": - // like Eastern Standard Time - return dt.zone.offsetName(dt.ts, { - format: "long", - locale: _this.loc.locale - }); - // zone + }, { + key: "name", + get: function get() { + return this.zoneName; + } + /** @override **/ - case "z": - // like America/New_York - return dt.zoneName; - // meridiems + }, { + key: "universal", + get: function get() { + return false; + } + }, { + key: "isValid", + get: function get() { + return this.valid; + } + }]); - case "a": - return meridiem(); - // dates + return IANAZone; + }(Zone); - case "d": - return useDateTimeFormatter ? string({ - day: "numeric" - }, "day") : _this.num(dt.day); + var singleton$1 = null; + /** + * A zone with a fixed offset (meaning no DST) + * @implements {Zone} + */ - case "dd": - return useDateTimeFormatter ? string({ - day: "2-digit" - }, "day") : _this.num(dt.day, 2); - // weekdays - standalone + var FixedOffsetZone = + /*#__PURE__*/ + function (_Zone) { + _inheritsLoose(FixedOffsetZone, _Zone); - case "c": - // like 1 - return _this.num(dt.weekday); + /** + * 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} + */ + ; - case "ccc": - // like 'Tues' - return weekday("short", true); + FixedOffsetZone.parseSpecifier = function parseSpecifier(s) { + if (s) { + var r = s.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); - case "cccc": - // like 'Tuesday' - return weekday("long", true); + if (r) { + return new FixedOffsetZone(signedOffset(r[1], r[2])); + } + } - case "ccccc": - // like 'T' - return weekday("narrow", true); - // weekdays - format + return null; + }; - case "E": - // like 1 - return _this.num(dt.weekday); + _createClass(FixedOffsetZone, null, [{ + key: "utcInstance", - case "EEE": - // like 'Tues' - return weekday("short", false); + /** + * Get a singleton instance of UTC + * @return {FixedOffsetZone} + */ + get: function get() { + if (singleton$1 === null) { + singleton$1 = new FixedOffsetZone(0); + } - case "EEEE": - // like 'Tuesday' - return weekday("long", false); + return singleton$1; + } + }]); - case "EEEEE": - // like 'T' - return weekday("narrow", false); - // months - standalone + function FixedOffsetZone(offset) { + var _this; - case "L": - // like 1 - return useDateTimeFormatter ? string({ - month: "numeric", - day: "numeric" - }, "month") : _this.num(dt.month); + _this = _Zone.call(this) || this; + /** @private **/ - case "LL": - // like 01, doesn't seem to work - return useDateTimeFormatter ? string({ - month: "2-digit", - day: "numeric" - }, "month") : _this.num(dt.month, 2); + _this.fixed = offset; + return _this; + } + /** @override **/ - case "LLL": - // like Jan - return month("short", true); - case "LLLL": - // like January - return month("long", true); + var _proto = FixedOffsetZone.prototype; - case "LLLLL": - // like J - return month("narrow", true); - // months - format + /** @override **/ + _proto.offsetName = function offsetName() { + return this.name; + } + /** @override **/ + ; - case "M": - // like 1 - return useDateTimeFormatter ? string({ - month: "numeric" - }, "month") : _this.num(dt.month); + _proto.formatOffset = function formatOffset$1(ts, format) { + return formatOffset(this.fixed, format); + } + /** @override **/ + ; - case "MM": - // like 01 - return useDateTimeFormatter ? string({ - month: "2-digit" - }, "month") : _this.num(dt.month, 2); + /** @override **/ + _proto.offset = function offset() { + return this.fixed; + } + /** @override **/ + ; - case "MMM": - // like Jan - return month("short", false); + _proto.equals = function equals(otherZone) { + return otherZone.type === "fixed" && otherZone.fixed === this.fixed; + } + /** @override **/ + ; - case "MMMM": - // like January - return month("long", false); + _createClass(FixedOffsetZone, [{ + key: "type", + get: function get() { + return "fixed"; + } + /** @override **/ - case "MMMMM": - // like J - return month("narrow", false); - // years + }, { + 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; + } + }]); - case "y": - // like 2014 - return useDateTimeFormatter ? string({ - year: "numeric" - }, "year") : _this.num(dt.year); + return FixedOffsetZone; + }(Zone); - case "yy": - // like 14 - return useDateTimeFormatter ? string({ - year: "2-digit" - }, "year") : _this.num(dt.year.toString().slice(-2), 2); + /** + * A zone that failed to parse. You should never need to instantiate this. + * @implements {Zone} + */ - case "yyyy": - // like 0012 - return useDateTimeFormatter ? string({ - year: "numeric" - }, "year") : _this.num(dt.year, 4); + var InvalidZone = + /*#__PURE__*/ + function (_Zone) { + _inheritsLoose(InvalidZone, _Zone); - case "yyyyyy": - // like 000012 - return useDateTimeFormatter ? string({ - year: "numeric" - }, "year") : _this.num(dt.year, 6); - // eras + function InvalidZone(zoneName) { + var _this; - case "G": - // like AD - return era("short"); + _this = _Zone.call(this) || this; + /** @private */ - case "GG": - // like Anno Domini - return era("long"); + _this.zoneName = zoneName; + return _this; + } + /** @override **/ - case "GGGGG": - return era("narrow"); - case "kk": - return _this.num(dt.weekYear.toString().slice(-2), 2); + var _proto = InvalidZone.prototype; - case "kkkk": - return _this.num(dt.weekYear, 4); + /** @override **/ + _proto.offsetName = function offsetName() { + return null; + } + /** @override **/ + ; - case "W": - return _this.num(dt.weekNumber); + _proto.formatOffset = function formatOffset() { + return ""; + } + /** @override **/ + ; - case "WW": - return _this.num(dt.weekNumber, 2); + _proto.offset = function offset() { + return NaN; + } + /** @override **/ + ; - case "o": - return _this.num(dt.ordinal); + _proto.equals = function equals() { + return false; + } + /** @override **/ + ; - case "ooo": - return _this.num(dt.ordinal, 3); + _createClass(InvalidZone, [{ + key: "type", + get: function get() { + return "invalid"; + } + /** @override **/ - case "q": - // like 1 - return _this.num(dt.quarter); + }, { + key: "name", + get: function get() { + return this.zoneName; + } + /** @override **/ - case "qq": - // like 01 - return _this.num(dt.quarter, 2); + }, { + key: "universal", + get: function get() { + return false; + } + }, { + key: "isValid", + get: function get() { + return false; + } + }]); - case "X": - return _this.num(Math.floor(dt.ts / 1000)); + return InvalidZone; + }(Zone); - case "x": - return _this.num(dt.ts); + /** + * @private + */ + function normalizeZone(input, defaultZone) { + var offset; - default: - return maybeMacro(token); - } - }; + 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); + } + } - return stringifyTokens(Formatter.parseFormat(fmt), tokenToString); - }; + 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. + */ - _proto.formatDurationFromString = function formatDurationFromString(dur, fmt) { - var _this2 = this; - var tokenToField = function tokenToField(token) { - switch (token[0]) { - case "S": - return "millisecond"; + var Settings = + /*#__PURE__*/ + function () { + function Settings() {} - case "s": - return "second"; + /** + * Reset Luxon's global caches. Should only be necessary in testing scenarios. + * @return {void} + */ + Settings.resetCaches = function resetCaches() { + Locale.resetCache(); + IANAZone.resetCache(); + }; - case "m": - return "minute"; + _createClass(Settings, null, [{ + key: "now", - case "h": - return "hour"; + /** + * 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} + */ - case "d": - return "day"; + }, { + 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} + */ - case "M": - return "month"; + }, { + key: "defaultZone", + get: function get() { + return defaultZone || LocalZone.instance; + } + /** + * Get the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ - case "y": - return "year"; + }, { + 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} + */ - default: - return null; - } - }, - tokenToString = function tokenToString(lildur) { - return function (token) { - var mapped = tokenToField(token); + }, { + 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} + */ - if (mapped) { - return _this2.num(lildur.get(mapped), token.length); - } else { - return token; - } - }; - }, - tokens = Formatter.parseFormat(fmt), - realTokens = tokens.reduce(function (found, _ref2) { - var literal = _ref2.literal, - val = _ref2.val; - return literal ? found : found.concat(val); - }, []), - collapsed = dur.shiftTo.apply(dur, realTokens.map(tokenToField).filter(function (t) { - return t; - })); + }, { + 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} + */ - return stringifyTokens(tokens, tokenToString(collapsed)); - }; + }, { + 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 Formatter; + return Settings; }(); var intlDTCache = {}; @@ -2240,7 +2265,7 @@ var luxon = (function (exports) { var intlNumCache = {}; - function getCachendINF(locString, opts) { + function getCachedINF(locString, opts) { if (opts === void 0) { opts = {}; } @@ -2258,7 +2283,7 @@ var luxon = (function (exports) { var intlRelCache = {}; - function getCachendRTF(locString, opts) { + function getCachedRTF(locString, opts) { if (opts === void 0) { opts = {}; } @@ -2399,7 +2424,7 @@ var luxon = (function (exports) { useGrouping: false }; if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo; - this.inf = getCachendINF(intl, intlOpts); + this.inf = getCachedINF(intl, intlOpts); } } @@ -2517,7 +2542,7 @@ var luxon = (function (exports) { }, opts); if (!isEnglish && hasRelative()) { - this.rtf = getCachendRTF(intl, opts); + this.rtf = getCachedRTF(intl, opts); } } @@ -3107,27 +3132,6 @@ var luxon = (function (exports) { return parse(s, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]); } - 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; - }(); - var INVALID = "Invalid Duration"; // unit conversion constants var lowOrderMatrix = { @@ -3542,7 +3546,9 @@ var luxon = (function (exports) { 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) s += this.seconds + this.milliseconds / 1000 + "S"; + 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; } @@ -3609,6 +3615,28 @@ var luxon = (function (exports) { 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 _i2 = 0, _Object$keys = Object.keys(this.values); _i2 < _Object$keys.length; _i2++) { + var k = _Object$keys[_i2]; + 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' @@ -3721,8 +3749,8 @@ var luxon = (function (exports) { var lastUnit; normalizeValues(this.matrix, vals); - for (var _i2 = 0, _orderedUnits2 = orderedUnits; _i2 < _orderedUnits2.length; _i2++) { - var k = _orderedUnits2[_i2]; + for (var _i3 = 0, _orderedUnits2 = orderedUnits; _i3 < _orderedUnits2.length; _i3++) { + var k = _orderedUnits2[_i3]; if (units.indexOf(k) >= 0) { lastUnit = k; @@ -3777,8 +3805,8 @@ var luxon = (function (exports) { if (!this.isValid) return this; var negated = {}; - for (var _i3 = 0, _Object$keys = Object.keys(this.values); _i3 < _Object$keys.length; _i3++) { - var k = _Object$keys[_i3]; + for (var _i4 = 0, _Object$keys2 = Object.keys(this.values); _i4 < _Object$keys2.length; _i4++) { + var k = _Object$keys2[_i4]; negated[k] = -this.values[k]; } @@ -3807,8 +3835,8 @@ var luxon = (function (exports) { return false; } - for (var _i4 = 0, _orderedUnits3 = orderedUnits; _i4 < _orderedUnits3.length; _i4++) { - var u = _orderedUnits3[_i4]; + for (var _i5 = 0, _orderedUnits3 = orderedUnits; _i5 < _orderedUnits3.length; _i5++) { + var u = _orderedUnits3[_i5]; if (this.values[u] !== other.values[u]) { return false; @@ -3989,7 +4017,7 @@ var luxon = (function (exports) { * * **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 toFormat}, and {@link toDuration}. + * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}. */ @@ -4386,7 +4414,7 @@ var luxon = (function (exports) { /** * 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, i.e., the intervals don't intersect. + * Returns null if the intersection is empty, meaning, the intervals don't intersect. * @param {Interval} other * @return {Interval} */ @@ -4547,6 +4575,31 @@ var luxon = (function (exports) { 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. @@ -4614,7 +4667,7 @@ var luxon = (function (exports) { return this.isValid ? this.e : null; } /** - * Returns whether this Interval's end is at least its start, i.e. that the Interval isn't 'backwards'. + * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'. * @type {boolean} */ @@ -5253,6 +5306,12 @@ var luxon = (function (exports) { case "m": return intUnit(oneOrTwo); + case "q": + return intUnit(oneOrTwo); + + case "qq": + return intUnit(two); + case "s": return intUnit(oneOrTwo); @@ -5348,6 +5407,7 @@ var luxon = (function (exports) { long: "EEEE" }, dayperiod: "a", + dayPeriod: "a", hour: { numeric: "h", "2-digit": "hh" @@ -5464,6 +5524,9 @@ var luxon = (function (exports) { case "k": return "weekYear"; + case "q": + return "quarter"; + default: return null; } @@ -5479,6 +5542,10 @@ var luxon = (function (exports) { 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; @@ -5990,6 +6057,8 @@ var luxon = (function (exports) { hours: "hour", minute: "minute", minutes: "minute", + quarter: "quarter", + quarters: "quarter", second: "second", seconds: "second", millisecond: "millisecond", @@ -6179,9 +6248,9 @@ var luxon = (function (exports) { * @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, i.e. a number between 0 and 59 - * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59 - * @param {number} [millisecond=0] - The millisecond of the second, i.e. a number between 0 and 999 + * @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 @@ -6217,9 +6286,9 @@ var luxon = (function (exports) { * @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, i.e. a number between 0 and 59 - * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59 - * @param {number} [millisecond=0] - The millisecond of the second, i.e. a number between 0 and 999 + * @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 @@ -6283,7 +6352,7 @@ var luxon = (function (exports) { }); } /** - * Create a DateTime from a number of milliseconds since the epoch (i.e. since 1 January 1970 00:00:00 UTC). Uses the default zone. + * 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 @@ -6313,7 +6382,7 @@ var luxon = (function (exports) { } } /** - * Create a DateTime from a number of seconds since the epoch (i.e. since 1 January 1970 00:00:00 UTC). Uses the default zone. + * 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 @@ -6971,7 +7040,7 @@ var luxon = (function (exports) { return this.set(o); } /** - * "Set" this DateTime to the end (i.e. the last millisecond) of a unit of time + * "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' @@ -7037,7 +7106,7 @@ var luxon = (function (exports) { return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this) : INVALID$2; } /** - * Returns an array of format "parts", i.e. individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output. + * 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`. @@ -7767,7 +7836,7 @@ var luxon = (function (exports) { return this.isValid ? possiblyCachedWeekData(this).weekday : NaN; } /** - * Get the ordinal (i.e. the day of the year) + * Get the ordinal (meaning the day of the year) * @example DateTime.local(2017, 5, 25).ordinal //=> 145 * @type {number|DateTime} */ @@ -7843,7 +7912,7 @@ var luxon = (function (exports) { }, { key: "offset", get: function get() { - return this.isValid ? this.zone.offset(this.ts) : NaN; + return this.isValid ? +this.o : NaN; } /** * Get the short human name for the zone's current offset, for example "EST" or "EDT". diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js.map b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js.map index 87a44345a2..9cb160e4cc 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js.map +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.js.map @@ -1 +1 @@ -{"version":3,"file":"luxon.js","sources":["../../src/errors.js","../../src/impl/util.js","../../src/impl/formats.js","../../src/impl/english.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/formatter.js","../../src/impl/locale.js","../../src/impl/regexParser.js","../../src/impl/invalid.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 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 const offHour = parseInt(offHourStr, 10) || 0,\n offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nfunction 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 ? \"+\" : \"-\",\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","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\",\n d2 = \"2-digit\";\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: d2\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: d2,\n second: d2\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: d2,\n second: d2,\n timeZoneName: s\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: d2,\n second: d2,\n timeZoneName: l\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: d2,\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: d2,\n second: d2,\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: d2,\n second: d2,\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: d2,\n second: d2,\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: d2\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: d2,\n second: d2\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: d2\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: d2,\n second: d2\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: d2\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: d2,\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: d2,\n second: d2,\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: d2,\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: d2,\n second: d2,\n timeZoneName: l\n};\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","/* 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 const asUTC = objToLocalTS({ year, month, day, hour, minute, second, millisecond: 0 });\n let asTS = date.valueOf();\n asTS -= asTS % 1000;\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 (i.e. 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 * 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: false });\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","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 getCachendINF(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 getCachendRTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\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 = getCachendINF(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 = getCachendRTF(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 ,\n yearStr,\n monthStr,\n weekStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr,\n millisecondsStr\n ] = match;\n\n return [\n {\n years: parseInteger(yearStr),\n months: parseInteger(monthStr),\n weeks: parseInteger(weekStr),\n days: parseInteger(dayStr),\n hours: parseInteger(hourStr),\n minutes: parseInteger(minuteStr),\n seconds: parseInteger(secondStr),\n milliseconds: 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","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","import { isUndefined, isNumber, normalizeObject, hasOwnProperty } from \"./impl/util.js\";\nimport Locale from \"./impl/locale.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport { parseISODuration } from \"./impl/regexParser.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.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 s += this.seconds + this.milliseconds / 1000 + \"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 * 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 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 asISO 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, i.e. 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, i.e., 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 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\";\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 \"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 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 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.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\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) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ: true,\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 }\n) {\n let fmt = \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += \":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 += \"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 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 c = tsToObj(this.ts, zone.offset(this.ts));\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : zone.offset(this.ts);\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, i.e. a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, i.e. 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, i.e. a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, i.e. 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 (i.e. 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(\"fromMillis requires a numerical input\");\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 (i.e. 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 (i.e. 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.zone.offset(this.ts) : 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 = this.o - 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 (i.e. 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\", i.e. 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().toLocaleString(); //=> [\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 * @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 * @return {string}\n */\n toISO(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toISODate()}T${this.toISOTime(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @return {string}\n */\n toISODate() {\n let format = \"yyyy-MM-dd\";\n if (this.year > 9999) {\n format = \"+\" + format;\n }\n\n return toTechFormat(this, format);\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 * @example DateTime.utc().hour(7).minute(34).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().hour(7).minute(34).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @return {string}\n */\n toISOTime({ suppressMilliseconds = false, suppressSeconds = false, includeOffset = true } = {}) {\n return toTechTimeFormat(this, {\n suppressSeconds,\n suppressMilliseconds,\n includeOffset\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\");\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","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","n","Math","floor","padStart","input","repeat","slice","parseInteger","string","parseInt","parseMillis","fraction","f","parseFloat","roundTo","number","digits","towardZero","factor","rounder","trunc","round","isLeapYear","year","daysInYear","daysInMonth","month","modMonth","modYear","objToLocalTS","d","Date","UTC","day","hour","minute","second","millisecond","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","p1","last","p2","untruncateYear","parseZoneInfo","ts","offsetFormat","locale","timeZone","date","intlOpts","hour12","modified","assign","timeZoneName","intl","parsed","find","m","type","toLowerCase","value","without","format","included","diffed","substring","trimmed","replace","signedOffset","offHourStr","offMinuteStr","offHour","offMin","offMinSigned","asNumber","numericValue","Number","isNaN","normalizeObject","normalizer","nonUnitKeys","normalized","u","indexOf","v","formatOffset","offset","hours","minutes","abs","sign","base","RangeError","timeObject","ianaRegex","s","l","d2","DATE_SHORT","DATE_MED","DATE_FULL","DATE_HUGE","weekday","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","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","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","is","fmtValue","singular","lilUnits","fmtUnit","formatString","knownFormat","filtered","key","dateTimeHuge","Formats","Zone","offsetName","opts","equals","otherZone","singleton","LocalZone","getTimezoneOffset","resolvedOptions","matchingRegex","RegExp","source","dtfCache","makeDTF","zone","typeToPos","hackyOffset","dtf","formatted","exec","fMonth","fDay","fYear","fHour","fMinute","fSecond","partsOffset","filled","i","pos","ianaZoneCache","IANAZone","create","name","resetCache","isValidSpecifier","match","isValidZone","parseGMTOffset","specifier","zoneName","valid","asUTC","asTS","valueOf","FixedOffsetZone","instance","utcInstance","parseSpecifier","r","fixed","InvalidZone","NaN","normalizeZone","defaultZone","lowered","now","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","z","numberingSystem","outputCalendar","t","stringifyTokens","splits","tokenToString","token","literal","val","macroTokenToFormatOpts","D","DD","DDD","DDDD","tt","ttt","tttt","T","TT","TTT","TTTT","ff","fff","ffff","F","FF","FFF","FFFF","Formatter","parseFormat","fmt","current","currentFull","bracketed","c","charAt","push","formatOpts","loc","systemLoc","formatWithSystemDefault","redefaultToSystem","df","dtFormatter","formatDateTime","formatDateTimeParts","num","p","forceSimple","padTo","numberFormatter","formatDateTimeFromString","knownEnglish","listingMode","useDateTimeFormatter","extract","isOffsetFixed","allowZ","isValid","meridiem","English","standalone","maybeMacro","era","weekNumber","ordinal","quarter","formatDurationFromString","dur","tokenToField","lildur","mapped","get","tokens","realTokens","found","concat","collapsed","shiftTo","map","filter","intlDTCache","getCachedDTF","locString","intlNumCache","getCachendINF","inf","NumberFormat","intlRelCache","getCachendRTF","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","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","explanation","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","as","plus","duration","friendlyDuration","minus","negate","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","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","tokenForPart","part","buildRegex","re","handlers","matches","all","matchIndex","dateTimeFromMatches","toField","Z","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","_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","q","endOf","toLocaleString","toLocaleParts","toISODate","toISOTime","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 +{"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: false });\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.valueOf();\n asTS -= asTS % 1000;\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 key = JSON.stringify([locString, opts]);\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 ,\n yearStr,\n monthStr,\n weekStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr,\n millisecondsStr\n ] = match;\n\n return [\n {\n years: parseInteger(yearStr),\n months: parseInteger(monthStr),\n weeks: parseInteger(weekStr),\n days: parseInteger(dayStr),\n hours: parseInteger(hourStr),\n minutes: parseInteger(minuteStr),\n seconds: parseInteger(secondStr),\n milliseconds: 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 asISO 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\";\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\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) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ: true,\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 }\n) {\n let fmt = \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += \":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 += \"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 c = tsToObj(this.ts, zone.offset(this.ts));\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : zone.offset(this.ts);\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(\"fromMillis requires a numerical input\");\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 = this.o - 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().toLocaleString(); //=> [\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 * @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 * @return {string}\n */\n toISO(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toISODate()}T${this.toISOTime(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @return {string}\n */\n toISODate() {\n let format = \"yyyy-MM-dd\";\n if (this.year > 9999) {\n format = \"+\" + format;\n }\n\n return toTechFormat(this, format);\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 * @example DateTime.utc().hour(7).minute(34).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().hour(7).minute(34).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @return {string}\n */\n toISOTime({ suppressMilliseconds = false, suppressSeconds = false, includeOffset = true } = {}) {\n return toTechTimeFormat(this, {\n suppressSeconds,\n suppressMilliseconds,\n includeOffset\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\");\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","valueOf","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","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","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","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","_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/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js index d8eb382a5e..b4287556f9 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js @@ -1 +1 @@ -var luxon=function(e){"use strict";function r(e,t){for(var n=0;n=r.length)break;a=r[o++]}else{if((o=r.next()).done)break;a=o.value}var u=a;u.literal?n+=u.val:n+=t(u.val)}return n}var Ge={D:Y,DD:G,DDD:$,DDDD:B,t:Q,tt:K,ttt:X,tttt:ee,T:te,TT:ne,TTT:re,TTTT:ie,f:oe,ff:ue,fff:le,ffff:de,F:ae,FF:se,FFF:fe,FFFF:he},$e=function(){function f(e,t){this.opts=t,this.loc=e,this.systemLoc=null}f.create=function(e,t){return void 0===t&&(t={}),new f(e,t)},f.parseFormat=function(e){for(var t=null,n="",r=!1,i=[],o=0;oKt.indexOf(c)&&tn(this.matrix,a,h,i,c)}else v(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 en(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?f.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(f.fromDateTimes(a,c)),a=c,u+=1}return o},e.splitBy=function(e){var t=on(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(f.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 f.fromDateTimes(t,n)},f.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},f.xor=function(e){var t,n=null,r=0,i=[],o=e.map(function(e){return[{time:e.s,type:"s"},{time:e.e,type:"e"}]}),a=(t=Array.prototype).concat.apply(t,o).sort(function(e,t){return e.time-t.time}),u=Array.isArray(a),s=0;for(a=u?a:a[Symbol.iterator]();;){var c;if(u){if(s>=a.length)break;c=a[s++]}else{if((s=a.next()).done)break;c=s.value}var l=c;n=1===(r+="s"===l.type?1:-1)?l.time:(n&&+n!=+l.time&&i.push(f.fromDateTimes(n,l.time)),null)}return f.merge(i)},e.difference=function(){for(var t=this,e=arguments.length,n=new Array(e),r=0;rC(n)?(t=n+1,u=1):t=n,Object.assign({weekYear:t,weekNumber:u,weekday:a},H(e))}function Fn(e){var t,n=e.weekYear,r=e.weekNumber,i=e.weekday,o=In(n,1,4),a=L(n),u=7*r+i-o-3;u<1?u+=L(t=n-1):a=a.length)break;c=a[s++]}else{if((s=a.next()).done)break;c=s.value}var l=c,f=i(l);if(1<=Math.abs(f))return e(f,l)}return e(0,r.units[r.units.length-1])}var ir=function(){function T(e){var t=e.zone||Je.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Jt("invalid input"):null)||(t.isValid?null:_n(t));this.ts=N(e.ts)?Je.now():e.ts;var r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t)){var o=[e.old.c,e.old.o];r=o[0],i=o[1]}else r=Rn(this.ts,t.offset(this.ts)),r=(n=Number.isNaN(r.year)?new Jt("invalid input"):null)?null:r,i=n?null:t.offset(this.ts);this._zone=t,this.loc=e.loc||ot.create(),this.invalid=n,this.weekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}T.local=function(e,t,n,r,i,o,a){return N(e)?new T({ts:Je.now()}):nr({year:e,month:t,day:n,hour:r,minute:i,second:o,millisecond:a},Je.defaultZone)},T.utc=function(e,t,n,r,i,o,a){return N(e)?new T({ts:Je.now(),zone:Ae.utcInstance}):nr({year:e,month:t,day:n,hour:r,minute:i,second:o,millisecond:a},Ae.utcInstance)},T.fromJSDate=function(e,t){void 0===t&&(t={});var n=function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?e.valueOf():NaN;if(Number.isNaN(n))return T.invalid("invalid input");var r=_e(t.zone,Je.defaultZone);return r.isValid?new T({ts:n,zone:r,loc:ot.fromObject(t)}):T.invalid(_n(r))},T.fromMillis=function(e,t){if(void 0===t&&(t={}),v(e))return e<-864e13||864e13=v.length)break;w=v[p++]}else{if((p=v.next()).done)break;w=p.value}var k=w;N(i[k])?i[k]=y?d[k]:m[k]:y=!0}var b=(h?function(e){var t=D(e.weekYear),n=E(e.weekNumber,1,C(e.weekYear)),r=E(e.weekday,1,7);return t?n?!r&&En("weekday",e.weekday):En("week",e.week):En("weekYear",e.weekYear)}(i):o?function(e){var t=D(e.year),n=E(e.ordinal,1,L(e.year));return t?!n&&En("ordinal",e.ordinal):En("year",e.year)}(i):jn(i))||An(i);if(b)return T.invalid(b);var O=Wn(h?Fn(i):o?Zn(i):i,r,t),S=new T({ts:O[0],zone:t,o:O[1],loc:l});return i.weekday&&s&&e.weekday!==S.weekday?T.invalid("mismatched weekday","you can't specify both a weekday of "+i.weekday+" and a date of "+S.toISO()):S},T.fromISO=function(e,t){void 0===t&&(t={});var n=function(e){return st(e,[Ct,zt],[Zt,_t],[jt,qt],[At,Ht])}(e);return Jn(n[0],n[1],t,"ISO 8601",e)},T.fromRFC2822=function(e,t){void 0===t&&(t={});var n=function(e){return st(function(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[Dt,Et])}(e);return Jn(n[0],n[1],t,"RFC 2822",e)},T.fromHTTP=function(e,t){void 0===t&&(t={});var n=function(e){return st(e,[It,xt],[Vt,xt],[Lt,Ft])}(e);return Jn(n[0],n[1],t,"HTTP",t)},T.fromFormat=function(e,t,n){if(void 0===n&&(n={}),N(e)||N(t))throw new h("fromFormat requires an input string and a format");var r=n,i=r.locale,o=void 0===i?null:i,a=r.numberingSystem,u=void 0===a?null:a,s=function(e,t,n){var r=Mn(e,t,n);return[r.result,r.zone,r.invalidReason]}(ot.fromOpts({locale:o,numberingSystem:u,defaultToEN:!0}),e,t),c=s[0],l=s[1],f=s[2];return f?T.invalid(f):Jn(c,l,n,"format "+t,e)},T.fromString=function(e,t,n){return void 0===n&&(n={}),T.fromFormat(e,t,n)},T.fromSQL=function(e,t){void 0===t&&(t={});var n=function(e){return st(e,[Ut,Wt],[Rt,Pt])}(e);return Jn(n[0],n[1],t,"SQL",e)},T.invalid=function(e,t){if(void 0===t&&(t=null),!e)throw new h("need to specify a reason the DateTime is invalid");var n=e instanceof Jt?e:new Jt(e,t);if(Je.throwOnInvalid)throw new c(n);return new T({invalid:n})},T.isDateTime=function(e){return e&&e.isLuxonDateTime||!1};var e=T.prototype;return e.get=function(e){return this[e]},e.resolvedLocaleOpts=function(e){void 0===e&&(e={});var t=$e.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t.locale,numberingSystem:t.numberingSystem,outputCalendar:t.calendar}},e.toUTC=function(e,t){return void 0===e&&(e=0),void 0===t&&(t={}),this.setZone(Ae.instance(e),t)},e.toLocal=function(){return this.setZone(Je.defaultZone)},e.setZone=function(e,t){var n=void 0===t?{}:t,r=n.keepLocalTime,i=void 0!==r&&r,o=n.keepCalendarTime,a=void 0!==o&&o;if((e=_e(e,Je.defaultZone)).equals(this.zone))return this;if(e.isValid){var u=this.ts;if(i||a){var s=this.o-e.offset(this.ts);u=Wn(this.toObject(),s,e)[0]}return Hn(this,{ts:u,zone:e})}return T.invalid(_n(e))},e.reconfigure=function(e){var t=void 0===e?{}:e,n=t.locale,r=t.numberingSystem,i=t.outputCalendar,o=this.loc.clone({locale:n,numberingSystem:r,outputCalendar:i});return Hn(this,{loc:o})},e.setLocale=function(e){return this.reconfigure({locale:e})},e.set=function(e){if(!this.isValid)return this;var t,n=_(e,tr,[]);!N(n.weekYear)||!N(n.weekNumber)||!N(n.weekday)?t=Fn(Object.assign(xn(this.c),n)):N(n.ordinal)?(t=Object.assign(this.toObject(),n),N(n.day)&&(t.day=Math.min(x(t.year,t.month),t.day))):t=Zn(Object.assign(Cn(this.c),n));var r=Wn(t,this.o,this.zone);return Hn(this,{ts:r[0],o:r[1]})},e.plus=function(e){return this.isValid?Hn(this,Pn(this,on(e))):this},e.minus=function(e){return this.isValid?Hn(this,Pn(this,on(e).negate())):this},e.startOf=function(e){if(!this.isValid)return this;var t={},n=rn.normalizeUnit(e);switch(n){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0}if("weeks"===n&&(t.weekday=1),"quarters"===n){var r=Math.ceil(this.month/3);t.month=3*(r-1)+1}return this.set(t)},e.endOf=function(e){var t;return this.isValid?this.plus(((t={})[e]=1,t)).startOf(e).minus(1):this},e.toFormat=function(e,t){return void 0===t&&(t={}),this.isValid?$e.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):zn},e.toLocaleString=function(e){return void 0===e&&(e=Y),this.isValid?$e.create(this.loc.clone(e),e).formatDateTime(this):zn},e.toLocaleParts=function(e){return void 0===e&&(e={}),this.isValid?$e.create(this.loc.clone(e),e).formatDateTimeParts(this):[]},e.toISO=function(e){return void 0===e&&(e={}),this.isValid?this.toISODate()+"T"+this.toISOTime(e):null},e.toISODate=function(){var e="yyyy-MM-dd";return 9999this.valueOf(),a=ln(o?this:e,o?e:this,i,r);return o?a.negate():a},e.diffNow=function(e,t){return void 0===e&&(e="milliseconds"),void 0===t&&(t={}),this.diff(T.local(),e,t)},e.until=function(e){return this.isValid?un.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||T.fromObject({zone:this.zone}),n=e.padding?thisthis.set({month:1}).offset||this.offset>this.set({month:5}).offset)}},{key:"isInLeapYear",get:function(){return V(this.year)}},{key:"daysInMonth",get:function(){return x(this.year,this.month)}},{key:"daysInYear",get:function(){return this.isValid?L(this.year):NaN}},{key:"weeksInWeekYear",get:function(){return this.isValid?C(this.weekYear):NaN}}],[{key:"DATE_SHORT",get:function(){return Y}},{key:"DATE_MED",get:function(){return G}},{key:"DATE_FULL",get:function(){return $}},{key:"DATE_HUGE",get:function(){return B}},{key:"TIME_SIMPLE",get:function(){return Q}},{key:"TIME_WITH_SECONDS",get:function(){return K}},{key:"TIME_WITH_SHORT_OFFSET",get:function(){return X}},{key:"TIME_WITH_LONG_OFFSET",get:function(){return ee}},{key:"TIME_24_SIMPLE",get:function(){return te}},{key:"TIME_24_WITH_SECONDS",get:function(){return ne}},{key:"TIME_24_WITH_SHORT_OFFSET",get:function(){return re}},{key:"TIME_24_WITH_LONG_OFFSET",get:function(){return ie}},{key:"DATETIME_SHORT",get:function(){return oe}},{key:"DATETIME_SHORT_WITH_SECONDS",get:function(){return ae}},{key:"DATETIME_MED",get:function(){return ue}},{key:"DATETIME_MED_WITH_SECONDS",get:function(){return se}},{key:"DATETIME_MED_WITH_WEEKDAY",get:function(){return ce}},{key:"DATETIME_FULL",get:function(){return le}},{key:"DATETIME_FULL_WITH_SECONDS",get:function(){return fe}},{key:"DATETIME_HUGE",get:function(){return de}},{key:"DATETIME_HUGE_WITH_SECONDS",get:function(){return he}}]),T}();function or(e){if(ir.isDateTime(e))return e;if(e&&e.valueOf&&v(e.valueOf()))return ir.fromJSDate(e);if(e&&"object"==typeof e)return ir.fromObject(e);throw new h("Unknown datetime argument: "+e+", of type "+typeof e)}return e.DateTime=ir,e.Duration=rn,e.FixedOffsetZone=Ae,e.IANAZone=Ze,e.Info=sn,e.Interval=un,e.InvalidZone=ze,e.LocalZone=Ve,e.Settings=Je,e.Zone=Ee,e}({}); \ No newline at end of file +var luxon=function(e){"use strict";function r(e,t){for(var n=0;n=r.length)break;a=r[o++]}else{if((o=r.next()).done)break;a=o.value}var u=a;u.literal?n+=u.val:n+=t(u.val)}return n}var Ee={D:p,DD:w,DDD:k,DDDD:b,t:O,tt:S,ttt:M,tttt:D,T:E,TT:I,TTT:V,TTTT:L,f:x,ff:C,fff:A,ffff:_,F:F,FF:Z,FFF:z,FFFF:q},Ie=function(){function f(e,t){this.opts=t,this.loc=e,this.systemLoc=null}f.create=function(e,t){return void 0===t&&(t={}),new f(e,t)},f.parseFormat=function(e){for(var t=null,n="",r=!1,i=[],o=0;oQt.indexOf(c)&&en(this.matrix,a,h,i,c)}else U(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 Xt(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?f.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(f.fromDateTimes(a,c)),a=c,u+=1}return o},e.splitBy=function(e){var t=rn(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(f.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 f.fromDateTimes(t,n)},f.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},f.xor=function(e){var t,n=null,r=0,i=[],o=e.map(function(e){return[{time:e.s,type:"s"},{time:e.e,type:"e"}]}),a=(t=Array.prototype).concat.apply(t,o).sort(function(e,t){return e.time-t.time}),u=Array.isArray(a),s=0;for(a=u?a:a[Symbol.iterator]();;){var c;if(u){if(s>=a.length)break;c=a[s++]}else{if((s=a.next()).done)break;c=s.value}var l=c;n=1===(r+="s"===l.type?1:-1)?l.time:(n&&+n!=+l.time&&i.push(f.fromDateTimes(n,l.time)),null)}return f.merge(i)},e.difference=function(){for(var t=this,e=arguments.length,n=new Array(e),r=0;rie(n)?(t=n+1,u=1):t=n,Object.assign({weekYear:t,weekNumber:u,weekday:a},fe(e))}function xn(e){var t,n=e.weekYear,r=e.weekNumber,i=e.weekday,o=En(n,1,4),a=te(n),u=7*r+i-o-3;u<1?u+=te(t=n-1):a=a.length)break;c=a[s++]}else{if((s=a.next()).done)break;c=s.value}var l=c,f=i(l);if(1<=Math.abs(f))return e(f,l)}return e(0,r.units[r.units.length-1])}var rr=function(){function T(e){var t=e.zone||$e.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Ve("invalid input"):null)||(t.isValid?null:zn(t));this.ts=H(e.ts)?$e.now():e.ts;var r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t)){var o=[e.old.c,e.old.o];r=o[0],i=o[1]}else r=Un(this.ts,t.offset(this.ts)),r=(n=Number.isNaN(r.year)?new Ve("invalid input"):null)?null:r,i=n?null:t.offset(this.ts);this._zone=t,this.loc=e.loc||ot.create(),this.invalid=n,this.weekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}T.local=function(e,t,n,r,i,o,a){return H(e)?new T({ts:$e.now()}):tr({year:e,month:t,day:n,hour:r,minute:i,second:o,millisecond:a},$e.defaultZone)},T.utc=function(e,t,n,r,i,o,a){return H(e)?new T({ts:$e.now(),zone:qe.utcInstance}):tr({year:e,month:t,day:n,hour:r,minute:i,second:o,millisecond:a},qe.utcInstance)},T.fromJSDate=function(e,t){void 0===t&&(t={});var n=function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?e.valueOf():NaN;if(Number.isNaN(n))return T.invalid("invalid input");var r=Ue(t.zone,$e.defaultZone);return r.isValid?new T({ts:n,zone:r,loc:ot.fromObject(t)}):T.invalid(zn(r))},T.fromMillis=function(e,t){if(void 0===t&&(t={}),U(e))return e<-864e13||864e13=v.length)break;w=v[p++]}else{if((p=v.next()).done)break;w=p.value}var k=w;H(i[k])?i[k]=y?d[k]:m[k]:y=!0}var b=(h?function(e){var t=R(e.weekYear),n=$(e.weekNumber,1,ie(e.weekYear)),r=$(e.weekday,1,7);return t?n?!r&&Dn("weekday",e.weekday):Dn("week",e.week):Dn("weekYear",e.weekYear)}(i):o?function(e){var t=R(e.year),n=$(e.ordinal,1,te(e.year));return t?!n&&Dn("ordinal",e.ordinal):Dn("year",e.year)}(i):Zn(i))||jn(i);if(b)return T.invalid(b);var O=Rn(h?xn(i):o?Cn(i):i,r,t),S=new T({ts:O[0],zone:t,o:O[1],loc:l});return i.weekday&&s&&e.weekday!==S.weekday?T.invalid("mismatched weekday","you can't specify both a weekday of "+i.weekday+" and a date of "+S.toISO()):S},T.fromISO=function(e,t){void 0===t&&(t={});var n=function(e){return st(e,[Ct,zt],[Zt,_t],[jt,qt],[At,Ht])}(e);return Pn(n[0],n[1],t,"ISO 8601",e)},T.fromRFC2822=function(e,t){void 0===t&&(t={});var n=function(e){return st(function(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[Dt,Et])}(e);return Pn(n[0],n[1],t,"RFC 2822",e)},T.fromHTTP=function(e,t){void 0===t&&(t={});var n=function(e){return st(e,[It,xt],[Vt,xt],[Lt,Ft])}(e);return Pn(n[0],n[1],t,"HTTP",t)},T.fromFormat=function(e,t,n){if(void 0===n&&(n={}),H(e)||H(t))throw new h("fromFormat requires an input string and a format");var r=n,i=r.locale,o=void 0===i?null:i,a=r.numberingSystem,u=void 0===a?null:a,s=function(e,t,n){var r=Tn(e,t,n);return[r.result,r.zone,r.invalidReason]}(ot.fromOpts({locale:o,numberingSystem:u,defaultToEN:!0}),e,t),c=s[0],l=s[1],f=s[2];return f?T.invalid(f):Pn(c,l,n,"format "+t,e)},T.fromString=function(e,t,n){return void 0===n&&(n={}),T.fromFormat(e,t,n)},T.fromSQL=function(e,t){void 0===t&&(t={});var n=function(e){return st(e,[Ut,Wt],[Rt,Pt])}(e);return Pn(n[0],n[1],t,"SQL",e)},T.invalid=function(e,t){if(void 0===t&&(t=null),!e)throw new h("need to specify a reason the DateTime is invalid");var n=e instanceof Ve?e:new Ve(e,t);if($e.throwOnInvalid)throw new c(n);return new T({invalid:n})},T.isDateTime=function(e){return e&&e.isLuxonDateTime||!1};var e=T.prototype;return e.get=function(e){return this[e]},e.resolvedLocaleOpts=function(e){void 0===e&&(e={});var t=Ie.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t.locale,numberingSystem:t.numberingSystem,outputCalendar:t.calendar}},e.toUTC=function(e,t){return void 0===e&&(e=0),void 0===t&&(t={}),this.setZone(qe.instance(e),t)},e.toLocal=function(){return this.setZone($e.defaultZone)},e.setZone=function(e,t){var n=void 0===t?{}:t,r=n.keepLocalTime,i=void 0!==r&&r,o=n.keepCalendarTime,a=void 0!==o&&o;if((e=Ue(e,$e.defaultZone)).equals(this.zone))return this;if(e.isValid){var u=this.ts;if(i||a){var s=this.o-e.offset(this.ts);u=Rn(this.toObject(),s,e)[0]}return qn(this,{ts:u,zone:e})}return T.invalid(zn(e))},e.reconfigure=function(e){var t=void 0===e?{}:e,n=t.locale,r=t.numberingSystem,i=t.outputCalendar,o=this.loc.clone({locale:n,numberingSystem:r,outputCalendar:i});return qn(this,{loc:o})},e.setLocale=function(e){return this.reconfigure({locale:e})},e.set=function(e){if(!this.isValid)return this;var t,n=ce(e,er,[]);!H(n.weekYear)||!H(n.weekNumber)||!H(n.weekday)?t=xn(Object.assign(Ln(this.c),n)):H(n.ordinal)?(t=Object.assign(this.toObject(),n),H(n.day)&&(t.day=Math.min(ne(t.year,t.month),t.day))):t=Cn(Object.assign(Fn(this.c),n));var r=Rn(t,this.o,this.zone);return qn(this,{ts:r[0],o:r[1]})},e.plus=function(e){return this.isValid?qn(this,Wn(this,rn(e))):this},e.minus=function(e){return this.isValid?qn(this,Wn(this,rn(e).negate())):this},e.startOf=function(e){if(!this.isValid)return this;var t={},n=nn.normalizeUnit(e);switch(n){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0}if("weeks"===n&&(t.weekday=1),"quarters"===n){var r=Math.ceil(this.month/3);t.month=3*(r-1)+1}return this.set(t)},e.endOf=function(e){var t;return this.isValid?this.plus(((t={})[e]=1,t)).startOf(e).minus(1):this},e.toFormat=function(e,t){return void 0===t&&(t={}),this.isValid?Ie.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):An},e.toLocaleString=function(e){return void 0===e&&(e=p),this.isValid?Ie.create(this.loc.clone(e),e).formatDateTime(this):An},e.toLocaleParts=function(e){return void 0===e&&(e={}),this.isValid?Ie.create(this.loc.clone(e),e).formatDateTimeParts(this):[]},e.toISO=function(e){return void 0===e&&(e={}),this.isValid?this.toISODate()+"T"+this.toISOTime(e):null},e.toISODate=function(){var e="yyyy-MM-dd";return 9999this.valueOf(),a=cn(o?this:e,o?e:this,i,r);return o?a.negate():a},e.diffNow=function(e,t){return void 0===e&&(e="milliseconds"),void 0===t&&(t={}),this.diff(T.local(),e,t)},e.until=function(e){return this.isValid?an.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||T.fromObject({zone:this.zone}),n=e.padding?thisthis.set({month:1}).offset||this.offset>this.set({month:5}).offset)}},{key:"isInLeapYear",get:function(){return ee(this.year)}},{key:"daysInMonth",get:function(){return ne(this.year,this.month)}},{key:"daysInYear",get:function(){return this.isValid?te(this.year):NaN}},{key:"weeksInWeekYear",get:function(){return this.isValid?ie(this.weekYear):NaN}}],[{key:"DATE_SHORT",get:function(){return p}},{key:"DATE_MED",get:function(){return w}},{key:"DATE_FULL",get:function(){return k}},{key:"DATE_HUGE",get:function(){return b}},{key:"TIME_SIMPLE",get:function(){return O}},{key:"TIME_WITH_SECONDS",get:function(){return S}},{key:"TIME_WITH_SHORT_OFFSET",get:function(){return M}},{key:"TIME_WITH_LONG_OFFSET",get:function(){return D}},{key:"TIME_24_SIMPLE",get:function(){return E}},{key:"TIME_24_WITH_SECONDS",get:function(){return I}},{key:"TIME_24_WITH_SHORT_OFFSET",get:function(){return V}},{key:"TIME_24_WITH_LONG_OFFSET",get:function(){return L}},{key:"DATETIME_SHORT",get:function(){return x}},{key:"DATETIME_SHORT_WITH_SECONDS",get:function(){return F}},{key:"DATETIME_MED",get:function(){return C}},{key:"DATETIME_MED_WITH_SECONDS",get:function(){return Z}},{key:"DATETIME_MED_WITH_WEEKDAY",get:function(){return j}},{key:"DATETIME_FULL",get:function(){return A}},{key:"DATETIME_FULL_WITH_SECONDS",get:function(){return z}},{key:"DATETIME_HUGE",get:function(){return _}},{key:"DATETIME_HUGE_WITH_SECONDS",get:function(){return q}}]),T}();function ir(e){if(rr.isDateTime(e))return e;if(e&&e.valueOf&&U(e.valueOf()))return rr.fromJSDate(e);if(e&&"object"==typeof e)return rr.fromObject(e);throw new h("Unknown datetime argument: "+e+", of type "+typeof e)}return e.DateTime=rr,e.Duration=nn,e.FixedOffsetZone=qe,e.IANAZone=ze,e.Info=un,e.Interval=an,e.InvalidZone=He,e.LocalZone=Fe,e.Settings=$e,e.Zone=Le,e}({}); \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js.map b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js.map index 56f8308fb6..891f84e72b 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js.map +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/luxon/luxon.min.js.map @@ -1 +1 @@ -{"version":3,"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","_isNativeFunction","TypeError","has","get","set","Wrapper","this","value","LuxonError","_Error","Error","InvalidDateTimeError","_LuxonError","reason","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","unit","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","isUndefined","isNumber","isInteger","hasIntl","Intl","DateTimeFormat","hasFormatToParts","formatToParts","hasRelative","RelativeTimeFormat","bestBy","arr","by","compare","reduce","best","next","pair","pick","obj","keys","k","hasOwnProperty","prop","integerBetween","thing","bottom","top","padStart","input","n","repeat","slice","parseInteger","string","parseInt","parseMillis","fraction","f","parseFloat","Math","floor","roundTo","number","digits","towardZero","factor","pow","trunc","round","isLeapYear","year","daysInYear","daysInMonth","month","modMonth","x","floorMod","objToLocalTS","d","UTC","day","hour","minute","second","millisecond","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","p1","last","p2","untruncateYear","parseZoneInfo","ts","offsetFormat","locale","timeZone","date","intlOpts","hour12","modified","assign","timeZoneName","intl","parsed","find","m","type","toLowerCase","without","format","substring","replace","signedOffset","offHourStr","offMinuteStr","offHour","offMin","asNumber","numericValue","Number","isNaN","normalizeObject","normalizer","nonUnitKeys","normalized","u","v","formatOffset","offset","hours","minutes","abs","sign","base","RangeError","timeObject","ianaRegex","s","l","d2","DATE_SHORT","DATE_MED","DATE_FULL","DATE_HUGE","weekday","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","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","stringify","JSON","sort","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","Zone","_proto","offsetName","opts","equals","otherZone","singleton","LocalZone","_Zone","_ref","getTimezoneOffset","resolvedOptions","matchingRegex","RegExp","source","dtfCache","typeToPos","ianaZoneCache","IANAZone","name","_this","zoneName","valid","isValidZone","resetCache","isValidSpecifier","match","zone","parseGMTOffset","specifier","dtf","makeDTF","_ref2","formatted","filled","_formatted$i","pos","partsOffset","exec","fMonth","fDay","hackyOffset","asUTC","asTS","valueOf","singleton$1","FixedOffsetZone","fixed","utcInstance","parseSpecifier","r","InvalidZone","NaN","normalizeZone","defaultZone","isString","lowered","now","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","z","numberingSystem","outputCalendar","t","stringifyTokens","splits","tokenToString","_iterator","_isArray","Array","isArray","_i","Symbol","iterator","done","token","literal","val","_macroTokenToFormatOpts","D","DD","DDD","DDDD","tt","ttt","tttt","T","TT","TTT","TTTT","ff","fff","ffff","F","FF","FFF","FFFF","Formatter","formatOpts","loc","systemLoc","parseFormat","fmt","current","currentFull","bracketed","c","charAt","macroTokenToFormatOpts","formatWithSystemDefault","dt","redefaultToSystem","dtFormatter","formatDateTime","formatDateTimeParts","num","forceSimple","padTo","numberFormatter","formatDateTimeFromString","extract","isOffsetFixed","allowZ","isValid","meridiem","knownEnglish","meridiemForDateTime","standalone","monthForDateTime","weekdayForDateTime","era","eraForDateTime","listingMode","useDateTimeFormatter","weekNumber","ordinal","quarter","maybeMacro","formatDurationFromString","dur","tokenToField","lildur","_this2","tokens","realTokens","found","concat","collapsed","shiftTo","map","filter","mapped","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","mode","PolyNumberFormatter","useGrouping","minimumIntegerDigits","inf","NumberFormat","getCachendINF","PolyDateFormatter","universal","DateTime","fromMillis","_proto2","toJSDate","tokenFormat","knownFormat","dateTimeHuge","formatString","PolyRelFormatter","isEnglish","style","rtf","getCachendRTF","_proto3","count","numeric","narrow","units","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","is","fmtValue","singular","lilUnits","fmtUnit","formatRelativeTime","numbering","specifiedLocale","_parseLocaleString","localeStr","uIndex","options","smaller","_options","calendar","parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","intlConfigString","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","supportsFastNumbers","combineRegexes","_len","regexes","_key","full","combineExtractors","_len2","extractors","_key2","ex","mergedVals","mergedZone","cursor","_ex","parse","_len3","patterns","_key3","_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","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","Invalid","explanation","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","reverse","clear","conf","values","conversionAccuracy","Duration","convert","matrix","fromMap","fromUnit","toMap","toUnit","conv","raw","added","ceil","antiTrunc","normalizeValues","vals","previous","config","accurate","invalid","isLuxonDuration","normalizeUnit","fromISO","text","parseISODuration","week","isDuration","toFormat","fmtOpts","toObject","includeConfig","toISO","toJSON","as","plus","duration","friendlyDuration","_orderedUnits","minus","negate","reconfigure","normalize","lastUnit","built","accumulated","_i2","_orderedUnits2","own","ak","down","negated","_i3","_Object$keys","_i4","_orderedUnits3","durationish","INVALID$1","Interval","start","end","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","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","_ref3","difference","dateFormat","_temp2","_ref4$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$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","_highOrderDiffs","lowestOrder","highWater","_differs","_differs$_i","differ","_cursor$plus","_cursor$plus2","delta","highOrderDiffs","remainingMillis","lowerOrderUnits","_cursor$plus3","_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","partTypeStyleToTokenVal","2-digit","short","long","dayperiod","dummyDateTimeCache","maybeExpandMacroToken","part","tokenForPart","includes","explainFromTokens","expandMacroTokens","escapeToken","_ref5","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","unitForToken","disqualifyingUnit","_buildRegex","buildRegex","regexString","handlers","_match","matches","all","matchIndex","h","rawMatches","_ref6","Z","G","y","S","toField","dateTimeFromMatches","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","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits$1","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","_objToTS","diffRelative","calendary","_zone","isLuxonDateTime","fromJSDate","isDate","zoneToUse","fromSeconds","offsetProvis","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","foundFirst","_iterator2","_isArray2","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","_objToTS2","_parseISODate","parseISODate","fromRFC2822","_parseRFC2822Date","trim","preprocessRFC2822","parseRFC2822Date","fromHTTP","_parseHTTPDate","parseHTTPDate","fromFormat","_opts","_opts$locale","_opts$numberingSystem","_parseFromTokens","_explainFromTokens","parseFromTokens","fromString","fromSQL","_parseSQL","parseSQL","isDateTime","resolvedLocaleOpts","_Formatter$create$res","toLocal","_ref5$keepLocalTime","_ref5$keepCalendarTim","keepCalendarTime","newTS","offsetGuess","setLocale","mixed","_objToTS4","normalizedUnit","q","endOf","_this$plus","toLocaleString","toLocaleParts","toISODate","toISOTime","toISOWeekDate","_ref7","_ref7$suppressMillise","_ref7$suppressSeconds","_ref7$includeOffset","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref8","_ref8$includeOffset","_ref8$includeZone","toSQL","toMillis","toSeconds","toBSON","otherDateTime","durOpts","maybeArray","otherIsLater","diffed","diffNow","until","inputMs","toRelative","padding","toRelativeCalendar","every","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","dateTimeish"],"mappings":"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","file":"build/global/luxon.js"} \ No newline at end of file +{"version":3,"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","_isNativeFunction","TypeError","has","get","set","Wrapper","this","value","LuxonError","_Error","Error","InvalidDateTimeError","_LuxonError","reason","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","unit","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","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","isNumber","isInteger","hasIntl","Intl","DateTimeFormat","hasFormatToParts","formatToParts","hasRelative","RelativeTimeFormat","bestBy","arr","by","compare","reduce","best","next","pair","pick","obj","keys","k","hasOwnProperty","prop","integerBetween","thing","bottom","top","padStart","input","repeat","slice","parseInteger","string","parseInt","parseMillis","fraction","f","parseFloat","Math","floor","roundTo","number","digits","towardZero","factor","pow","trunc","round","isLeapYear","daysInYear","daysInMonth","modMonth","x","floorMod","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","_iterator","_isArray","Array","isArray","_i","Symbol","iterator","_ref","done","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","meridiemForDateTime","standalone","monthForDateTime","weekdayForDateTime","era","eraForDateTime","listingMode","useDateTimeFormatter","outputCalendar","offsetName","zoneName","weekNumber","ordinal","quarter","maybeMacro","formatDurationFromString","dur","tokenToField","lildur","_this2","tokens","realTokens","found","_ref2","concat","collapsed","shiftTo","map","filter","mapped","Invalid","explanation","Zone","equals","otherZone","singleton","LocalZone","_Zone","getTimezoneOffset","matchingRegex","RegExp","source","dtfCache","typeToPos","ianaZoneCache","IANAZone","name","valid","isValidZone","resetCache","isValidSpecifier","match","parseGMTOffset","specifier","dtf","makeDTF","formatted","filled","_formatted$i","pos","partsOffset","exec","fMonth","fDay","hackyOffset","asUTC","asTS","valueOf","singleton$1","FixedOffsetZone","fixed","utcInstance","parseSpecifier","r","InvalidZone","NaN","normalizeZone","defaultZone","isString","lowered","now","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","z","numberingSystem","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","mode","PolyNumberFormatter","useGrouping","minimumIntegerDigits","inf","NumberFormat","getCachedINF","PolyDateFormatter","universal","DateTime","fromMillis","_proto2","toJSDate","tokenFormat","knownFormat","dateTimeHuge","formatString","PolyRelFormatter","isEnglish","style","rtf","getCachedRTF","_proto3","count","numeric","narrow","units","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatRelativeTime","numbering","specifiedLocale","_parseLocaleString","localeStr","uIndex","options","smaller","_options","calendar","parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","intlConfigString","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","supportsFastNumbers","combineRegexes","_len","regexes","_key","full","combineExtractors","_len2","extractors","_key2","ex","mergedVals","mergedZone","cursor","_ex","parse","_len3","patterns","_key3","_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","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","antiTrunc","normalizeValues","vals","previous","config","accurate","invalid","isLuxonDuration","normalizeUnit","fromISO","text","parseISODuration","week","isDuration","toFormat","fmtOpts","toObject","includeConfig","toISO","toJSON","as","plus","duration","friendlyDuration","_orderedUnits","minus","negate","mapUnits","_i2","_Object$keys","reconfigure","normalize","lastUnit","built","accumulated","_i3","_orderedUnits2","own","ak","down","negated","_i4","_Object$keys2","_i5","_orderedUnits3","durationish","INVALID$1","Interval","start","end","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","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","_ref3","difference","toISODate","toISOTime","dateFormat","_temp2","_ref4$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$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","_highOrderDiffs","lowestOrder","highWater","_differs","_differs$_i","differ","_cursor$plus","_cursor$plus2","delta","highOrderDiffs","remainingMillis","lowerOrderUnits","_cursor$plus3","_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","partTypeStyleToTokenVal","2-digit","short","long","dayperiod","dayPeriod","dummyDateTimeCache","maybeExpandMacroToken","part","tokenForPart","includes","explainFromTokens","expandMacroTokens","escapeToken","_ref5","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","unitForToken","disqualifyingUnit","_buildRegex","buildRegex","regexString","handlers","_match","matches","all","matchIndex","h","rawMatches","_ref6","Z","q","M","G","y","S","toField","dateTimeFromMatches","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","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits$1","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","_objToTS","diffRelative","calendary","_zone","isLuxonDateTime","fromJSDate","isDate","zoneToUse","fromSeconds","offsetProvis","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","foundFirst","_iterator2","_isArray2","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","_objToTS2","_parseISODate","parseISODate","fromRFC2822","_parseRFC2822Date","trim","preprocessRFC2822","parseRFC2822Date","fromHTTP","_parseHTTPDate","parseHTTPDate","fromFormat","_opts","_opts$locale","_opts$numberingSystem","_parseFromTokens","_explainFromTokens","parseFromTokens","fromString","fromSQL","_parseSQL","parseSQL","isDateTime","resolvedLocaleOpts","_Formatter$create$res","toLocal","_ref5$keepLocalTime","_ref5$keepCalendarTim","keepCalendarTime","newTS","offsetGuess","setLocale","mixed","_objToTS4","normalizedUnit","endOf","_this$plus","toLocaleString","toLocaleParts","toISOWeekDate","_ref7","_ref7$suppressMillise","_ref7$suppressSeconds","_ref7$includeOffset","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref8","_ref8$includeOffset","_ref8$includeZone","toSQL","toMillis","toSeconds","toBSON","otherDateTime","durOpts","maybeArray","otherIsLater","diffed","diffNow","until","inputMs","toRelative","padding","toRelativeCalendar","every","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","dateTimeish"],"mappings":"AAAA,IAAIA,MAAS,SAAUC,GACrB,aAEA,SAASC,EAAkBC,EAAQC,GACjC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CACrC,IAAIE,EAAaH,EAAMC,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,IAIlD,SAASO,EAAaC,EAAaC,EAAYC,GAG7C,OAFID,GAAYd,EAAkBa,EAAYG,UAAWF,GACrDC,GAAaf,EAAkBa,EAAaE,GACzCF,EAGT,SAASI,EAAeC,EAAUC,GAChCD,EAASF,UAAYP,OAAOW,OAAOD,EAAWH,YAC9CE,EAASF,UAAUK,YAAcH,GACxBI,UAAYH,EAGvB,SAASI,EAAgBC,GAIvB,OAHAD,EAAkBd,OAAOgB,eAAiBhB,OAAOiB,eAAiB,SAAyBF,GACzF,OAAOA,EAAEF,WAAab,OAAOiB,eAAeF,KAEvBA,GAGzB,SAASG,EAAgBH,EAAGI,GAM1B,OALAD,EAAkBlB,OAAOgB,gBAAkB,SAAyBD,EAAGI,GAErE,OADAJ,EAAEF,UAAYM,EACPJ,IAGcA,EAAGI,GAgB5B,SAASC,EAAWC,EAAQC,EAAMC,GAchC,OAVEH,EAjBJ,WACE,GAAuB,oBAAZI,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAC,KAAKrB,UAAUsB,SAASC,KAAKN,QAAQC,UAAUG,KAAM,GAAI,gBAClD,EACP,MAAOG,GACP,OAAO,GAKLC,GACWR,QAAQC,UAER,SAAoBJ,EAAQC,EAAMC,GAC7C,IAAIU,EAAI,CAAC,MACTA,EAAEC,KAAKC,MAAMF,EAAGX,GAChB,IACIc,EAAW,IADGC,SAASC,KAAKH,MAAMd,EAAQY,IAG9C,OADIV,GAAOL,EAAgBkB,EAAUb,EAAMhB,WACpC6B,IAIOD,MAAM,KAAMI,WAOhC,SAASC,EAAiBjB,GACxB,IAAIkB,EAAwB,mBAARC,IAAqB,IAAIA,SAAQC,EA8BrD,OA5BAH,EAAmB,SAA0BjB,GAC3C,GAAc,OAAVA,IARR,SAA2BqB,GACzB,OAAgE,IAAzDP,SAASR,SAASC,KAAKc,GAAIC,QAAQ,iBAOjBC,CAAkBvB,GAAQ,OAAOA,EAExD,GAAqB,mBAAVA,EACT,MAAM,IAAIwB,UAAU,sDAGtB,QAAsB,IAAXN,EAAwB,CACjC,GAAIA,EAAOO,IAAIzB,GAAQ,OAAOkB,EAAOQ,IAAI1B,GAEzCkB,EAAOS,IAAI3B,EAAO4B,GAGpB,SAASA,IACP,OAAO/B,EAAWG,EAAOgB,UAAWzB,EAAgBsC,MAAMxC,aAW5D,OARAuC,EAAQ5C,UAAYP,OAAOW,OAAOY,EAAMhB,UAAW,CACjDK,YAAa,CACXyC,MAAOF,EACPtD,YAAY,EACZE,UAAU,EACVD,cAAc,KAGXoB,EAAgBiC,EAAS5B,KAGVA,GAQ1B,IAAI+B,EAEJ,SAAUC,GAGR,SAASD,IACP,OAAOC,EAAOpB,MAAMiB,KAAMb,YAAca,KAG1C,OANA5C,EAAe8C,EAAYC,GAMpBD,EAPT,CAQEd,EAAiBgB,QAMfC,EAEJ,SAAUC,GAGR,SAASD,EAAqBE,GAC5B,OAAOD,EAAY5B,KAAKsB,KAAM,qBAAuBO,EAAOC,cAAgBR,KAG9E,OANA5C,EAAeiD,EAAsBC,GAM9BD,EAPT,CAQEH,GAKEO,EAEJ,SAAUC,GAGR,SAASD,EAAqBF,GAC5B,OAAOG,EAAahC,KAAKsB,KAAM,qBAAuBO,EAAOC,cAAgBR,KAG/E,OANA5C,EAAeqD,EAAsBC,GAM9BD,EAPT,CAQEP,GAKES,EAEJ,SAAUC,GAGR,SAASD,EAAqBJ,GAC5B,OAAOK,EAAalC,KAAKsB,KAAM,qBAAuBO,EAAOC,cAAgBR,KAG/E,OANA5C,EAAeuD,EAAsBC,GAM9BD,EAPT,CAQET,GAKEW,EAEJ,SAAUC,GAGR,SAASD,IACP,OAAOC,EAAa/B,MAAMiB,KAAMb,YAAca,KAGhD,OANA5C,EAAeyD,EAA+BC,GAMvCD,EAPT,CAQEX,GAKEa,EAEJ,SAAUC,GAGR,SAASD,EAAiBE,GACxB,OAAOD,EAAatC,KAAKsB,KAAM,gBAAkBiB,IAASjB,KAG5D,OANA5C,EAAe2D,EAAkBC,GAM1BD,EAPT,CAQEb,GAKEgB,EAEJ,SAAUC,GAGR,SAASD,IACP,OAAOC,EAAapC,MAAMiB,KAAMb,YAAca,KAGhD,OANA5C,EAAe8D,EAAsBC,GAM9BD,EAPT,CAQEhB,GAKEkB,EAEJ,SAAUC,GAGR,SAASD,IACP,OAAOC,EAAa3C,KAAKsB,KAAM,8BAAgCA,KAGjE,OANA5C,EAAegE,EAAqBC,GAM7BD,EAPT,CAQElB,GAKEoB,EAAI,UACJC,EAAI,QACJC,EAAI,OACJC,EAAa,CACfC,KAAMJ,EACNK,MAAOL,EACPM,IAAKN,GAEHO,EAAW,CACbH,KAAMJ,EACNK,MAAOJ,EACPK,IAAKN,GAEHQ,EAAY,CACdJ,KAAMJ,EACNK,MAAOH,EACPI,IAAKN,GAEHS,EAAY,CACdL,KAAMJ,EACNK,MAAOH,EACPI,IAAKN,EACLU,QAASR,GAEPS,EAAc,CAChBC,KAAMZ,EACNa,OAAQb,GAENc,EAAoB,CACtBF,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,GAENgB,EAAyB,CAC3BJ,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,EACRiB,aAAchB,GAEZiB,EAAwB,CAC1BN,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,EACRiB,aAAcf,GAEZiB,EAAiB,CACnBP,KAAMZ,EACNa,OAAQb,EACRoB,QAAQ,GAMNC,EAAuB,CACzBT,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,EACRoB,QAAQ,GAMNE,EAA4B,CAC9BV,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,EACRoB,QAAQ,EACRH,aAAchB,GAMZsB,EAA2B,CAC7BX,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,EACRoB,QAAQ,EACRH,aAAcf,GAMZsB,EAAiB,CACnBpB,KAAMJ,EACNK,MAAOL,EACPM,IAAKN,EACLY,KAAMZ,EACNa,OAAQb,GAMNyB,EAA8B,CAChCrB,KAAMJ,EACNK,MAAOL,EACPM,IAAKN,EACLY,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,GAEN0B,EAAe,CACjBtB,KAAMJ,EACNK,MAAOJ,EACPK,IAAKN,EACLY,KAAMZ,EACNa,OAAQb,GAEN2B,EAA4B,CAC9BvB,KAAMJ,EACNK,MAAOJ,EACPK,IAAKN,EACLY,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,GAEN4B,EAA4B,CAC9BxB,KAAMJ,EACNK,MAAOJ,EACPK,IAAKN,EACLU,QAAST,EACTW,KAAMZ,EACNa,OAAQb,GAEN6B,EAAgB,CAClBzB,KAAMJ,EACNK,MAAOH,EACPI,IAAKN,EACLY,KAAMZ,EACNa,OAAQb,EACRiB,aAAchB,GAEZ6B,EAA6B,CAC/B1B,KAAMJ,EACNK,MAAOH,EACPI,IAAKN,EACLY,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,EACRiB,aAAchB,GAEZ8B,EAAgB,CAClB3B,KAAMJ,EACNK,MAAOH,EACPI,IAAKN,EACLU,QAASR,EACTU,KAAMZ,EACNa,OAAQb,EACRiB,aAAcf,GAEZ8B,EAA6B,CAC/B5B,KAAMJ,EACNK,MAAOH,EACPI,IAAKN,EACLU,QAASR,EACTU,KAAMZ,EACNa,OAAQb,EACRe,OAAQf,EACRiB,aAAcf,GAahB,SAAS+B,EAAY5F,GACnB,YAAoB,IAANA,EAEhB,SAAS6F,EAAS7F,GAChB,MAAoB,iBAANA,EAEhB,SAAS8F,EAAU9F,GACjB,MAAoB,iBAANA,GAAkBA,EAAI,GAAM,EAS5C,SAAS+F,IACP,IACE,MAAuB,oBAATC,MAAwBA,KAAKC,eAC3C,MAAOjF,GACP,OAAO,GAGX,SAASkF,IACP,OAAQN,EAAYI,KAAKC,eAAezG,UAAU2G,eAEpD,SAASC,IACP,IACE,MAAuB,oBAATJ,QAA0BA,KAAKK,mBAC7C,MAAOrF,GACP,OAAO,GAOX,SAASsF,EAAOC,EAAKC,EAAIC,GACvB,GAAmB,IAAfF,EAAI3H,OAIR,OAAO2H,EAAIG,OAAO,SAAUC,EAAMC,GAChC,IAAIC,EAAO,CAACL,EAAGI,GAAOA,GAEtB,OAAKD,GAEMF,EAAQE,EAAK,GAAIE,EAAK,MAAQF,EAAK,GACrCA,EAFAE,GAMR,MAAM,GAEX,SAASC,EAAKC,EAAKC,GACjB,OAAOA,EAAKN,OAAO,SAAUxF,EAAG+F,GAE9B,OADA/F,EAAE+F,GAAKF,EAAIE,GACJ/F,GACN,IAEL,SAASgG,EAAeH,EAAKI,GAC3B,OAAOlI,OAAOO,UAAU0H,eAAenG,KAAKgG,EAAKI,GAGnD,SAASC,EAAeC,EAAOC,EAAQC,GACrC,OAAOzB,EAAUuB,IAAmBC,GAATD,GAAmBA,GAASE,EAMzD,SAASC,EAASC,EAAO9D,GAKvB,YAJU,IAANA,IACFA,EAAI,GAGF8D,EAAM3G,WAAWlC,OAAS+E,GACpB,IAAI+D,OAAO/D,GAAK8D,GAAOE,OAAOhE,GAE/B8D,EAAM3G,WAGjB,SAAS8G,EAAaC,GACpB,OAAIjC,EAAYiC,IAAsB,OAAXA,GAA8B,KAAXA,OAC5C,EAEOC,SAASD,EAAQ,IAG5B,SAASE,EAAYC,GAEnB,IAAIpC,EAAYoC,IAA0B,OAAbA,GAAkC,KAAbA,EAAlD,CAGE,IAAIC,EAAkC,IAA9BC,WAAW,KAAOF,GAC1B,OAAOG,KAAKC,MAAMH,IAGtB,SAASI,EAAQC,EAAQC,EAAQC,QACZ,IAAfA,IACFA,GAAa,GAGf,IAAIC,EAASN,KAAKO,IAAI,GAAIH,GAE1B,OADcC,EAAaL,KAAKQ,MAAQR,KAAKS,OAC9BN,EAASG,GAAUA,EAGpC,SAASI,GAAW9E,GAClB,OAAOA,EAAO,GAAM,IAAMA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,GAE/D,SAAS+E,GAAW/E,GAClB,OAAO8E,GAAW9E,GAAQ,IAAM,IAElC,SAASgF,GAAYhF,EAAMC,GACzB,IAAIgF,EA/CN,SAAkBC,EAAGtF,GACnB,OAAOsF,EAAItF,EAAIwE,KAAKC,MAAMa,EAAItF,GA8CfuF,CAASlF,EAAQ,EAAG,IAAM,EAGzC,OAAiB,IAAbgF,EACKH,GAHK9E,GAAQC,EAAQgF,GAAY,IAGX,GAAK,GAE3B,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAIA,EAAW,GAIzE,SAASG,GAAapC,GACpB,IAAIqC,EAAIvI,KAAKwI,IAAItC,EAAIhD,KAAMgD,EAAI/C,MAAQ,EAAG+C,EAAI9C,IAAK8C,EAAIxC,KAAMwC,EAAIvC,OAAQuC,EAAIrC,OAAQqC,EAAIuC,aAOzF,OALIvC,EAAIhD,KAAO,KAAmB,GAAZgD,EAAIhD,OACxBqF,EAAI,IAAIvI,KAAKuI,IACXG,eAAeH,EAAEI,iBAAmB,OAGhCJ,EAEV,SAASK,GAAgBC,GACvB,IAAIC,GAAMD,EAAWvB,KAAKC,MAAMsB,EAAW,GAAKvB,KAAKC,MAAMsB,EAAW,KAAOvB,KAAKC,MAAMsB,EAAW,MAAQ,EACvGE,EAAOF,EAAW,EAClBG,GAAMD,EAAOzB,KAAKC,MAAMwB,EAAO,GAAKzB,KAAKC,MAAMwB,EAAO,KAAOzB,KAAKC,MAAMwB,EAAO,MAAQ,EAC3F,OAAc,GAAPD,GAAmB,GAAPE,EAAW,GAAK,GAErC,SAASC,GAAe/F,GACtB,OAAW,GAAPA,EACKA,EACY,GAAPA,EAAY,KAAOA,EAAO,IAAOA,EAGjD,SAASgG,GAAcC,EAAIC,EAAcC,EAAQC,QAC9B,IAAbA,IACFA,EAAW,MAGb,IAAIC,EAAO,IAAIvJ,KAAKmJ,GAChBK,EAAW,CACbtF,QAAQ,EACRhB,KAAM,UACNC,MAAO,UACPC,IAAK,UACLM,KAAM,UACNC,OAAQ,WAGN2F,IACFE,EAASF,SAAWA,GAGtB,IAAIG,EAAWrL,OAAOsL,OAAO,CAC3B3F,aAAcqF,GACbI,GACCG,EAAOzE,IAEX,GAAIyE,GAAQtE,IAAoB,CAC9B,IAAIuE,EAAS,IAAIzE,KAAKC,eAAeiE,EAAQI,GAAUnE,cAAciE,GAAMM,KAAK,SAAUC,GACxF,MAAgC,iBAAzBA,EAAEC,KAAKC,gBAEhB,OAAOJ,EAASA,EAAOnI,MAAQ,KAC1B,GAAIkI,EAAM,CAEf,IAAIM,EAAU,IAAI9E,KAAKC,eAAeiE,EAAQG,GAAUU,OAAOX,GAI/D,OAHe,IAAIpE,KAAKC,eAAeiE,EAAQI,GAAUS,OAAOX,GAC1CY,UAAUF,EAAQlM,QACnBqM,QAAQ,eAAgB,IAG7C,OAAO,KAIX,SAASC,GAAaC,EAAYC,GAChC,IAAIC,EAAUvD,SAASqD,EAAY,IAE/BG,OAAOC,MAAMF,KACfA,EAAU,GAGZ,IAAIG,EAAS1D,SAASsD,EAAc,KAAO,EAE3C,OAAiB,GAAVC,GADYA,EAAU,GAAKpM,OAAOwM,GAAGJ,GAAU,IAAMG,EAASA,GAIvE,SAASE,GAASpJ,GAChB,IAAIqJ,EAAeL,OAAOhJ,GAC1B,GAAqB,kBAAVA,GAAiC,KAAVA,GAAgBgJ,OAAOC,MAAMI,GAAe,MAAM,IAAIpI,EAAqB,sBAAwBjB,GACrI,OAAOqJ,EAET,SAASC,GAAgB7E,EAAK8E,EAAYC,GACxC,IAAIC,EAAa,GAEjB,IAAK,IAAIC,KAAKjF,EACZ,GAAIG,EAAeH,EAAKiF,GAAI,CAC1B,GAA8B,GAA1BF,EAAYhK,QAAQkK,GAAS,SACjC,IAAIC,EAAIlF,EAAIiF,GACZ,GAAIC,MAAAA,EAA+B,SACnCF,EAAWF,EAAWG,IAAMN,GAASO,GAIzC,OAAOF,EAET,SAASG,GAAaC,EAAQpB,GAC5B,IAAIqB,EAAQjE,KAAKQ,MAAMwD,EAAS,IAC5BE,EAAUlE,KAAKmE,IAAIH,EAAS,IAC5BI,EAAgB,GAATH,IAAenN,OAAOwM,GAAGW,GAAQ,GAAK,IAAM,IACnDI,EAAYD,EAAOpE,KAAKmE,IAAIF,GAEhC,OAAQrB,GACN,IAAK,QACH,OAAYwB,EAAO/E,EAASW,KAAKmE,IAAIF,GAAQ,GAAK,IAAM5E,EAAS6E,EAAS,GAE5E,IAAK,SACH,OAAiB,EAAVA,EAAcG,EAAO,IAAMH,EAAUG,EAE9C,IAAK,SACH,OAAYD,EAAO/E,EAASW,KAAKmE,IAAIF,GAAQ,GAAK5E,EAAS6E,EAAS,GAEtE,QACE,MAAM,IAAII,WAAW,gBAAkB1B,EAAS,yCAGtD,SAAS2B,GAAW3F,GAClB,OAAOD,EAAKC,EAAK,CAAC,OAAQ,SAAU,SAAU,gBAEhD,IAAI4F,GAAY,qEAEhB,SAASC,GAAU7F,GACjB,OAAO8F,KAAKD,UAAU7F,EAAK9H,OAAO+H,KAAKD,GAAK+F,QAO9C,IAAIC,GAAa,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC5HC,GAAc,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5FC,GAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC3E,SAASC,GAAOtO,GACd,OAAQA,GACN,IAAK,SACH,OAAOqO,GAET,IAAK,QACH,OAAOD,GAET,IAAK,OACH,OAAOD,GAET,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MAEnE,IAAK,UACH,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE5E,QACE,OAAO,MAGb,IAAII,GAAe,CAAC,SAAU,UAAW,YAAa,WAAY,SAAU,WAAY,UACpFC,GAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,GAAiB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACpD,SAASC,GAAS1O,GAChB,OAAQA,GACN,IAAK,SACH,OAAOyO,GAET,IAAK,QACH,OAAOD,GAET,IAAK,OACH,OAAOD,GAET,IAAK,UACH,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAExC,QACE,OAAO,MAGb,IAAII,GAAY,CAAC,KAAM,MACnBC,GAAW,CAAC,gBAAiB,eAC7BC,GAAY,CAAC,KAAM,MACnBC,GAAa,CAAC,IAAK,KACvB,SAASC,GAAK/O,GACZ,OAAQA,GACN,IAAK,SACH,OAAO8O,GAET,IAAK,QACH,OAAOD,GAET,IAAK,OACH,OAAOD,GAET,QACE,OAAO,MAyIb,SAASI,GAAgBC,EAAQC,GAC/B,IAAIlK,EAAI,GAECmK,EAAYF,EAAQG,EAAWC,MAAMC,QAAQH,GAAYI,EAAK,EAAvE,IAA0EJ,EAAYC,EAAWD,EAAYA,EAAUK,OAAOC,cAAe,CAC3I,IAAIC,EAEJ,GAAIN,EAAU,CACZ,GAAIG,GAAMJ,EAAUnP,OAAQ,MAC5B0P,EAAOP,EAAUI,SACZ,CAEL,IADAA,EAAKJ,EAAUnH,QACR2H,KAAM,MACbD,EAAOH,EAAG7L,MAGZ,IAAIkM,EAAQF,EAERE,EAAMC,QACR7K,GAAK4K,EAAME,IAEX9K,GAAKkK,EAAcU,EAAME,KAI7B,OAAO9K,EAGT,IAAI+K,GAA0B,CAC5BC,EAAG9K,EACH+K,GAAI3K,EACJ4K,IAAK3K,EACL4K,KAAM3K,EACN4K,EAAG1K,EACH2K,GAAIxK,EACJyK,IAAKvK,EACLwK,KAAMtK,EACNuK,EAAGtK,EACHuK,GAAIrK,EACJsK,IAAKrK,EACLsK,KAAMrK,EACN+C,EAAG9C,EACHqK,GAAInK,EACJoK,IAAKjK,EACLkK,KAAMhK,EACNiK,EAAGvK,EACHwK,GAAItK,EACJuK,IAAKpK,EACLqK,KAAMnK,GAMJoK,GAEJ,WA4DE,SAASA,EAAU7F,EAAQ8F,GACzB3N,KAAK4N,KAAOD,EACZ3N,KAAK6N,IAAMhG,EACX7H,KAAK8N,UAAY,KA9DnBJ,EAAUnQ,OAAS,SAAgBsK,EAAQ+F,GAKzC,YAJa,IAATA,IACFA,EAAO,IAGF,IAAIF,EAAU7F,EAAQ+F,IAG/BF,EAAUK,YAAc,SAAqBC,GAM3C,IALA,IAAIC,EAAU,KACVC,EAAc,GACdC,GAAY,EACZ3C,EAAS,GAEJlP,EAAI,EAAGA,EAAI0R,EAAIzR,OAAQD,IAAK,CACnC,IAAI8R,EAAIJ,EAAIK,OAAO/R,GAET,MAAN8R,GACuB,EAArBF,EAAY3R,QACdiP,EAAO1M,KAAK,CACVsN,QAAS+B,EACT9B,IAAK6B,IAITD,EAAU,KACVC,EAAc,GACdC,GAAaA,GACJA,EACTD,GAAeE,EACNA,IAAMH,EACfC,GAAeE,GAEU,EAArBF,EAAY3R,QACdiP,EAAO1M,KAAK,CACVsN,SAAS,EACTC,IAAK6B,IAKTD,EADAC,EAAcE,GAYlB,OAPyB,EAArBF,EAAY3R,QACdiP,EAAO1M,KAAK,CACVsN,QAAS+B,EACT9B,IAAK6B,IAIF1C,GAGTkC,EAAUY,uBAAyB,SAAgCnC,GACjE,OAAOG,GAAwBH,IASjC,IAAIoC,EAASb,EAAUvQ,UAqavB,OAnaAoR,EAAOC,wBAA0B,SAAiCC,EAAIb,GAMpE,OALuB,OAAnB5N,KAAK8N,YACP9N,KAAK8N,UAAY9N,KAAK6N,IAAIa,qBAGnB1O,KAAK8N,UAAUa,YAAYF,EAAI7R,OAAOsL,OAAO,GAAIlI,KAAK4N,KAAMA,IAC3DlF,UAGZ6F,EAAOK,eAAiB,SAAwBH,EAAIb,GAMlD,YALa,IAATA,IACFA,EAAO,IAGA5N,KAAK6N,IAAIc,YAAYF,EAAI7R,OAAOsL,OAAO,GAAIlI,KAAK4N,KAAMA,IACrDlF,UAGZ6F,EAAOM,oBAAsB,SAA6BJ,EAAIb,GAM5D,YALa,IAATA,IACFA,EAAO,IAGA5N,KAAK6N,IAAIc,YAAYF,EAAI7R,OAAOsL,OAAO,GAAIlI,KAAK4N,KAAMA,IACrD9J,iBAGZyK,EAAOO,gBAAkB,SAAyBL,EAAIb,GAMpD,YALa,IAATA,IACFA,EAAO,IAGA5N,KAAK6N,IAAIc,YAAYF,EAAI7R,OAAOsL,OAAO,GAAIlI,KAAK4N,KAAMA,IACrDkB,mBAGZP,EAAOQ,IAAM,SAAazN,EAAGvD,GAM3B,QALU,IAANA,IACFA,EAAI,GAIFiC,KAAK4N,KAAKoB,YACZ,OAAO7J,EAAS7D,EAAGvD,GAGrB,IAAI6P,EAAOhR,OAAOsL,OAAO,GAAIlI,KAAK4N,MAMlC,OAJQ,EAAJ7P,IACF6P,EAAKqB,MAAQlR,GAGRiC,KAAK6N,IAAIqB,gBAAgBtB,GAAMlF,OAAOpH,IAG/CiN,EAAOY,yBAA2B,SAAkCV,EAAIT,GAKzD,SAATxI,EAAyBoI,EAAMwB,GACjC,OAAOC,EAAMxB,IAAIuB,QAAQX,EAAIb,EAAMwB,GAElB,SAAfvF,EAAqC+D,GACvC,OAAIa,EAAGa,eAA+B,IAAdb,EAAG3E,QAAgB8D,EAAK2B,OACvC,IAGFd,EAAGe,QAAUf,EAAGgB,KAAK5F,aAAa4E,EAAG9G,GAAIiG,EAAKlF,QAAU,GAElD,SAAXgH,IACF,OAAOC,EAxUb,SAA6BlB,GAC3B,OAAOvD,GAAUuD,EAAGvM,KAAO,GAAK,EAAI,GAuUV0N,CAAoBnB,GAAMjJ,EAAO,CACrDtD,KAAM,UACNQ,QAAQ,GACP,aAEO,SAARf,EAAuBpF,EAAQsT,GACjC,OAAOF,EAxUb,SAA0BlB,EAAIlS,GAC5B,OAAOsO,GAAOtO,GAAQkS,EAAG9M,MAAQ,GAuUPmO,CAAiBrB,EAAIlS,GAAUiJ,EAAOqK,EAAa,CACvElO,MAAOpF,GACL,CACFoF,MAAOpF,EACPqF,IAAK,WACJ,SAES,SAAVI,EAA2BzF,EAAQsT,GACrC,OAAOF,EAnVb,SAA4BlB,EAAIlS,GAC9B,OAAO0O,GAAS1O,GAAQkS,EAAGzM,QAAU,GAkVX+N,CAAmBtB,EAAIlS,GAAUiJ,EAAOqK,EAAa,CACzE7N,QAASzF,GACP,CACFyF,QAASzF,EACToF,MAAO,OACPC,IAAK,WACJ,WAWK,SAANoO,EAAmBzT,GACrB,OAAOoT,EA/Vb,SAAwBlB,EAAIlS,GAC1B,OAAO+O,GAAK/O,GAAQkS,EAAG/M,KAAO,EAAI,EAAI,GA8VZuO,CAAexB,EAAIlS,GAAUiJ,EAAO,CACxDwK,IAAKzT,GACJ,OAjDL,IAAI8S,EAAQrP,KAER2P,EAA0C,OAA3B3P,KAAK6N,IAAIqC,cACxBC,EAAuBnQ,KAAK6N,IAAIuC,gBAA8C,YAA5BpQ,KAAK6N,IAAIuC,gBAAgCvM,IA+S/F,OAAO0H,GAAgBmC,EAAUK,YAAYC,GA/PzB,SAAuB7B,GAEzC,OAAQA,GAEN,IAAK,IACH,OAAOkD,EAAMN,IAAIN,EAAGxH,aAEtB,IAAK,IAEL,IAAK,MACH,OAAOoI,EAAMN,IAAIN,EAAGxH,YAAa,GAGnC,IAAK,IACH,OAAOoI,EAAMN,IAAIN,EAAGpM,QAEtB,IAAK,KACH,OAAOgN,EAAMN,IAAIN,EAAGpM,OAAQ,GAG9B,IAAK,IACH,OAAOgN,EAAMN,IAAIN,EAAGtM,QAEtB,IAAK,KACH,OAAOkN,EAAMN,IAAIN,EAAGtM,OAAQ,GAG9B,IAAK,IACH,OAAOkN,EAAMN,IAAIN,EAAGvM,KAAO,IAAO,EAAI,GAAKuM,EAAGvM,KAAO,IAEvD,IAAK,KACH,OAAOmN,EAAMN,IAAIN,EAAGvM,KAAO,IAAO,EAAI,GAAKuM,EAAGvM,KAAO,GAAI,GAE3D,IAAK,IACH,OAAOmN,EAAMN,IAAIN,EAAGvM,MAEtB,IAAK,KACH,OAAOmN,EAAMN,IAAIN,EAAGvM,KAAM,GAG5B,IAAK,IAEH,OAAO2H,EAAa,CAClBnB,OAAQ,SACR6G,OAAQF,EAAMzB,KAAK2B,SAGvB,IAAK,KAEH,OAAO1F,EAAa,CAClBnB,OAAQ,QACR6G,OAAQF,EAAMzB,KAAK2B,SAGvB,IAAK,MAEH,OAAO1F,EAAa,CAClBnB,OAAQ,SACR6G,QAAQ,IAGZ,IAAK,OAEH,OAAOd,EAAGgB,KAAKY,WAAW5B,EAAG9G,GAAI,CAC/Be,OAAQ,QACRb,OAAQwH,EAAMxB,IAAIhG,SAGtB,IAAK,QAEH,OAAO4G,EAAGgB,KAAKY,WAAW5B,EAAG9G,GAAI,CAC/Be,OAAQ,OACRb,OAAQwH,EAAMxB,IAAIhG,SAItB,IAAK,IAEH,OAAO4G,EAAG6B,SAGZ,IAAK,IACH,OAAOZ,IAGT,IAAK,IACH,OAAOS,EAAuB3K,EAAO,CACnC5D,IAAK,WACJ,OAASyN,EAAMN,IAAIN,EAAG7M,KAE3B,IAAK,KACH,OAAOuO,EAAuB3K,EAAO,CACnC5D,IAAK,WACJ,OAASyN,EAAMN,IAAIN,EAAG7M,IAAK,GAGhC,IAAK,IAEH,OAAOyN,EAAMN,IAAIN,EAAGzM,SAEtB,IAAK,MAEH,OAAOA,EAAQ,SAAS,GAE1B,IAAK,OAEH,OAAOA,EAAQ,QAAQ,GAEzB,IAAK,QAEH,OAAOA,EAAQ,UAAU,GAG3B,IAAK,IAEH,OAAOqN,EAAMN,IAAIN,EAAGzM,SAEtB,IAAK,MAEH,OAAOA,EAAQ,SAAS,GAE1B,IAAK,OAEH,OAAOA,EAAQ,QAAQ,GAEzB,IAAK,QAEH,OAAOA,EAAQ,UAAU,GAG3B,IAAK,IAEH,OAAOmO,EAAuB3K,EAAO,CACnC7D,MAAO,UACPC,IAAK,WACJ,SAAWyN,EAAMN,IAAIN,EAAG9M,OAE7B,IAAK,KAEH,OAAOwO,EAAuB3K,EAAO,CACnC7D,MAAO,UACPC,IAAK,WACJ,SAAWyN,EAAMN,IAAIN,EAAG9M,MAAO,GAEpC,IAAK,MAEH,OAAOA,EAAM,SAAS,GAExB,IAAK,OAEH,OAAOA,EAAM,QAAQ,GAEvB,IAAK,QAEH,OAAOA,EAAM,UAAU,GAGzB,IAAK,IAEH,OAAOwO,EAAuB3K,EAAO,CACnC7D,MAAO,WACN,SAAW0N,EAAMN,IAAIN,EAAG9M,OAE7B,IAAK,KAEH,OAAOwO,EAAuB3K,EAAO,CACnC7D,MAAO,WACN,SAAW0N,EAAMN,IAAIN,EAAG9M,MAAO,GAEpC,IAAK,MAEH,OAAOA,EAAM,SAAS,GAExB,IAAK,OAEH,OAAOA,EAAM,QAAQ,GAEvB,IAAK,QAEH,OAAOA,EAAM,UAAU,GAGzB,IAAK,IAEH,OAAOwO,EAAuB3K,EAAO,CACnC9D,KAAM,WACL,QAAU2N,EAAMN,IAAIN,EAAG/M,MAE5B,IAAK,KAEH,OAAOyO,EAAuB3K,EAAO,CACnC9D,KAAM,WACL,QAAU2N,EAAMN,IAAIN,EAAG/M,KAAKjD,WAAW6G,OAAO,GAAI,GAEvD,IAAK,OAEH,OAAO6K,EAAuB3K,EAAO,CACnC9D,KAAM,WACL,QAAU2N,EAAMN,IAAIN,EAAG/M,KAAM,GAElC,IAAK,SAEH,OAAOyO,EAAuB3K,EAAO,CACnC9D,KAAM,WACL,QAAU2N,EAAMN,IAAIN,EAAG/M,KAAM,GAGlC,IAAK,IAEH,OAAOsO,EAAI,SAEb,IAAK,KAEH,OAAOA,EAAI,QAEb,IAAK,QACH,OAAOA,EAAI,UAEb,IAAK,KACH,OAAOX,EAAMN,IAAIN,EAAGpH,SAAS5I,WAAW6G,OAAO,GAAI,GAErD,IAAK,OACH,OAAO+J,EAAMN,IAAIN,EAAGpH,SAAU,GAEhC,IAAK,IACH,OAAOgI,EAAMN,IAAIN,EAAG8B,YAEtB,IAAK,KACH,OAAOlB,EAAMN,IAAIN,EAAG8B,WAAY,GAElC,IAAK,IACH,OAAOlB,EAAMN,IAAIN,EAAG+B,SAEtB,IAAK,MACH,OAAOnB,EAAMN,IAAIN,EAAG+B,QAAS,GAE/B,IAAK,IAEH,OAAOnB,EAAMN,IAAIN,EAAGgC,SAEtB,IAAK,KAEH,OAAOpB,EAAMN,IAAIN,EAAGgC,QAAS,GAE/B,IAAK,IACH,OAAOpB,EAAMN,IAAIjJ,KAAKC,MAAM0I,EAAG9G,GAAK,MAEtC,IAAK,IACH,OAAO0H,EAAMN,IAAIN,EAAG9G,IAEtB,QACE,OAzQW,SAAoBwE,GACnC,IAAIwB,EAAaD,EAAUY,uBAAuBnC,GAElD,OAAIwB,EACK0B,EAAMb,wBAAwBC,EAAId,GAElCxB,EAmQEuE,CAAWvE,OAO1BoC,EAAOoC,yBAA2B,SAAkCC,EAAK5C,GAGpD,SAAf6C,EAAqC1E,GACvC,OAAQA,EAAM,IACZ,IAAK,IACH,MAAO,cAET,IAAK,IACH,MAAO,SAET,IAAK,IACH,MAAO,SAET,IAAK,IACH,MAAO,OAET,IAAK,IACH,MAAO,MAET,IAAK,IACH,MAAO,QAET,IAAK,IACH,MAAO,OAET,QACE,OAAO,MA1Bb,IA6B2C2E,EA7BvCC,EAAS/Q,KAwCTgR,EAAStD,EAAUK,YAAYC,GAC/BiD,EAAaD,EAAO3M,OAAO,SAAU6M,EAAOC,GAC9C,IAAI/E,EAAU+E,EAAM/E,QAChBC,EAAM8E,EAAM9E,IAChB,OAAOD,EAAU8E,EAAQA,EAAME,OAAO/E,IACrC,IACCgF,EAAYT,EAAIU,QAAQvS,MAAM6R,EAAKK,EAAWM,IAAIV,GAAcW,OAAO,SAAU7E,GACnF,OAAOA,KAGT,OAAOpB,GAAgByF,GArBoBF,EAqBEO,EApBpC,SAAUlF,GACf,IAAIsF,EAASZ,EAAa1E,GAE1B,OAAIsF,EACKV,EAAOhC,IAAI+B,EAAOjR,IAAI4R,GAAStF,EAAM5P,QAErC4P,MAiBRuB,EAveT,GA0eIgE,GAEJ,WACE,SAASA,EAAQnR,EAAQoR,GACvB3R,KAAKO,OAASA,EACdP,KAAK2R,YAAcA,EAarB,OAVaD,EAAQvU,UAEdqD,UAAY,WACjB,OAAIR,KAAK2R,YACA3R,KAAKO,OAAS,KAAOP,KAAK2R,YAE1B3R,KAAKO,QAITmR,EAhBT,GAuBIE,GAEJ,WACE,SAASA,KAET,IAAIrD,EAASqD,EAAKzU,UAgGlB,OArFAoR,EAAO8B,WAAa,SAAoB1I,EAAIiG,GAC1C,MAAM,IAAIxM,GAYZmN,EAAO1E,aAAe,SAAsBlC,EAAIe,GAC9C,MAAM,IAAItH,GAUZmN,EAAOzE,OAAS,SAAgBnC,GAC9B,MAAM,IAAIvG,GAUZmN,EAAOsD,OAAS,SAAgBC,GAC9B,MAAM,IAAI1Q,GASZrE,EAAa6U,EAAM,CAAC,CAClB9U,IAAK,OAOL+C,IAAK,WACH,MAAM,IAAIuB,IAQX,CACDtE,IAAK,OACL+C,IAAK,WACH,MAAM,IAAIuB,IAQX,CACDtE,IAAK,YACL+C,IAAK,WACH,MAAM,IAAIuB,IAEX,CACDtE,IAAK,UACL+C,IAAK,WACH,MAAM,IAAIuB,MAIPwQ,EAnGT,GAsGIG,GAAY,KAMZC,GAEJ,SAAUC,GAGR,SAASD,IACP,OAAOC,EAAMlT,MAAMiB,KAAMb,YAAca,KAHzC5C,EAAe4U,EAAWC,GAM1B,IAAI1D,EAASyD,EAAU7U,UAyEvB,OAtEAoR,EAAO8B,WAAa,SAAoB1I,EAAIsE,GAG1C,OAAOvE,GAAcC,EAFRsE,EAAKvD,OACLuD,EAAKpE,SAMpB0G,EAAO1E,aAAe,SAAwBlC,EAAIe,GAChD,OAAOmB,GAAa7J,KAAK8J,OAAOnC,GAAKe,IAKvC6F,EAAOzE,OAAS,SAAgBnC,GAC9B,OAAQ,IAAInJ,KAAKmJ,GAAIuK,qBAKvB3D,EAAOsD,OAAS,SAAgBC,GAC9B,MAA0B,UAAnBA,EAAUvJ,MAKnBxL,EAAaiV,EAAW,CAAC,CACvBlV,IAAK,OAGL+C,IAAK,WACH,MAAO,UAIR,CACD/C,IAAK,OACL+C,IAAK,WACH,OAAI6D,KACK,IAAIC,KAAKC,gBAAiBkL,kBAAkBhH,SACvC,UAIf,CACDhL,IAAK,YACL+C,IAAK,WACH,OAAO,IAER,CACD/C,IAAK,UACL+C,IAAK,WACH,OAAO,KAEP,CAAC,CACH/C,IAAK,WAML+C,IAAK,WAKH,OAJkB,OAAdkS,KACFA,GAAY,IAAIC,GAGXD,OAIJC,EAhFT,CAiFEJ,IAEEO,GAAgBC,OAAO,IAAM9H,GAAU+H,OAAS,KAChDC,GAAW,GAmBf,IAAIC,GAAY,CACd7Q,KAAM,EACNC,MAAO,EACPC,IAAK,EACLM,KAAM,EACNC,OAAQ,EACRE,OAAQ,GAiCV,IAAImQ,GAAgB,GAMhBC,GAEJ,SAAUR,GAyER,SAASQ,EAASC,GAChB,IAAIrD,EASJ,OAPAA,EAAQ4C,EAAMvT,KAAKsB,OAASA,MAGtBsQ,SAAWoC,EAGjBrD,EAAMsD,MAAQF,EAASG,YAAYF,GAC5BrD,EAlFTjS,EAAeqV,EAAUR,GAMzBQ,EAASlV,OAAS,SAAgBmV,GAKhC,OAJKF,GAAcE,KACjBF,GAAcE,GAAQ,IAAID,EAASC,IAG9BF,GAAcE,IAQvBD,EAASI,WAAa,WACpBL,GAAgB,GAChBF,GAAW,IAYbG,EAASK,iBAAmB,SAA0BvR,GACpD,SAAUA,IAAKA,EAAEwR,MAAMZ,MAYzBM,EAASG,YAAc,SAAqBnD,GAC1C,IAIE,OAHA,IAAI9L,KAAKC,eAAe,QAAS,CAC/BkE,SAAU2H,IACT/G,UACI,EACP,MAAO/J,GACP,OAAO,IAOX8T,EAASO,eAAiB,SAAwBC,GAChD,GAAIA,EAAW,CACb,IAAIF,EAAQE,EAAUF,MAAM,4BAE5B,GAAIA,EACF,OAAQ,GAAKtN,SAASsN,EAAM,IAIhC,OAAO,MAkBT,IAAIxE,EAASkE,EAAStV,UA6EtB,OA1EAoR,EAAO8B,WAAa,SAAoB1I,EAAIsE,GAG1C,OAAOvE,GAAcC,EAFRsE,EAAKvD,OACLuD,EAAKpE,OACuB7H,KAAK0S,OAKhDnE,EAAO1E,aAAe,SAAwBlC,EAAIe,GAChD,OAAOmB,GAAa7J,KAAK8J,OAAOnC,GAAKe,IAKvC6F,EAAOzE,OAAS,SAAgBnC,GAC9B,IAAII,EAAO,IAAIvJ,KAAKmJ,GAChBuL,EA3KR,SAAiBzD,GAcf,OAbK6C,GAAS7C,KACZ6C,GAAS7C,GAAQ,IAAI9L,KAAKC,eAAe,QAAS,CAChDlB,QAAQ,EACRoF,SAAU2H,EACV/N,KAAM,UACNC,MAAO,UACPC,IAAK,UACLM,KAAM,UACNC,OAAQ,UACRE,OAAQ,aAILiQ,GAAS7C,GA6JJ0D,CAAQnT,KAAK0S,MACnBvB,EAAQ+B,EAAIpP,cAtIpB,SAAqBoP,EAAKnL,GAIxB,IAHA,IAAIqL,EAAYF,EAAIpP,cAAciE,GAC9BsL,EAAS,GAEJ/W,EAAI,EAAGA,EAAI8W,EAAU7W,OAAQD,IAAK,CACzC,IAAIgX,EAAeF,EAAU9W,GACzBiM,EAAO+K,EAAa/K,KACpBtI,EAAQqT,EAAarT,MACrBsT,EAAMhB,GAAUhK,GAEfhF,EAAYgQ,KACfF,EAAOE,GAAO9N,SAASxF,EAAO,KAIlC,OAAOoT,EAuH2BG,CAAYN,EAAKnL,GAlJrD,SAAqBmL,EAAKnL,GACxB,IAAIqL,EAAYF,EAAIxK,OAAOX,GAAMa,QAAQ,UAAW,IAChDR,EAAS,0CAA0CqL,KAAKL,GACxDM,EAAStL,EAAO,GAChBuL,EAAOvL,EAAO,GAKlB,MAAO,CAJKA,EAAO,GAIJsL,EAAQC,EAHXvL,EAAO,GACLA,EAAO,GACPA,EAAO,IA0IsCwL,CAAYV,EAAKnL,GACtErG,EAAOyP,EAAM,GACbxP,EAAQwP,EAAM,GACdvP,EAAMuP,EAAM,GACZjP,EAAOiP,EAAM,GAKb0C,EAAQ/M,GAAa,CACvBpF,KAAMA,EACNC,MAAOA,EACPC,IAAKA,EACLM,KAN0B,KAATA,EAAc,EAAIA,EAOnCC,OATWgP,EAAM,GAUjB9O,OATW8O,EAAM,GAUjBlK,YAAa,IAEX6M,EAAO/L,EAAKgM,UAEhB,OAAQF,GADRC,GAAQA,EAAO,MACS,KAK1BvF,EAAOsD,OAAS,SAAgBC,GAC9B,MAA0B,SAAnBA,EAAUvJ,MAAmBuJ,EAAUY,OAAS1S,KAAK0S,MAK9D3V,EAAa0V,EAAU,CAAC,CACtB3V,IAAK,OACL+C,IAAK,WACH,MAAO,SAIR,CACD/C,IAAK,OACL+C,IAAK,WACH,OAAOG,KAAKsQ,WAIb,CACDxT,IAAK,YACL+C,IAAK,WACH,OAAO,IAER,CACD/C,IAAK,UACL+C,IAAK,WACH,OAAOG,KAAK2S,UAITF,EArKT,CAsKEb,IAEEoC,GAAc,KAMdC,GAEJ,SAAUhC,GAiDR,SAASgC,EAAgBnK,GACvB,IAAIuF,EAMJ,OAJAA,EAAQ4C,EAAMvT,KAAKsB,OAASA,MAGtBkU,MAAQpK,EACPuF,EAvDTjS,EAAe6W,EAAiBhC,GAOhCgC,EAAgBjV,SAAW,SAAkB8K,GAC3C,OAAkB,IAAXA,EAAemK,EAAgBE,YAAc,IAAIF,EAAgBnK,IAY1EmK,EAAgBG,eAAiB,SAAwB7S,GACvD,GAAIA,EAAG,CACL,IAAI8S,EAAI9S,EAAEwR,MAAM,yCAEhB,GAAIsB,EACF,OAAO,IAAIJ,EAAgBpL,GAAawL,EAAE,GAAIA,EAAE,KAIpD,OAAO,MAGTtX,EAAakX,EAAiB,KAAM,CAAC,CACnCnX,IAAK,cAML+C,IAAK,WAKH,OAJoB,OAAhBmU,KACFA,GAAc,IAAIC,EAAgB,IAG7BD,OAgBX,IAAIzF,EAAS0F,EAAgB9W,UAoD7B,OAjDAoR,EAAO8B,WAAa,WAClB,OAAOrQ,KAAK0S,MAKdnE,EAAO1E,aAAe,SAAwBlC,EAAIe,GAChD,OAAOmB,GAAa7J,KAAKkU,MAAOxL,IAMlC6F,EAAOzE,OAAS,WACd,OAAO9J,KAAKkU,OAKd3F,EAAOsD,OAAS,SAAgBC,GAC9B,MAA0B,UAAnBA,EAAUvJ,MAAoBuJ,EAAUoC,QAAUlU,KAAKkU,OAKhEnX,EAAakX,EAAiB,CAAC,CAC7BnX,IAAK,OACL+C,IAAK,WACH,MAAO,UAIR,CACD/C,IAAK,OACL+C,IAAK,WACH,OAAsB,IAAfG,KAAKkU,MAAc,MAAQ,MAAQrK,GAAa7J,KAAKkU,MAAO,YAEpE,CACDpX,IAAK,YACL+C,IAAK,WACH,OAAO,IAER,CACD/C,IAAK,UACL+C,IAAK,WACH,OAAO,MAIJoU,EAjHT,CAkHErC,IAOE0C,GAEJ,SAAUrC,GAGR,SAASqC,EAAYhE,GACnB,IAAIjB,EAMJ,OAJAA,EAAQ4C,EAAMvT,KAAKsB,OAASA,MAGtBsQ,SAAWA,EACVjB,EATTjS,EAAekX,EAAarC,GAc5B,IAAI1D,EAAS+F,EAAYnX,UAqDzB,OAlDAoR,EAAO8B,WAAa,WAClB,OAAO,MAKT9B,EAAO1E,aAAe,WACpB,MAAO,IAKT0E,EAAOzE,OAAS,WACd,OAAOyK,KAKThG,EAAOsD,OAAS,WACd,OAAO,GAKT9U,EAAauX,EAAa,CAAC,CACzBxX,IAAK,OACL+C,IAAK,WACH,MAAO,YAIR,CACD/C,IAAK,OACL+C,IAAK,WACH,OAAOG,KAAKsQ,WAIb,CACDxT,IAAK,YACL+C,IAAK,WACH,OAAO,IAER,CACD/C,IAAK,UACL+C,IAAK,WACH,OAAO,MAIJyU,EApET,CAqEE1C,IAKF,SAAS4C,GAAcpP,EAAOqP,GAC5B,IAAI3K,EAEJ,GAAIvG,EAAY6B,IAAoB,OAAVA,EACxB,OAAOqP,EACF,GAAIrP,aAAiBwM,GAC1B,OAAOxM,EACF,GArnDT,SAAkBzH,GAChB,MAAoB,iBAANA,EAonDH+W,CAAStP,GAAQ,CAC1B,IAAIuP,EAAUvP,EAAMoD,cACpB,MAAgB,UAAZmM,EAA4BF,EAAiC,QAAZE,GAAiC,QAAZA,EAA0BV,GAAgBE,YAAkE,OAA5CrK,EAAS2I,GAASO,eAAe5N,IAElK6O,GAAgBjV,SAAS8K,GACvB2I,GAASK,iBAAiB6B,GAAiBlC,GAASlV,OAAO6H,GAAmB6O,GAAgBG,eAAeO,IAAY,IAAIL,GAAYlP,GAC/I,OAAI5B,EAAS4B,GACX6O,GAAgBjV,SAASoG,GACN,iBAAVA,GAAsBA,EAAM0E,QAAkC,iBAAjB1E,EAAM0E,OAG5D1E,EAEA,IAAIkP,GAAYlP,GAI3B,IAAIwP,GAAM,WACR,OAAOpW,KAAKoW,OAEVH,GAAc,KAElBI,GAAgB,KACZC,GAAyB,KACzBC,GAAwB,KACxBC,IAAiB,EAMjBC,GAEJ,WACE,SAASA,KA0IT,OApIAA,EAASC,YAAc,WACrBC,GAAOtC,aACPJ,GAASI,cAGX9V,EAAakY,EAAU,KAAM,CAAC,CAC5BnY,IAAK,MAML+C,IAAK,WACH,OAAO+U,IAUT9U,IAAK,SAAawB,GAChBsT,GAAMtT,IAOP,CACDxE,IAAK,kBACL+C,IAAK,WACH,OAAOoV,EAASR,YAAY/B,MAO9B5S,IAAK,SAAasV,GAIdX,GAHGW,EAGWZ,GAAcY,GAFd,OAUjB,CACDtY,IAAK,cACL+C,IAAK,WACH,OAAO4U,IAAezC,GAAUhT,WAOjC,CACDlC,IAAK,gBACL+C,IAAK,WACH,OAAOgV,IAOT/U,IAAK,SAAa+H,GAChBgN,GAAgBhN,IAOjB,CACD/K,IAAK,yBACL+C,IAAK,WACH,OAAOiV,IAOThV,IAAK,SAAauV,GAChBP,GAAyBO,IAO1B,CACDvY,IAAK,wBACL+C,IAAK,WACH,OAAOkV,IAOTjV,IAAK,SAAasQ,GAChB2E,GAAwB3E,IAOzB,CACDtT,IAAK,iBACL+C,IAAK,WACH,OAAOmV,IAOTlV,IAAK,SAAa6M,GAChBqI,GAAiBrI,MAIdsI,EA3IT,GA8IIK,GAAc,GAElB,SAASC,GAAaC,EAAW5H,QAClB,IAATA,IACFA,EAAO,IAGT,IAAI9Q,EAAM0N,KAAKD,UAAU,CAACiL,EAAW5H,IACjCsF,EAAMoC,GAAYxY,GAOtB,OALKoW,IACHA,EAAM,IAAIvP,KAAKC,eAAe4R,EAAW5H,GACzC0H,GAAYxY,GAAOoW,GAGdA,EAGT,IAAIuC,GAAe,GAkBnB,IAAIC,GAAe,GAkBnB,IAAIC,GAAiB,KAyFrB,SAASC,GAAU/H,EAAKtR,EAAQsZ,EAAWC,EAAWC,GACpD,IAAIC,EAAOnI,EAAIqC,YAAY2F,GAE3B,MAAa,UAATG,EACK,KACW,OAATA,EACFF,EAAUvZ,GAEVwZ,EAAOxZ,GAgBlB,IAAI0Z,GAEJ,WACE,SAASA,EAAoB9N,EAAM6G,EAAapB,GAI9C,GAHA5N,KAAKiP,MAAQrB,EAAKqB,OAAS,EAC3BjP,KAAK+F,MAAQ6H,EAAK7H,QAAS,GAEtBiJ,GAAetL,IAAW,CAC7B,IAAIsE,EAAW,CACbkO,aAAa,GAEE,EAAbtI,EAAKqB,QAAWjH,EAASmO,qBAAuBvI,EAAKqB,OACzDjP,KAAKoW,IA/JX,SAAsBZ,EAAW5H,QAClB,IAATA,IACFA,EAAO,IAGT,IAAI9Q,EAAM0N,KAAKD,UAAU,CAACiL,EAAW5H,IACjCwI,EAAMX,GAAa3Y,GAOvB,OALKsZ,IACHA,EAAM,IAAIzS,KAAK0S,aAAab,EAAW5H,GACvC6H,GAAa3Y,GAAOsZ,GAGfA,EAkJQE,CAAanO,EAAMH,IAkBlC,OAdaiO,EAAoB9Y,UAE1BuL,OAAS,SAAgBpM,GAC9B,GAAI0D,KAAKoW,IAAK,CACZ,IAAIlC,EAAQlU,KAAK+F,MAAQD,KAAKC,MAAMzJ,GAAKA,EACzC,OAAO0D,KAAKoW,IAAI1N,OAAOwL,GAKvB,OAAO/O,EAFMnF,KAAK+F,MAAQD,KAAKC,MAAMzJ,GAAK0J,EAAQ1J,EAAG,GAE7B0D,KAAKiP,QAI1BgH,EA5BT,GAmCIM,GAEJ,WACE,SAASA,EAAkB9H,EAAItG,EAAMyF,GAGnC,IAAIwH,EA0BJ,GA5BApV,KAAK4N,KAAOA,EACZ5N,KAAK0D,QAAUA,IAGX+K,EAAGgB,KAAK+G,WAAaxW,KAAK0D,SAU5B0R,EAAI,MAEAxH,EAAKrL,aACPvC,KAAKyO,GAAKA,EAEVzO,KAAKyO,GAAmB,IAAdA,EAAG3E,OAAe2E,EAAKgI,GAASC,WAAWjI,EAAG9G,GAAiB,GAAZ8G,EAAG3E,OAAc,MAEtD,UAAjB2E,EAAGgB,KAAKlH,KACjBvI,KAAKyO,GAAKA,EAGV2G,GADApV,KAAKyO,GAAKA,GACHgB,KAAKiD,KAGV1S,KAAK0D,QAAS,CAChB,IAAIsE,EAAWpL,OAAOsL,OAAO,GAAIlI,KAAK4N,MAElCwH,IACFpN,EAASF,SAAWsN,GAGtBpV,KAAKkT,IAAMqC,GAAapN,EAAMH,IAIlC,IAAI2O,EAAUJ,EAAkBpZ,UAkChC,OAhCAwZ,EAAQjO,OAAS,WACf,GAAI1I,KAAK0D,QACP,OAAO1D,KAAKkT,IAAIxK,OAAO1I,KAAKyO,GAAGmI,YAE/B,IAAIC,EAprDV,SAAsBC,GAGpB,IAEIC,EAAe,6BAEnB,OAHUxM,GADK9F,EAAKqS,EAAa,CAAC,UAAW,MAAO,OAAQ,QAAS,MAAO,OAAQ,SAAU,SAAU,eAAgB,aAKtH,KAAKvM,GAAU9I,GACb,MAAO,WAET,KAAK8I,GAAU1I,GACb,MAAO,cAET,KAAK0I,GAAUzI,GACb,MAAO,eAET,KAAKyI,GAAUxI,GACb,MAAO,qBAET,KAAKwI,GAAUtI,GACb,MAAO,SAET,KAAKsI,GAAUnI,GACb,MAAO,YAET,KAAKmI,GAAUjI,GAGf,KAAKiI,GAAU/H,GACb,MAAO,SAET,KAAK+H,GAAU9H,GACb,MAAO,QAET,KAAK8H,GAAU5H,GACb,MAAO,WAET,KAAK4H,GAAU3H,GAGf,KAAK2H,GAAU1H,GACb,MAAO,QAET,KAAK0H,GAAUzH,GACb,MAAO,mBAET,KAAKyH,GAAUvH,GACb,MAAO,sBAET,KAAKuH,GAAUpH,GACb,MAAO,uBAET,KAAKoH,GAAUlH,GACb,OAAO0T,EAET,KAAKxM,GAAUxH,GACb,MAAO,sBAET,KAAKwH,GAAUtH,GACb,MAAO,yBAET,KAAKsH,GAAUrH,GACb,MAAO,0BAET,KAAKqH,GAAUnH,GACb,MAAO,0BAET,KAAKmH,GAAUjH,GACb,MAAO,gCAET,QACE,OAAOyT,GA4mDWC,CAAahX,KAAK4N,MAChCC,EAAMsH,GAAO5X,OAAO,SACxB,OAAOmQ,GAAUnQ,OAAOsQ,GAAKsB,yBAAyBnP,KAAKyO,GAAIoI,IAInEF,EAAQ7S,cAAgB,WACtB,OAAI9D,KAAK0D,SAAWG,IACX7D,KAAKkT,IAAIpP,cAAc9D,KAAKyO,GAAGmI,YAI/B,IAIXD,EAAQ7H,gBAAkB,WACxB,OAAI9O,KAAK0D,QACA1D,KAAKkT,IAAIpE,kBAET,CACLjH,OAAQ,QACRwN,gBAAiB,OACjBjF,eAAgB,YAKfmG,EA3ET,GAkFIU,GAEJ,WACE,SAASA,EAAiB9O,EAAM+O,EAAWtJ,GACzC5N,KAAK4N,KAAOhR,OAAOsL,OAAO,CACxBiP,MAAO,QACNvJ,IAEEsJ,GAAanT,MAChB/D,KAAKoX,IAnQX,SAAsB5B,EAAW5H,QAClB,IAATA,IACFA,EAAO,IAGT,IAAI9Q,EAAM0N,KAAKD,UAAU,CAACiL,EAAW5H,IACjCwI,EAAMV,GAAa5Y,GAOvB,OALKsZ,IACHA,EAAM,IAAIzS,KAAKK,mBAAmBwR,EAAW5H,GAC7C8H,GAAa5Y,GAAOsZ,GAGfA,EAsPQiB,CAAalP,EAAMyF,IAIlC,IAAI0J,EAAUL,EAAiB9Z,UAkB/B,OAhBAma,EAAQ5O,OAAS,SAAgB6O,EAAOtW,GACtC,OAAIjB,KAAKoX,IACApX,KAAKoX,IAAI1O,OAAO6O,EAAOtW,GAtxDpC,SAA4BA,EAAMsW,EAAOC,EAASC,QAChC,IAAZD,IACFA,EAAU,eAGG,IAAXC,IACFA,GAAS,GAGX,IAAIC,EAAQ,CACVC,MAAO,CAAC,OAAQ,OAChBC,SAAU,CAAC,UAAW,QACtB/M,OAAQ,CAAC,QAAS,OAClBgN,MAAO,CAAC,OAAQ,OAChBC,KAAM,CAAC,MAAO,MAAO,QACrB/N,MAAO,CAAC,OAAQ,OAChBC,QAAS,CAAC,SAAU,QACpB+N,QAAS,CAAC,SAAU,SAElBC,GAA8D,IAAnD,CAAC,QAAS,UAAW,WAAWvY,QAAQwB,GAEvD,GAAgB,SAAZuW,GAAsBQ,EAAU,CAClC,IAAIC,EAAiB,SAAThX,EAEZ,OAAQsW,GACN,KAAK,EACH,OAAOU,EAAQ,WAAa,QAAUP,EAAMzW,GAAM,GAEpD,KAAM,EACJ,OAAOgX,EAAQ,YAAc,QAAUP,EAAMzW,GAAM,GAErD,KAAK,EACH,OAAOgX,EAAQ,QAAU,QAAUP,EAAMzW,GAAM,IAOrD,IAAIiX,EAAWtb,OAAOwM,GAAGmO,GAAQ,IAAMA,EAAQ,EAC3CY,EAAWrS,KAAKmE,IAAIsN,GACpBa,EAAwB,IAAbD,EACXE,EAAWX,EAAMzW,GACjBqX,EAAUb,EAASW,EAAWC,EAAS,GAAKA,EAAS,IAAMA,EAAS,GAAKD,EAAWV,EAAMzW,GAAM,GAAKA,EACzG,OAAOiX,EAAWC,EAAW,IAAMG,EAAU,OAAS,MAAQH,EAAW,IAAMG,EA4uDpEC,CAAmBtX,EAAMsW,EAAOvX,KAAK4N,KAAK4J,QAA6B,SAApBxX,KAAK4N,KAAKuJ,QAIxEG,EAAQxT,cAAgB,SAAuByT,EAAOtW,GACpD,OAAIjB,KAAKoX,IACApX,KAAKoX,IAAItT,cAAcyT,EAAOtW,GAE9B,IAIJgW,EA7BT,GAoCI9B,GAEJ,WAkCE,SAASA,EAAOtN,EAAQ2Q,EAAWpI,EAAgBqI,GACjD,IAAIC,EArSR,SAA2BC,GAOzB,IAAIC,EAASD,EAAUlZ,QAAQ,OAE/B,IAAgB,IAAZmZ,EACF,MAAO,CAACD,GAER,IAAIE,EACAC,EAAUH,EAAUhQ,UAAU,EAAGiQ,GAErC,IACEC,EAAUtD,GAAaoD,GAAW7J,kBAClC,MAAOnQ,GACPka,EAAUtD,GAAauD,GAAShK,kBAGlC,IAAIiK,EAAWF,EAIf,MAAO,CAACC,EAHcC,EAAS1D,gBAChB0D,EAASC,UA8QCC,CAAkBpR,GACvCqR,EAAeR,EAAmB,GAClCS,EAAwBT,EAAmB,GAC3CU,EAAuBV,EAAmB,GAE9C1Y,KAAK6H,OAASqR,EACdlZ,KAAKqV,gBAAkBmD,GAAaW,GAAyB,KAC7DnZ,KAAKoQ,eAAiBA,GAAkBgJ,GAAwB,KAChEpZ,KAAKmI,KAhRT,SAA0BwQ,EAAWtD,EAAiBjF,GACpD,OAAI1M,MACE0M,GAAkBiF,KACpBsD,GAAa,KAETvI,IACFuI,GAAa,OAASvI,GAGpBiF,IACFsD,GAAa,OAAStD,IAGjBsD,GAKF,GA8PKU,CAAiBrZ,KAAK6H,OAAQ7H,KAAKqV,gBAAiBrV,KAAKoQ,gBACrEpQ,KAAKsZ,cAAgB,CACnB5Q,OAAQ,GACRmH,WAAY,IAEd7P,KAAKuZ,YAAc,CACjB7Q,OAAQ,GACRmH,WAAY,IAEd7P,KAAKwZ,cAAgB,KACrBxZ,KAAKyZ,SAAW,GAChBzZ,KAAKyY,gBAAkBA,EACvBzY,KAAK0Z,kBAAoB,KAtD3BvE,EAAOwE,SAAW,SAAkB/L,GAClC,OAAOuH,EAAO5X,OAAOqQ,EAAK/F,OAAQ+F,EAAKyH,gBAAiBzH,EAAKwC,eAAgBxC,EAAKgM,cAGpFzE,EAAO5X,OAAS,SAAgBsK,EAAQwN,EAAiBjF,EAAgBwJ,QACnD,IAAhBA,IACFA,GAAc,GAGhB,IAAInB,EAAkB5Q,GAAUoN,GAASJ,cAKzC,OAAO,IAAIM,EAHDsD,IAAoBmB,EAAc,QA5RhD,WACE,GAAIjE,GACF,OAAOA,GACF,GAAIjS,IAAW,CACpB,IAAImW,GAAc,IAAIlW,KAAKC,gBAAiBkL,kBAAkBjH,OAG9D,OADA8N,GAAkBkE,GAA+B,QAAhBA,EAAkCA,EAAV,QAIzD,OADAlE,GAAiB,QAmRqCmE,IAC/BzE,GAAmBJ,GAASH,uBAC7B1E,GAAkB6E,GAASF,sBACa0D,IAGhEtD,EAAOtC,WAAa,WAClB8C,GAAiB,KACjBL,GAAc,GACdG,GAAe,GACfC,GAAe,IAGjBP,EAAO4E,WAAa,SAAoBC,GACtC,IAAI/N,OAAiB,IAAV+N,EAAmB,GAAKA,EAC/BnS,EAASoE,EAAKpE,OACdwN,EAAkBpJ,EAAKoJ,gBACvBjF,EAAiBnE,EAAKmE,eAE1B,OAAO+E,EAAO5X,OAAOsK,EAAQwN,EAAiBjF,IA2BhD,IAAI6J,EAAU9E,EAAOhY,UAsNrB,OApNA8c,EAAQ/J,YAAc,SAAqB2F,QACvB,IAAdA,IACFA,GAAY,GAGd,IACIqE,EADOxW,KACUG,IACjBsW,EAAena,KAAKkX,YACpBkD,IAA2C,OAAzBpa,KAAKqV,iBAAqD,SAAzBrV,KAAKqV,iBAAwD,OAAxBrV,KAAKoQ,gBAAmD,YAAxBpQ,KAAKoQ,gBAEjI,OAAK8J,GAAYC,GAAgBC,GAAoBvE,GAEzCqE,GAAUC,GAAgBC,EAC7B,KAEA,OAJA,SAQXH,EAAQI,MAAQ,SAAeC,GAC7B,OAAKA,GAAoD,IAA5C1d,OAAO2d,oBAAoBD,GAAM/d,OAGrC4Y,EAAO5X,OAAO+c,EAAKzS,QAAU7H,KAAKyY,gBAAiB6B,EAAKjF,iBAAmBrV,KAAKqV,gBAAiBiF,EAAKlK,gBAAkBpQ,KAAKoQ,eAAgBkK,EAAKV,cAAe,GAFjK5Z,MAMXia,EAAQO,cAAgB,SAAuBF,GAK7C,YAJa,IAATA,IACFA,EAAO,IAGFta,KAAKqa,MAAMzd,OAAOsL,OAAO,GAAIoS,EAAM,CACxCV,aAAa,MAIjBK,EAAQvL,kBAAoB,SAA2B4L,GAKrD,YAJa,IAATA,IACFA,EAAO,IAGFta,KAAKqa,MAAMzd,OAAOsL,OAAO,GAAIoS,EAAM,CACxCV,aAAa,MAIjBK,EAAQpP,OAAS,SAAkBtO,EAAQmM,EAAQmN,GACjD,IAAIxG,EAAQrP,KAUZ,YARe,IAAX0I,IACFA,GAAS,QAGO,IAAdmN,IACFA,GAAY,GAGPD,GAAU5V,KAAMzD,EAAQsZ,EAAWhL,GAAQ,WAChD,IAAI1C,EAAOO,EAAS,CAClB/G,MAAOpF,EACPqF,IAAK,WACH,CACFD,MAAOpF,GAELke,EAAY/R,EAAS,SAAW,aAQpC,OANK2G,EAAMkK,YAAYkB,GAAWle,KAChC8S,EAAMkK,YAAYkB,GAAWle,GA/UrC,SAAmBqJ,GAGjB,IAFA,IAAI8U,EAAK,GAEApe,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,IAAImS,EAAKgI,GAASkE,IAAI,KAAMre,EAAG,GAC/Boe,EAAG5b,KAAK8G,EAAE6I,IAGZ,OAAOiM,EAuUsCE,CAAU,SAAUnM,GACzD,OAAOY,EAAMD,QAAQX,EAAItG,EAAM,YAI5BkH,EAAMkK,YAAYkB,GAAWle,MAIxC0d,EAAQhP,SAAW,SAAoB1O,EAAQmM,EAAQmN,GACrD,IAAI9E,EAAS/Q,KAUb,YARe,IAAX0I,IACFA,GAAS,QAGO,IAAdmN,IACFA,GAAY,GAGPD,GAAU5V,KAAMzD,EAAQsZ,EAAW5K,GAAU,WAClD,IAAI9C,EAAOO,EAAS,CAClB1G,QAASzF,EACTmF,KAAM,UACNC,MAAO,OACPC,IAAK,WACH,CACFI,QAASzF,GAEPke,EAAY/R,EAAS,SAAW,aAQpC,OANKqI,EAAOuI,cAAcmB,GAAWle,KACnCwU,EAAOuI,cAAcmB,GAAWle,GApWxC,SAAqBqJ,GAGnB,IAFA,IAAI8U,EAAK,GAEApe,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAImS,EAAKgI,GAASkE,IAAI,KAAM,GAAI,GAAKre,GACrCoe,EAAG5b,KAAK8G,EAAE6I,IAGZ,OAAOiM,EA4VyCG,CAAY,SAAUpM,GAC9D,OAAOsC,EAAO3B,QAAQX,EAAItG,EAAM,cAI7B4I,EAAOuI,cAAcmB,GAAWle,MAI3C0d,EAAQ/O,UAAY,SAAqB2K,GACvC,IAAIiF,EAAS9a,KAMb,YAJkB,IAAd6V,IACFA,GAAY,GAGPD,GAAU5V,UAAMT,EAAWsW,EAAW,WAC3C,OAAO3K,IACN,WAGD,IAAK4P,EAAOtB,cAAe,CACzB,IAAIrR,EAAO,CACTjG,KAAM,UACNQ,QAAQ,GAEVoY,EAAOtB,cAAgB,CAAC/C,GAASkE,IAAI,KAAM,GAAI,GAAI,GAAIlE,GAASkE,IAAI,KAAM,GAAI,GAAI,KAAKpJ,IAAI,SAAU9C,GACnG,OAAOqM,EAAO1L,QAAQX,EAAItG,EAAM,eAIpC,OAAO2S,EAAOtB,iBAIlBS,EAAQ3O,KAAO,SAAgB/O,EAAQsZ,GACrC,IAAIkF,EAAS/a,KAMb,YAJkB,IAAd6V,IACFA,GAAY,GAGPD,GAAU5V,KAAMzD,EAAQsZ,EAAWvK,GAAM,WAC9C,IAAInD,EAAO,CACT6H,IAAKzT,GAUP,OANKwe,EAAOtB,SAASld,KACnBwe,EAAOtB,SAASld,GAAU,CAACka,GAASkE,KAAK,GAAI,EAAG,GAAIlE,GAASkE,IAAI,KAAM,EAAG,IAAIpJ,IAAI,SAAU9C,GAC1F,OAAOsM,EAAO3L,QAAQX,EAAItG,EAAM,UAI7B4S,EAAOtB,SAASld,MAI3B0d,EAAQ7K,QAAU,SAAiBX,EAAIzG,EAAUgT,GAC/C,IAEIC,EAFKjb,KAAK2O,YAAYF,EAAIzG,GACblE,gBACMuE,KAAK,SAAUC,GACpC,OAAOA,EAAEC,KAAKC,gBAAkBwS,IAElC,OAAOC,EAAWA,EAAShb,MAAQ,MAGrCga,EAAQ/K,gBAAkB,SAAyBtB,GAOjD,YANa,IAATA,IACFA,EAAO,IAKF,IAAIqI,GAAoBjW,KAAKmI,KAAMyF,EAAKoB,aAAehP,KAAKkb,YAAatN,IAGlFqM,EAAQtL,YAAc,SAAqBF,EAAIzG,GAK7C,YAJiB,IAAbA,IACFA,EAAW,IAGN,IAAIuO,GAAkB9H,EAAIzO,KAAKmI,KAAMH,IAG9CiS,EAAQkB,aAAe,SAAsBvN,GAK3C,YAJa,IAATA,IACFA,EAAO,IAGF,IAAIqJ,GAAiBjX,KAAKmI,KAAMnI,KAAKkX,YAAatJ,IAG3DqM,EAAQ/C,UAAY,WAClB,MAAuB,OAAhBlX,KAAK6H,QAAiD,UAA9B7H,KAAK6H,OAAOW,eAA6B9E,KAAa,IAAIC,KAAKC,eAAe5D,KAAKmI,MAAM2G,kBAAkBjH,OAAOuT,WAAW,UAG9JnB,EAAQpI,OAAS,SAAgBwJ,GAC/B,OAAOrb,KAAK6H,SAAWwT,EAAMxT,QAAU7H,KAAKqV,kBAAoBgG,EAAMhG,iBAAmBrV,KAAKoQ,iBAAmBiL,EAAMjL,gBAGzHrT,EAAaoY,EAAQ,CAAC,CACpBrY,IAAK,cACL+C,IAAK,WAKH,OAJ8B,MAA1BG,KAAK0Z,oBACP1Z,KAAK0Z,kBAtbb,SAA6B7L,GAC3B,QAAIA,EAAIwH,iBAA2C,SAAxBxH,EAAIwH,mBAGE,SAAxBxH,EAAIwH,kBAA+BxH,EAAIhG,QAAUgG,EAAIhG,OAAOuT,WAAW,OAAS1X,KAAqF,SAAxE,IAAIC,KAAKC,eAAeiK,EAAI1F,MAAM2G,kBAAkBuG,iBAkb3HiG,CAAoBtb,OAGxCA,KAAK0Z,sBAITvE,EAhRT,GA6RA,SAASoG,KACP,IAAK,IAAIC,EAAOrc,UAAU5C,OAAQkf,EAAU,IAAI7P,MAAM4P,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClFD,EAAQC,GAAQvc,UAAUuc,GAG5B,IAAIC,EAAOF,EAAQpX,OAAO,SAAUuB,EAAGyO,GACrC,OAAOzO,EAAIyO,EAAEhC,QACZ,IACH,OAAOD,OAAO,IAAMuJ,EAAO,KAG7B,SAASC,KACP,IAAK,IAAIC,EAAQ1c,UAAU5C,OAAQuf,EAAa,IAAIlQ,MAAMiQ,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IAC1FD,EAAWC,GAAS5c,UAAU4c,GAGhC,OAAO,SAAUzT,GACf,OAAOwT,EAAWzX,OAAO,SAAU4H,EAAM+P,GACvC,IAAIC,EAAahQ,EAAK,GAClBiQ,EAAajQ,EAAK,GAClBkQ,EAASlQ,EAAK,GAEdmQ,EAAMJ,EAAG1T,EAAG6T,GACZ9P,EAAM+P,EAAI,GACV3M,EAAO2M,EAAI,GACX7X,EAAO6X,EAAI,GAEf,MAAO,CAACxf,OAAOsL,OAAO+T,EAAY5P,GAAM6P,GAAczM,EAAMlL,IAC3D,CAAC,GAAI,KAAM,IAAIe,MAAM,EAAG,IAI/B,SAAS+W,GAAM9a,GACb,GAAS,MAALA,EACF,MAAO,CAAC,KAAM,MAGhB,IAAK,IAAI+a,EAAQnd,UAAU5C,OAAQggB,EAAW,IAAI3Q,MAAc,EAAR0Q,EAAYA,EAAQ,EAAI,GAAIE,EAAQ,EAAGA,EAAQF,EAAOE,IAC5GD,EAASC,EAAQ,GAAKrd,UAAUqd,GAGlC,IAAK,IAAI1Q,EAAK,EAAG2Q,EAAYF,EAAUzQ,EAAK2Q,EAAUlgB,OAAQuP,IAAM,CAClE,IAAI4Q,EAAeD,EAAU3Q,GACzB6Q,EAAQD,EAAa,GACrBE,EAAYF,EAAa,GACzBpU,EAAIqU,EAAMlJ,KAAKlS,GAEnB,GAAI+G,EACF,OAAOsU,EAAUtU,GAIrB,MAAO,CAAC,KAAM,MAGhB,SAASuU,KACP,IAAK,IAAIC,EAAQ3d,UAAU5C,OAAQoI,EAAO,IAAIiH,MAAMkR,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFpY,EAAKoY,GAAS5d,UAAU4d,GAG1B,OAAO,SAAUhK,EAAOoJ,GACtB,IACI7f,EADA0gB,EAAM,GAGV,IAAK1gB,EAAI,EAAGA,EAAIqI,EAAKpI,OAAQD,IAC3B0gB,EAAIrY,EAAKrI,IAAMiJ,EAAawN,EAAMoJ,EAAS7f,IAG7C,MAAO,CAAC0gB,EAAK,KAAMb,EAAS7f,IAKhC,IAAI2gB,GAAc,kCACdC,GAAmB,qDACnBC,GAAe/K,OAAO,GAAK8K,GAAiB7K,OAAS4K,GAAY5K,OAAS,KAC1E+K,GAAwBhL,OAAO,OAAS+K,GAAa9K,OAAS,MAI9DgL,GAAqBR,GAAY,WAAY,aAAc,WAC3DS,GAAwBT,GAAY,OAAQ,WAGhDU,GAAenL,OAAO8K,GAAiB7K,OAAS,QAAU4K,GAAY5K,OAAS,KAAO/H,GAAU+H,OAAS,OACrGmL,GAAwBpL,OAAO,OAASmL,GAAalL,OAAS,MAElE,SAASoL,GAAI1K,EAAOQ,EAAKmK,GACvB,IAAIpV,EAAIyK,EAAMQ,GACd,OAAOhQ,EAAY+E,GAAKoV,EAAWnY,EAAa+C,GAGlD,SAASqV,GAAc5K,EAAOoJ,GAM5B,MAAO,CALI,CACTza,KAAM+b,GAAI1K,EAAOoJ,GACjBxa,MAAO8b,GAAI1K,EAAOoJ,EAAS,EAAG,GAC9Bva,IAAK6b,GAAI1K,EAAOoJ,EAAS,EAAG,IAEhB,KAAMA,EAAS,GAG/B,SAASyB,GAAe7K,EAAOoJ,GAO7B,MAAO,CANI,CACTja,KAAMub,GAAI1K,EAAOoJ,EAAQ,GACzBha,OAAQsb,GAAI1K,EAAOoJ,EAAS,EAAG,GAC/B9Z,OAAQob,GAAI1K,EAAOoJ,EAAS,EAAG,GAC/BlV,YAAavB,EAAYqN,EAAMoJ,EAAS,KAE5B,KAAMA,EAAS,GAG/B,SAAS0B,GAAiB9K,EAAOoJ,GAC/B,IAAI2B,GAAS/K,EAAMoJ,KAAYpJ,EAAMoJ,EAAS,GAC1C4B,EAAalV,GAAakK,EAAMoJ,EAAS,GAAIpJ,EAAMoJ,EAAS,IAEhE,MAAO,CAAC,GADG2B,EAAQ,KAAO7J,GAAgBjV,SAAS+e,GACjC5B,EAAS,GAG7B,SAAS6B,GAAgBjL,EAAOoJ,GAE9B,MAAO,CAAC,GADGpJ,EAAMoJ,GAAU1J,GAASlV,OAAOwV,EAAMoJ,IAAW,KAC1CA,EAAS,GAI7B,IAAI8B,GAAc,2JAElB,SAASC,GAAmBnL,GAC1B,IAAIoL,EAAUpL,EAAM,GAChBqL,EAAWrL,EAAM,GACjBsL,EAAUtL,EAAM,GAChBuL,EAASvL,EAAM,GACfwL,EAAUxL,EAAM,GAChByL,EAAYzL,EAAM,GAClB0L,EAAY1L,EAAM,GAClB2L,EAAkB3L,EAAM,GAC5B,MAAO,CAAC,CACN4E,MAAOpS,EAAa4Y,GACpBtT,OAAQtF,EAAa6Y,GACrBvG,MAAOtS,EAAa8Y,GACpBvG,KAAMvS,EAAa+Y,GACnBvU,MAAOxE,EAAagZ,GACpBvU,QAASzE,EAAaiZ,GACtBzG,QAASxS,EAAakZ,GACtBE,aAAcjZ,EAAYgZ,KAO9B,IAAIE,GAAa,CACfC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAGP,SAASC,GAAYC,EAAYpB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAC9E,IAAIe,EAAS,CACX9d,KAAyB,IAAnByc,EAAQ5hB,OAAekL,GAAelC,EAAa4Y,IAAY5Y,EAAa4Y,GAClFxc,MAAOgJ,GAAYlL,QAAQ2e,GAAY,EACvCxc,IAAK2D,EAAa+Y,GAClBpc,KAAMqD,EAAagZ,GACnBpc,OAAQoD,EAAaiZ,IAQvB,OANIC,IAAWe,EAAOnd,OAASkD,EAAakZ,IAExCc,IACFC,EAAOxd,QAA8B,EAApBud,EAAWhjB,OAAauO,GAAarL,QAAQ8f,GAAc,EAAIxU,GAActL,QAAQ8f,GAAc,GAG/GC,EAIT,IAAIC,GAAU,kMAEd,SAASC,GAAe3M,GACtB,IAYIjJ,EAZAyV,EAAaxM,EAAM,GACnBuL,EAASvL,EAAM,GACfqL,EAAWrL,EAAM,GACjBoL,EAAUpL,EAAM,GAChBwL,EAAUxL,EAAM,GAChByL,EAAYzL,EAAM,GAClB0L,EAAY1L,EAAM,GAClB4M,EAAY5M,EAAM,GAClB6M,EAAY7M,EAAM,GAClBjK,EAAaiK,EAAM,IACnBhK,EAAegK,EAAM,IACrByM,EAASF,GAAYC,EAAYpB,EAASC,EAAUE,EAAQC,EAASC,EAAWC,GAWpF,OAPE3U,EADE6V,EACOf,GAAWe,GACXC,EACA,EAEA/W,GAAaC,EAAYC,GAG7B,CAACyW,EAAQ,IAAIvL,GAAgBnK,IAStC,IAAI+V,GAAU,6HACVC,GAAS,uJACTC,GAAQ,4HAEZ,SAASC,GAAoBjN,GAC3B,IAAIwM,EAAaxM,EAAM,GACnBuL,EAASvL,EAAM,GACfqL,EAAWrL,EAAM,GAMrB,MAAO,CADMuM,GAAYC,EAJXxM,EAAM,GAI0BqL,EAAUE,EAH1CvL,EAAM,GACJA,EAAM,GACNA,EAAM,IAENkB,GAAgBE,aAGlC,SAAS8L,GAAalN,GACpB,IAAIwM,EAAaxM,EAAM,GACnBqL,EAAWrL,EAAM,GACjBuL,EAASvL,EAAM,GACfwL,EAAUxL,EAAM,GAChByL,EAAYzL,EAAM,GAClB0L,EAAY1L,EAAM,GAGtB,MAAO,CADMuM,GAAYC,EADXxM,EAAM,GAC0BqL,EAAUE,EAAQC,EAASC,EAAWC,GACpExK,GAAgBE,aAGlC,IAAI+L,GAA+B3E,GArKjB,8CAqK6C6B,IAC3D+C,GAAgC5E,GArKjB,8BAqK8C6B,IAC7DgD,GAAmC7E,GArKjB,mBAqKiD6B,IACnEiD,GAAuB9E,GAAe4B,IACtCmD,GAA6B1E,GAAkB+B,GAAeC,GAAgBC,IAC9E0C,GAA8B3E,GAAkByB,GAAoBO,GAAgBC,IACpF2C,GAA+B5E,GAAkB0B,GAAuBM,IACxE6C,GAA0B7E,GAAkBgC,GAAgBC,IAiBhE,IAAI6C,GAA+BnF,GAxLjB,wBAwL6CiC,IAC3DmD,GAAuBpF,GAAegC,IACtCqD,GAAqChF,GAAkB+B,GAAeC,GAAgBC,GAAkBG,IACxG6C,GAAkCjF,GAAkBgC,GAAgBC,GAAkBG,IAK1F,IAEI8C,GAAiB,CACnBjJ,MAAO,CACLC,KAAM,EACN/N,MAAO,IACPC,QAAS,MACT+N,QAAS,OACT4G,aAAc,QAEhB7G,KAAM,CACJ/N,MAAO,GACPC,QAAS,KACT+N,QAAS,MACT4G,aAAc,OAEhB5U,MAAO,CACLC,QAAS,GACT+N,QAAS,KACT4G,aAAc,MAEhB3U,QAAS,CACP+N,QAAS,GACT4G,aAAc,KAEhB5G,QAAS,CACP4G,aAAc,MAGdoC,GAAenkB,OAAOsL,OAAO,CAC/ByP,MAAO,CACL9M,OAAQ,GACRgN,MAAO,GACPC,KAAM,IACN/N,MAAO,KACPC,QAAS,OACT+N,QAAS,QACT4G,aAAc,SAEhB/G,SAAU,CACR/M,OAAQ,EACRgN,MAAO,GACPC,KAAM,GACN/N,MAAO,KACPC,QAAS,OACT2U,aAAc,SAEhB9T,OAAQ,CACNgN,MAAO,EACPC,KAAM,GACN/N,MAAO,IACPC,QAAS,MACT+N,QAAS,OACT4G,aAAc,SAEfmC,IACCE,GAAqB,SACrBC,GAAsB,UACtBC,GAAiBtkB,OAAOsL,OAAO,CACjCyP,MAAO,CACL9M,OAAQ,GACRgN,MAAOmJ,GAAqB,EAC5BlJ,KAAMkJ,GACNjX,MAA4B,GAArBiX,GACPhX,QAASgX,SACTjJ,QAASiJ,SAA+B,GACxCrC,aAAcqC,SAA+B,GAAK,KAEpDpJ,SAAU,CACR/M,OAAQ,EACRgN,MAAOmJ,GAAqB,GAC5BlJ,KAAMkJ,GAAqB,EAC3BjX,MAA4B,GAArBiX,GAA0B,EACjChX,QAASgX,SACTjJ,QAASiJ,SAA+B,GAAK,EAC7CrC,aAAcqC,mBAEhBnW,OAAQ,CACNgN,MAAOoJ,GAAsB,EAC7BnJ,KAAMmJ,GACNlX,MAA6B,GAAtBkX,GACPjX,QAASiX,QACTlJ,QAASkJ,QACTtC,aAAcsC,YAEfH,IAECK,GAAe,CAAC,QAAS,WAAY,SAAU,QAAS,OAAQ,QAAS,UAAW,UAAW,gBAC/FC,GAAeD,GAAa7b,MAAM,GAAG+b,UAEzC,SAAShH,GAAMzJ,EAAK0J,EAAMgH,QACV,IAAVA,IACFA,GAAQ,GAIV,IAAIC,EAAO,CACTC,OAAQF,EAAQhH,EAAKkH,OAAS5kB,OAAOsL,OAAO,GAAI0I,EAAI4Q,OAAQlH,EAAKkH,QAAU,IAC3E3T,IAAK+C,EAAI/C,IAAIwM,MAAMC,EAAKzM,KACxB4T,mBAAoBnH,EAAKmH,oBAAsB7Q,EAAI6Q,oBAErD,OAAO,IAAIC,GAASH,GAQtB,SAASI,GAAQC,EAAQC,EAASC,EAAUC,EAAOC,GACjD,IAAIC,EAAOL,EAAOI,GAAQF,GACtBI,EAAML,EAAQC,GAAYG,EAG9BE,IAFerc,KAAKoE,KAAKgY,KAASpc,KAAKoE,KAAK6X,EAAMC,MAEX,IAAlBD,EAAMC,IAAiBlc,KAAKmE,IAAIiY,IAAQ,EAV/D,SAAmB5gB,GACjB,OAAOA,EAAI,EAAIwE,KAAKC,MAAMzE,GAAKwE,KAAKsc,KAAK9gB,GASwB+gB,CAAUH,GAAOpc,KAAKQ,MAAM4b,GAC7FH,EAAMC,IAAWG,EACjBN,EAAQC,IAAaK,EAAQF,EAI/B,SAASK,GAAgBV,EAAQW,GAC/BnB,GAAa/c,OAAO,SAAUme,EAAUvU,GACtC,OAAK1K,EAAYgf,EAAKtU,IAObuU,GANHA,GACFb,GAAQC,EAAQW,EAAMC,EAAUD,EAAMtU,GAGjCA,IAIR,MAiBL,IAAIyT,GAEJ,WAIE,SAASA,EAASe,GAChB,IAAIC,EAAyC,aAA9BD,EAAOhB,qBAAqC,EAK3DzhB,KAAKwhB,OAASiB,EAAOjB,OAKrBxhB,KAAK6N,IAAM4U,EAAO5U,KAAOsH,GAAO5X,SAKhCyC,KAAKyhB,mBAAqBiB,EAAW,WAAa,SAKlD1iB,KAAK2iB,QAAUF,EAAOE,SAAW,KAKjC3iB,KAAK4hB,OAASc,EAAWxB,GAAiBH,GAK1C/gB,KAAK4iB,iBAAkB,EAazBlB,EAAShL,WAAa,SAAoBa,EAAO3J,GAC/C,OAAO8T,EAAS3H,WAAWnd,OAAOsL,OAAO,CACvCyW,aAAcpH,GACb3J,KAsBL8T,EAAS3H,WAAa,SAAoBrV,GACxC,GAAW,MAAPA,GAA8B,iBAARA,EACxB,MAAM,IAAIxD,EAAqB,gEAA0E,OAARwD,EAAe,cAAgBA,IAGlI,OAAO,IAAIgd,EAAS,CAClBF,OAAQjY,GAAgB7E,EAAKgd,EAASmB,cAAe,CAAC,SAAU,kBAAmB,qBAAsB,SAEzGhV,IAAKsH,GAAO4E,WAAWrV,GACvB+c,mBAAoB/c,EAAI+c,sBAkB5BC,EAASoB,QAAU,SAAiBC,EAAMnV,GACxC,IACIxF,EAvQR,SAA0B7G,GACxB,OAAO8a,GAAM9a,EAAG,CAAC0c,GAAaC,KAqQJ8E,CAAiBD,GACV,GAE/B,GAAI3a,EAAQ,CACV,IAAI1D,EAAM9H,OAAOsL,OAAOE,EAAQwF,GAChC,OAAO8T,EAAS3H,WAAWrV,GAE3B,OAAOgd,EAASiB,QAAQ,aAAc,cAAiBI,EAAO,mCAWlErB,EAASiB,QAAU,SAAiBpiB,EAAQoR,GAK1C,QAJoB,IAAhBA,IACFA,EAAc,OAGXpR,EACH,MAAM,IAAIW,EAAqB,oDAGjC,IAAIyhB,EAAUpiB,aAAkBmR,GAAUnR,EAAS,IAAImR,GAAQnR,EAAQoR,GAEvE,GAAIsD,GAASD,eACX,MAAM,IAAIrU,EAAqBgiB,GAE/B,OAAO,IAAIjB,EAAS,CAClBiB,QAASA,KASfjB,EAASmB,cAAgB,SAAuB5hB,GAC9C,IAAIyI,EAAa,CACfhI,KAAM,QACNiW,MAAO,QACPlH,QAAS,WACTmH,SAAU,WACVjW,MAAO,SACPkJ,OAAQ,SACRoY,KAAM,QACNpL,MAAO,QACPjW,IAAK,OACLkW,KAAM,OACN5V,KAAM,QACN6H,MAAO,QACP5H,OAAQ,UACR6H,QAAS,UACT3H,OAAQ,UACR0V,QAAS,UACT9Q,YAAa,eACb0X,aAAc,gBACd1d,EAAOA,EAAKuH,cAAgBvH,GAC9B,IAAKyI,EAAY,MAAM,IAAI3I,EAAiBE,GAC5C,OAAOyI,GASTgY,EAASwB,WAAa,SAAoBvlB,GACxC,OAAOA,GAAKA,EAAEilB,kBAAmB,GAQnC,IAAIrU,EAASmT,EAASvkB,UAmgBtB,OA7eAoR,EAAO4U,SAAW,SAAkBnV,EAAKJ,QAC1B,IAATA,IACFA,EAAO,IAIT,IAAIwV,EAAUxmB,OAAOsL,OAAO,GAAI0F,EAAM,CACpC7H,OAAsB,IAAf6H,EAAKrH,QAAkC,IAAfqH,EAAK7H,QAEtC,OAAO/F,KAAKwP,QAAU9B,GAAUnQ,OAAOyC,KAAK6N,IAAKuV,GAASzS,yBAAyB3Q,KAAMgO,GA5W/E,oBAuXZO,EAAO8U,SAAW,SAAkBzV,GAKlC,QAJa,IAATA,IACFA,EAAO,KAGJ5N,KAAKwP,QAAS,MAAO,GAC1B,IAAIrF,EAAOvN,OAAOsL,OAAO,GAAIlI,KAAKwhB,QAQlC,OANI5T,EAAK0V,gBACPnZ,EAAKsX,mBAAqBzhB,KAAKyhB,mBAC/BtX,EAAKkL,gBAAkBrV,KAAK6N,IAAIwH,gBAChClL,EAAKtC,OAAS7H,KAAK6N,IAAIhG,QAGlBsC,GAcToE,EAAOgV,MAAQ,WAEb,IAAKvjB,KAAKwP,QAAS,OAAO,KAC1B,IAAIjO,EAAI,IAYR,OAXmB,IAAfvB,KAAK2X,QAAapW,GAAKvB,KAAK2X,MAAQ,KACpB,IAAhB3X,KAAK6K,QAAkC,IAAlB7K,KAAK4X,WAAgBrW,GAAKvB,KAAK6K,OAAyB,EAAhB7K,KAAK4X,SAAe,KAClE,IAAf5X,KAAK6X,QAAatW,GAAKvB,KAAK6X,MAAQ,KACtB,IAAd7X,KAAK8X,OAAYvW,GAAKvB,KAAK8X,KAAO,KACnB,IAAf9X,KAAK+J,OAAgC,IAAjB/J,KAAKgK,SAAkC,IAAjBhK,KAAK+X,SAAuC,IAAtB/X,KAAK2e,eAAoBpd,GAAK,KAC/E,IAAfvB,KAAK+J,QAAaxI,GAAKvB,KAAK+J,MAAQ,KACnB,IAAjB/J,KAAKgK,UAAezI,GAAKvB,KAAKgK,QAAU,KACvB,IAAjBhK,KAAK+X,SAAuC,IAAtB/X,KAAK2e,eAE7Bpd,GAAKyE,EAAQhG,KAAK+X,QAAU/X,KAAK2e,aAAe,IAAM,GAAK,KACnD,MAANpd,IAAWA,GAAK,OACbA,GAQTgN,EAAOiV,OAAS,WACd,OAAOxjB,KAAKujB,SAQdhV,EAAO9P,SAAW,WAChB,OAAOuB,KAAKujB,SAQdhV,EAAOwF,QAAU,WACf,OAAO/T,KAAKyjB,GAAG,iBASjBlV,EAAOmV,KAAO,SAAcC,GAC1B,IAAK3jB,KAAKwP,QAAS,OAAOxP,KAI1B,IAHA,IAAI4Q,EAAMgT,GAAiBD,GACvBnE,EAAS,GAEJ1T,EAAK,EAAG+X,EAAgB1C,GAAcrV,EAAK+X,EAActnB,OAAQuP,IAAM,CAC9E,IAAIlH,EAAIif,EAAc/X,IAElBjH,EAAe+L,EAAI4Q,OAAQ5c,IAAMC,EAAe7E,KAAKwhB,OAAQ5c,MAC/D4a,EAAO5a,GAAKgM,EAAI/Q,IAAI+E,GAAK5E,KAAKH,IAAI+E,IAItC,OAAOyV,GAAMra,KAAM,CACjBwhB,OAAQhC,IACP,IASLjR,EAAOuV,MAAQ,SAAeH,GAC5B,IAAK3jB,KAAKwP,QAAS,OAAOxP,KAC1B,IAAI4Q,EAAMgT,GAAiBD,GAC3B,OAAO3jB,KAAK0jB,KAAK9S,EAAImT,WAWvBxV,EAAOyV,SAAW,SAAkBxkB,GAClC,IAAKQ,KAAKwP,QAAS,OAAOxP,KAG1B,IAFA,IAAIwf,EAAS,GAEJyE,EAAM,EAAGC,EAAetnB,OAAO+H,KAAK3E,KAAKwhB,QAASyC,EAAMC,EAAa3nB,OAAQ0nB,IAAO,CAC3F,IAAIrf,EAAIsf,EAAaD,GACrBzE,EAAO5a,GAAKyE,GAAS7J,EAAGQ,KAAKwhB,OAAO5c,GAAIA,IAG1C,OAAOyV,GAAMra,KAAM,CACjBwhB,OAAQhC,IACP,IAYLjR,EAAO1O,IAAM,SAAaoB,GACxB,OAAOjB,KAAK0hB,EAASmB,cAAc5hB,KAWrCsN,EAAOzO,IAAM,SAAa0hB,GACxB,OAAKxhB,KAAKwP,QAEH6K,GAAMra,KAAM,CACjBwhB,OAFU5kB,OAAOsL,OAAOlI,KAAKwhB,OAAQjY,GAAgBiY,EAAQE,EAASmB,cAAe,OAD7D7iB,MAa5BuO,EAAO4V,YAAc,SAAqBnK,GACxC,IAAI/N,OAAiB,IAAV+N,EAAmB,GAAKA,EAC/BnS,EAASoE,EAAKpE,OACdwN,EAAkBpJ,EAAKoJ,gBACvBoM,EAAqBxV,EAAKwV,mBAM1B7T,EAAO,CACTC,IALQ7N,KAAK6N,IAAIwM,MAAM,CACvBxS,OAAQA,EACRwN,gBAAiBA,KAUnB,OAJIoM,IACF7T,EAAK6T,mBAAqBA,GAGrBpH,GAAMra,KAAM4N,IAYrBW,EAAOkV,GAAK,SAAYxiB,GACtB,OAAOjB,KAAKwP,QAAUxP,KAAKsR,QAAQrQ,GAAMpB,IAAIoB,GAAQsT,KAUvDhG,EAAO6V,UAAY,WACjB,IAAKpkB,KAAKwP,QAAS,OAAOxP,KAC1B,IAAIuiB,EAAOviB,KAAKqjB,WAEhB,OADAf,GAAgBtiB,KAAK4hB,OAAQW,GACtBlI,GAAMra,KAAM,CACjBwhB,OAAQe,IACP,IASLhU,EAAO+C,QAAU,WACf,IAAK,IAAIkK,EAAOrc,UAAU5C,OAAQmb,EAAQ,IAAI9L,MAAM4P,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAChFhE,EAAMgE,GAAQvc,UAAUuc,GAG1B,IAAK1b,KAAKwP,QAAS,OAAOxP,KAE1B,GAAqB,IAAjB0X,EAAMnb,OACR,OAAOyD,KAGT0X,EAAQA,EAAMnG,IAAI,SAAU5H,GAC1B,OAAO+X,EAASmB,cAAclZ,KAEhC,IAGI0a,EAHAC,EAAQ,GACRC,EAAc,GACdhC,EAAOviB,KAAKqjB,WAEhBf,GAAgBtiB,KAAK4hB,OAAQW,GAE7B,IAAK,IAAIiC,EAAM,EAAGC,EAAiBtD,GAAcqD,EAAMC,EAAeloB,OAAQioB,IAAO,CACnF,IAAI5f,EAAI6f,EAAeD,GAEvB,GAAwB,GAApB9M,EAAMjY,QAAQmF,GAAS,CACzByf,EAAWzf,EACX,IAAI8f,EAAM,EAEV,IAAK,IAAIC,KAAMJ,EACbG,GAAO1kB,KAAK4hB,OAAO+C,GAAI/f,GAAK2f,EAAYI,GACxCJ,EAAYI,GAAM,EAIhBnhB,EAAS+e,EAAK3d,MAChB8f,GAAOnC,EAAK3d,IAGd,IAAItI,EAAIwJ,KAAKQ,MAAMoe,GAKnB,IAAK,IAAIE,KAJTN,EAAM1f,GAAKtI,EACXioB,EAAY3f,GAAK8f,EAAMpoB,EAGNimB,EACXpB,GAAa1hB,QAAQmlB,GAAQzD,GAAa1hB,QAAQmF,IACpD+c,GAAQ3hB,KAAK4hB,OAAQW,EAAMqC,EAAMN,EAAO1f,QAInCpB,EAAS+e,EAAK3d,MACvB2f,EAAY3f,GAAK2d,EAAK3d,IAM1B,IAAK,IAAI9H,KAAOynB,EACW,IAArBA,EAAYznB,KACdwnB,EAAMD,IAAavnB,IAAQunB,EAAWE,EAAYznB,GAAOynB,EAAYznB,GAAOkD,KAAK4hB,OAAOyC,GAAUvnB,IAItG,OAAOud,GAAMra,KAAM,CACjBwhB,OAAQ8C,IACP,GAAMF,aASX7V,EAAOwV,OAAS,WACd,IAAK/jB,KAAKwP,QAAS,OAAOxP,KAG1B,IAFA,IAAI6kB,EAAU,GAELC,EAAM,EAAGC,EAAgBnoB,OAAO+H,KAAK3E,KAAKwhB,QAASsD,EAAMC,EAAcxoB,OAAQuoB,IAAO,CAC7F,IAAIlgB,EAAImgB,EAAcD,GACtBD,EAAQjgB,IAAM5E,KAAKwhB,OAAO5c,GAG5B,OAAOyV,GAAMra,KAAM,CACjBwhB,OAAQqD,IACP,IAcLtW,EAAOsD,OAAS,SAAgBwJ,GAC9B,IAAKrb,KAAKwP,UAAY6L,EAAM7L,QAC1B,OAAO,EAGT,IAAKxP,KAAK6N,IAAIgE,OAAOwJ,EAAMxN,KACzB,OAAO,EAGT,IAAK,IAAImX,EAAM,EAAGC,EAAiB9D,GAAc6D,EAAMC,EAAe1oB,OAAQyoB,IAAO,CACnF,IAAIrb,EAAIsb,EAAeD,GAEvB,GAAIhlB,KAAKwhB,OAAO7X,KAAO0R,EAAMmG,OAAO7X,GAClC,OAAO,EAIX,OAAO,GAGT5M,EAAa2kB,EAAU,CAAC,CACtB5kB,IAAK,SACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAK6N,IAAIhG,OAAS,OAQzC,CACD/K,IAAK,kBACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAK6N,IAAIwH,gBAAkB,OAElD,CACDvY,IAAK,QACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAO7J,OAAS,EAAIpD,MAOhD,CACDzX,IAAK,WACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAO5J,UAAY,EAAIrD,MAOnD,CACDzX,IAAK,SACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAO3W,QAAU,EAAI0J,MAOjD,CACDzX,IAAK,QACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAO3J,OAAS,EAAItD,MAOhD,CACDzX,IAAK,OACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAO1J,MAAQ,EAAIvD,MAO/C,CACDzX,IAAK,QACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAOzX,OAAS,EAAIwK,MAOhD,CACDzX,IAAK,UACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAOxX,SAAW,EAAIuK,MAOlD,CACDzX,IAAK,UACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAOzJ,SAAW,EAAIxD,MAOlD,CACDzX,IAAK,eACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKwhB,OAAO7C,cAAgB,EAAIpK,MAQvD,CACDzX,IAAK,UACL+C,IAAK,WACH,OAAwB,OAAjBG,KAAK2iB,UAOb,CACD7lB,IAAK,gBACL+C,IAAK,WACH,OAAOG,KAAK2iB,QAAU3iB,KAAK2iB,QAAQpiB,OAAS,OAO7C,CACDzD,IAAK,qBACL+C,IAAK,WACH,OAAOG,KAAK2iB,QAAU3iB,KAAK2iB,QAAQhR,YAAc,SAI9C+P,EA1rBT,GA4rBA,SAASkC,GAAiBsB,GACxB,GAAI1hB,EAAS0hB,GACX,OAAOxD,GAAShL,WAAWwO,GACtB,GAAIxD,GAASwB,WAAWgC,GAC7B,OAAOA,EACF,GAA2B,iBAAhBA,EAChB,OAAOxD,GAAS3H,WAAWmL,GAE3B,MAAM,IAAIhkB,EAAqB,6BAA+BgkB,EAAc,mBAAqBA,GAIrG,IAAIC,GAAY,mBA2BhB,IAAIC,GAEJ,WAIE,SAASA,EAAS3C,GAIhBziB,KAAKuB,EAAIkhB,EAAO4C,MAKhBrlB,KAAKrB,EAAI8jB,EAAO6C,IAKhBtlB,KAAK2iB,QAAUF,EAAOE,SAAW,KAKjC3iB,KAAKulB,iBAAkB,EAUzBH,EAASzC,QAAU,SAAiBpiB,EAAQoR,GAK1C,QAJoB,IAAhBA,IACFA,EAAc,OAGXpR,EACH,MAAM,IAAIW,EAAqB,oDAGjC,IAAIyhB,EAAUpiB,aAAkBmR,GAAUnR,EAAS,IAAImR,GAAQnR,EAAQoR,GAEvE,GAAIsD,GAASD,eACX,MAAM,IAAIvU,EAAqBkiB,GAE/B,OAAO,IAAIyC,EAAS,CAClBzC,QAASA,KAYfyC,EAASI,cAAgB,SAAuBH,EAAOC,GACrD,IAAIG,EAAaC,GAAiBL,GAC9BM,EAAWD,GAAiBJ,GAC5BM,EA1FR,SAA0BP,EAAOC,GAC/B,OAAKD,GAAUA,EAAM7V,QAET8V,GAAQA,EAAI9V,QAEb8V,EAAMD,EACRD,GAASzC,QAAQ,mBAAoB,qEAAuE0C,EAAM9B,QAAU,YAAc+B,EAAI/B,SAE9I,KAJA6B,GAASzC,QAAQ,0BAFjByC,GAASzC,QAAQ,4BAwFJkD,CAAiBJ,EAAYE,GAEjD,OAAqB,MAAjBC,EACK,IAAIR,EAAS,CAClBC,MAAOI,EACPH,IAAKK,IAGAC,GAWXR,EAASU,MAAQ,SAAeT,EAAO1B,GACrC,IAAI/S,EAAMgT,GAAiBD,GACvBlV,EAAKiX,GAAiBL,GAC1B,OAAOD,EAASI,cAAc/W,EAAIA,EAAGiV,KAAK9S,KAU5CwU,EAASW,OAAS,SAAgBT,EAAK3B,GACrC,IAAI/S,EAAMgT,GAAiBD,GACvBlV,EAAKiX,GAAiBJ,GAC1B,OAAOF,EAASI,cAAc/W,EAAGqV,MAAMlT,GAAMnC,IAY/C2W,EAAStC,QAAU,SAAiBC,EAAMnV,GACxC,IAAIoY,GAAUjD,GAAQ,IAAIkD,MAAM,IAAK,GACjC1kB,EAAIykB,EAAO,GACXrnB,EAAIqnB,EAAO,GAEf,GAAIzkB,GAAK5C,EAAG,CACV,IAAI0mB,EAAQ5O,GAASqM,QAAQvhB,EAAGqM,GAC5B0X,EAAM7O,GAASqM,QAAQnkB,EAAGiP,GAE9B,GAAIyX,EAAM7V,SAAW8V,EAAI9V,QACvB,OAAO4V,EAASI,cAAcH,EAAOC,GAGvC,GAAID,EAAM7V,QAAS,CACjB,IAAIoB,EAAM8Q,GAASoB,QAAQnkB,EAAGiP,GAE9B,GAAIgD,EAAIpB,QACN,OAAO4V,EAASU,MAAMT,EAAOzU,QAE1B,GAAI0U,EAAI9V,QAAS,CACtB,IAAI0W,EAAOxE,GAASoB,QAAQvhB,EAAGqM,GAE/B,GAAIsY,EAAK1W,QACP,OAAO4V,EAASW,OAAOT,EAAKY,IAKlC,OAAOd,EAASzC,QAAQ,aAAc,cAAiBI,EAAO,kCAShEqC,EAASe,WAAa,SAAoBxoB,GACxC,OAAOA,GAAKA,EAAE4nB,kBAAmB,GAQnC,IAAIhX,EAAS6W,EAASjoB,UAugBtB,OAhgBAoR,EAAOhS,OAAS,SAAgB0E,GAK9B,YAJa,IAATA,IACFA,EAAO,gBAGFjB,KAAKwP,QAAUxP,KAAKomB,WAAWrnB,MAAMiB,KAAM,CAACiB,IAAOpB,IAAIoB,GAAQsT,KAWxEhG,EAAOgJ,MAAQ,SAAetW,GAK5B,QAJa,IAATA,IACFA,EAAO,iBAGJjB,KAAKwP,QAAS,OAAO+E,IAC1B,IAAI8Q,EAAQrlB,KAAKqlB,MAAMgB,QAAQplB,GAC3BqkB,EAAMtlB,KAAKslB,IAAIe,QAAQplB,GAC3B,OAAO6E,KAAKC,MAAMuf,EAAIgB,KAAKjB,EAAOpkB,GAAMpB,IAAIoB,IAAS,GASvDsN,EAAOgY,QAAU,SAAiBtlB,GAChC,QAAOjB,KAAKwP,SAAUxP,KAAKrB,EAAEmlB,MAAM,GAAGyC,QAAQvmB,KAAKuB,EAAGN,IAQxDsN,EAAOiY,QAAU,WACf,OAAOxmB,KAAKuB,EAAEwS,YAAc/T,KAAKrB,EAAEoV,WASrCxF,EAAOkY,QAAU,SAAiBC,GAChC,QAAK1mB,KAAKwP,SACHxP,KAAKuB,EAAImlB,GASlBnY,EAAOoY,SAAW,SAAkBD,GAClC,QAAK1mB,KAAKwP,SACHxP,KAAKrB,GAAK+nB,GASnBnY,EAAOqY,SAAW,SAAkBF,GAClC,QAAK1mB,KAAKwP,UACHxP,KAAKuB,GAAKmlB,GAAY1mB,KAAKrB,EAAI+nB,IAWxCnY,EAAOzO,IAAM,SAAaka,GACxB,IAAI/N,OAAiB,IAAV+N,EAAmB,GAAKA,EAC/BqL,EAAQpZ,EAAKoZ,MACbC,EAAMrZ,EAAKqZ,IAEf,OAAKtlB,KAAKwP,QACH4V,EAASI,cAAcH,GAASrlB,KAAKuB,EAAG+jB,GAAOtlB,KAAKrB,GADjCqB,MAU5BuO,EAAOsY,QAAU,WACf,IAAIxX,EAAQrP,KAEZ,IAAKA,KAAKwP,QAAS,MAAO,GAE1B,IAAK,IAAIgM,EAAOrc,UAAU5C,OAAQuqB,EAAY,IAAIlb,MAAM4P,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IACpFoL,EAAUpL,GAAQvc,UAAUuc,GAU9B,IAPA,IAAIqL,EAASD,EAAUvV,IAAImU,IAAkBlU,OAAO,SAAUzK,GAC5D,OAAOsI,EAAMuX,SAAS7f,KACrB0D,OACCuc,EAAU,GACVzlB,EAAIvB,KAAKuB,EACTjF,EAAI,EAEDiF,EAAIvB,KAAKrB,GAAG,CACjB,IAAIwjB,EAAQ4E,EAAOzqB,IAAM0D,KAAKrB,EAC1B4F,GAAQ4d,GAASniB,KAAKrB,EAAIqB,KAAKrB,EAAIwjB,EACvC6E,EAAQloB,KAAKsmB,EAASI,cAAcjkB,EAAGgD,IACvChD,EAAIgD,EACJjI,GAAK,EAGP,OAAO0qB,GAUTzY,EAAO0Y,QAAU,SAAiBtD,GAChC,IAAI/S,EAAMgT,GAAiBD,GAE3B,IAAK3jB,KAAKwP,UAAYoB,EAAIpB,SAAsC,IAA3BoB,EAAI6S,GAAG,gBAC1C,MAAO,GAQT,IALA,IACItB,EACA5d,EAFAhD,EAAIvB,KAAKuB,EAGTylB,EAAU,GAEPzlB,EAAIvB,KAAKrB,GAEd4F,IADA4d,EAAQ5gB,EAAEmiB,KAAK9S,KACE5Q,KAAKrB,EAAIqB,KAAKrB,EAAIwjB,EACnC6E,EAAQloB,KAAKsmB,EAASI,cAAcjkB,EAAGgD,IACvChD,EAAIgD,EAGN,OAAOyiB,GASTzY,EAAO2Y,cAAgB,SAAuBC,GAC5C,OAAKnnB,KAAKwP,QACHxP,KAAKinB,QAAQjnB,KAAKzD,SAAW4qB,GAAe7hB,MAAM,EAAG6hB,GADlC,IAU5B5Y,EAAO6Y,SAAW,SAAkB/L,GAClC,OAAOrb,KAAKrB,EAAI0c,EAAM9Z,GAAKvB,KAAKuB,EAAI8Z,EAAM1c,GAS5C4P,EAAO8Y,WAAa,SAAoBhM,GACtC,QAAKrb,KAAKwP,UACFxP,KAAKrB,IAAO0c,EAAM9Z,GAS5BgN,EAAO+Y,SAAW,SAAkBjM,GAClC,QAAKrb,KAAKwP,UACF6L,EAAM1c,IAAOqB,KAAKuB,GAS5BgN,EAAOgZ,QAAU,SAAiBlM,GAChC,QAAKrb,KAAKwP,UACHxP,KAAKuB,GAAK8Z,EAAM9Z,GAAKvB,KAAKrB,GAAK0c,EAAM1c,IAS9C4P,EAAOsD,OAAS,SAAgBwJ,GAC9B,SAAKrb,KAAKwP,UAAY6L,EAAM7L,WAIrBxP,KAAKuB,EAAEsQ,OAAOwJ,EAAM9Z,IAAMvB,KAAKrB,EAAEkT,OAAOwJ,EAAM1c,KAWvD4P,EAAOiZ,aAAe,SAAsBnM,GAC1C,IAAKrb,KAAKwP,QAAS,OAAOxP,KAC1B,IAAIuB,EAAIvB,KAAKuB,EAAI8Z,EAAM9Z,EAAIvB,KAAKuB,EAAI8Z,EAAM9Z,EACtC5C,EAAIqB,KAAKrB,EAAI0c,EAAM1c,EAAIqB,KAAKrB,EAAI0c,EAAM1c,EAE1C,OAAQA,EAAJ4C,EACK,KAEA6jB,EAASI,cAAcjkB,EAAG5C,IAWrC4P,EAAOkZ,MAAQ,SAAepM,GAC5B,IAAKrb,KAAKwP,QAAS,OAAOxP,KAC1B,IAAIuB,EAAIvB,KAAKuB,EAAI8Z,EAAM9Z,EAAIvB,KAAKuB,EAAI8Z,EAAM9Z,EACtC5C,EAAIqB,KAAKrB,EAAI0c,EAAM1c,EAAIqB,KAAKrB,EAAI0c,EAAM1c,EAC1C,OAAOymB,EAASI,cAAcjkB,EAAG5C,IAUnCymB,EAASsC,MAAQ,SAAeC,GAC9B,IAAIC,EAAwBD,EAAUld,KAAK,SAAU5L,EAAGgpB,GACtD,OAAOhpB,EAAE0C,EAAIsmB,EAAEtmB,IACd8C,OAAO,SAAU8M,EAAO2W,GACzB,IAAIC,EAAQ5W,EAAM,GACdlD,EAAUkD,EAAM,GAEpB,OAAKlD,EAEMA,EAAQmZ,SAASU,IAAS7Z,EAAQoZ,WAAWS,GAC/C,CAACC,EAAO9Z,EAAQwZ,MAAMK,IAEtB,CAACC,EAAM3W,OAAO,CAACnD,IAAW6Z,GAJ1B,CAACC,EAAOD,IAMhB,CAAC,GAAI,OACJ5W,EAAQ0W,EAAsB,GAC9BI,EAAQJ,EAAsB,GAMlC,OAJII,GACF9W,EAAMpS,KAAKkpB,GAGN9W,GASTkU,EAAS6C,IAAM,SAAaN,GAC1B,IAAIO,EAEA7C,EAAQ,KACR8C,EAAe,EAEfnB,EAAU,GACVoB,EAAOT,EAAUpW,IAAI,SAAUjV,GACjC,MAAO,CAAC,CACN+rB,KAAM/rB,EAAEiF,EACRgH,KAAM,KACL,CACD8f,KAAM/rB,EAAEqC,EACR4J,KAAM,QAQDmD,GALQwc,EAAmBtc,MAAMzO,WAAWiU,OAAOrS,MAAMmpB,EAAkBE,GAChE3d,KAAK,SAAU5L,EAAGgpB,GACpC,OAAOhpB,EAAEwpB,KAAOR,EAAEQ,OAGM1c,EAAWC,MAAMC,QAAQH,GAAYI,EAAK,EAApE,IAAuEJ,EAAYC,EAAWD,EAAYA,EAAUK,OAAOC,cAAe,CACxI,IAAIsc,EAEJ,GAAI3c,EAAU,CACZ,GAAIG,GAAMJ,EAAUnP,OAAQ,MAC5B+rB,EAAQ5c,EAAUI,SACb,CAEL,IADAA,EAAKJ,EAAUnH,QACR2H,KAAM,MACboc,EAAQxc,EAAG7L,MAGb,IAAI3D,EAAIgsB,EAINjD,EADmB,KAFrB8C,GAA2B,MAAX7rB,EAAEiM,KAAe,GAAK,GAG5BjM,EAAE+rB,MAENhD,IAAUA,IAAW/oB,EAAE+rB,MACzBrB,EAAQloB,KAAKsmB,EAASI,cAAcH,EAAO/oB,EAAE+rB,OAGvC,MAIZ,OAAOjD,EAASsC,MAAMV,IASxBzY,EAAOga,WAAa,WAGlB,IAFA,IAAIxX,EAAS/Q,KAEJ6b,EAAQ1c,UAAU5C,OAAQorB,EAAY,IAAI/b,MAAMiQ,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACzF4L,EAAU5L,GAAS5c,UAAU4c,GAG/B,OAAOqJ,EAAS6C,IAAI,CAACjoB,MAAMoR,OAAOuW,IAAYpW,IAAI,SAAUjV,GAC1D,OAAOyU,EAAOyW,aAAalrB,KAC1BkV,OAAO,SAAUlV,GAClB,OAAOA,IAAMA,EAAEkqB,aASnBjY,EAAO9P,SAAW,WAChB,OAAKuB,KAAKwP,QACH,IAAMxP,KAAKuB,EAAEgiB,QAAU,MAAavjB,KAAKrB,EAAE4kB,QAAU,IADlC4B,IAW5B5W,EAAOgV,MAAQ,SAAe3V,GAC5B,OAAK5N,KAAKwP,QACHxP,KAAKuB,EAAEgiB,MAAM3V,GAAQ,IAAM5N,KAAKrB,EAAE4kB,MAAM3V,GADrBuX,IAW5B5W,EAAOia,UAAY,WACjB,OAAKxoB,KAAKwP,QACHxP,KAAKuB,EAAEinB,YAAc,IAAMxoB,KAAKrB,EAAE6pB,YADfrD,IAY5B5W,EAAOka,UAAY,SAAmB7a,GACpC,OAAK5N,KAAKwP,QACHxP,KAAKuB,EAAEknB,UAAU7a,GAAQ,IAAM5N,KAAKrB,EAAE8pB,UAAU7a,GAD7BuX,IAY5B5W,EAAO4U,SAAW,SAAkBuF,EAAYC,GAC9C,IACIC,QADmB,IAAXD,EAAoB,GAAKA,GACTE,UACxBA,OAAgC,IAApBD,EAA6B,MAAQA,EAErD,OAAK5oB,KAAKwP,QACH,GAAKxP,KAAKuB,EAAE4hB,SAASuF,GAAcG,EAAY7oB,KAAKrB,EAAEwkB,SAASuF,GAD5CvD,IAiB5B5W,EAAO6X,WAAa,SAAoBnlB,EAAM2M,GAC5C,OAAK5N,KAAKwP,QAIHxP,KAAKrB,EAAE2nB,KAAKtmB,KAAKuB,EAAGN,EAAM2M,GAHxB8T,GAASiB,QAAQ3iB,KAAK8oB,gBAcjCva,EAAOwa,aAAe,SAAsBC,GAC1C,OAAO5D,EAASI,cAAcwD,EAAMhpB,KAAKuB,GAAIynB,EAAMhpB,KAAKrB,KAG1D5B,EAAaqoB,EAAU,CAAC,CACtBtoB,IAAK,QACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKuB,EAAI,OAOhC,CACDzE,IAAK,MACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKrB,EAAI,OAOhC,CACD7B,IAAK,UACL+C,IAAK,WACH,OAA8B,OAAvBG,KAAK8oB,gBAOb,CACDhsB,IAAK,gBACL+C,IAAK,WACH,OAAOG,KAAK2iB,QAAU3iB,KAAK2iB,QAAQpiB,OAAS,OAO7C,CACDzD,IAAK,qBACL+C,IAAK,WACH,OAAOG,KAAK2iB,QAAU3iB,KAAK2iB,QAAQhR,YAAc,SAI9CyT,EAnqBT,GA0qBI6D,GAEJ,WACE,SAASA,KAqPT,OA9OAA,EAAKC,OAAS,SAAgBzZ,QACf,IAATA,IACFA,EAAOwF,GAASR,aAGlB,IAAI0U,EAAQ1S,GAASqH,QAAQsL,QAAQ3Z,GAAM3P,IAAI,CAC7C6B,MAAO,KAET,OAAQ8N,EAAK+G,WAAa2S,EAAMrf,SAAWqf,EAAMrpB,IAAI,CACnD6B,MAAO,IACNmI,QASLmf,EAAKI,gBAAkB,SAAyB5Z,GAC9C,OAAOgD,GAASK,iBAAiBrD,IAASgD,GAASG,YAAYnD,IAkBjEwZ,EAAKzU,cAAgB,SAAyBpP,GAC5C,OAAOoP,GAAcpP,EAAO6P,GAASR,cAoBvCwU,EAAKpe,OAAS,SAAgBtO,EAAQyd,QACrB,IAAXzd,IACFA,EAAS,QAGX,IAAI0P,OAAiB,IAAV+N,EAAmB,GAAKA,EAC/BsP,EAAcrd,EAAKpE,OACnBA,OAAyB,IAAhByhB,EAAyB,KAAOA,EACzCC,EAAuBtd,EAAKoJ,gBAC5BA,OAA2C,IAAzBkU,EAAkC,KAAOA,EAC3DC,EAAsBvd,EAAKmE,eAC3BA,OAAyC,IAAxBoZ,EAAiC,UAAYA,EAElE,OAAOrU,GAAO5X,OAAOsK,EAAQwN,EAAiBjF,GAAgBvF,OAAOtO,IAgBvE0sB,EAAKQ,aAAe,SAAsBltB,EAAQosB,QACjC,IAAXpsB,IACFA,EAAS,QAGX,IAAI4U,OAAmB,IAAXwX,EAAoB,GAAKA,EACjCe,EAAevY,EAAMtJ,OACrBA,OAA0B,IAAjB6hB,EAA0B,KAAOA,EAC1CC,EAAwBxY,EAAMkE,gBAC9BA,OAA4C,IAA1BsU,EAAmC,KAAOA,EAC5DC,EAAuBzY,EAAMf,eAC7BA,OAA0C,IAAzBwZ,EAAkC,UAAYA,EAEnE,OAAOzU,GAAO5X,OAAOsK,EAAQwN,EAAiBjF,GAAgBvF,OAAOtO,GAAQ,IAiB/E0sB,EAAKhe,SAAW,SAAkB1O,EAAQstB,QACzB,IAAXttB,IACFA,EAAS,QAGX,IAAI+rB,OAAmB,IAAXuB,EAAoB,GAAKA,EACjCC,EAAexB,EAAMzgB,OACrBA,OAA0B,IAAjBiiB,EAA0B,KAAOA,EAC1CC,EAAwBzB,EAAMjT,gBAC9BA,OAA4C,IAA1B0U,EAAmC,KAAOA,EAEhE,OAAO5U,GAAO5X,OAAOsK,EAAQwN,EAAiB,MAAMpK,SAAS1O,IAe/D0sB,EAAKe,eAAiB,SAAwBztB,EAAQ0tB,QACrC,IAAX1tB,IACFA,EAAS,QAGX,IAAI2tB,OAAmB,IAAXD,EAAoB,GAAKA,EACjCE,EAAeD,EAAMriB,OACrBA,OAA0B,IAAjBsiB,EAA0B,KAAOA,EAC1CC,EAAwBF,EAAM7U,gBAC9BA,OAA4C,IAA1B+U,EAAmC,KAAOA,EAEhE,OAAOjV,GAAO5X,OAAOsK,EAAQwN,EAAiB,MAAMpK,SAAS1O,GAAQ,IAYvE0sB,EAAK/d,UAAY,SAAmBmf,GAClC,IACIC,QADmB,IAAXD,EAAoB,GAAKA,GACZxiB,OACrBA,OAA0B,IAAjByiB,EAA0B,KAAOA,EAE9C,OAAOnV,GAAO5X,OAAOsK,GAAQqD,aAc/B+d,EAAK3d,KAAO,SAAc/O,EAAQguB,QACjB,IAAXhuB,IACFA,EAAS,SAGX,IACIiuB,QADmB,IAAXD,EAAoB,GAAKA,GACZ1iB,OACrBA,OAA0B,IAAjB2iB,EAA0B,KAAOA,EAE9C,OAAOrV,GAAO5X,OAAOsK,EAAQ,KAAM,WAAWyD,KAAK/O,IAerD0sB,EAAKwB,SAAW,WACd,IAAItiB,GAAO,EACPuiB,GAAa,EACbC,GAAQ,EACRC,GAAW,EAEf,GAAIlnB,IAAW,CACbyE,GAAO,EACPuiB,EAAa7mB,IACb+mB,EAAW7mB,IAEX,IACE4mB,EAEkC,qBAF1B,IAAIhnB,KAAKC,eAAe,KAAM,CACpCkE,SAAU,qBACTgH,kBAAkBhH,SACrB,MAAOnJ,GACPgsB,GAAQ,GAIZ,MAAO,CACLxiB,KAAMA,EACNuiB,WAAYA,EACZC,MAAOA,EACPC,SAAUA,IAIP3B,EAtPT,GAyPA,SAAS4B,GAAQC,EAASC,GACN,SAAdC,EAAmCvc,GACrC,OAAOA,EAAGwc,MAAM,EAAG,CACjBC,eAAe,IACd7E,QAAQ,OAAOtS,UAHpB,IAKI2G,EAAKsQ,EAAYD,GAASC,EAAYF,GAE1C,OAAOhlB,KAAKC,MAAM2b,GAAShL,WAAWgE,GAAI+I,GAAG,SA2C/C,SAAS0H,GAAOL,EAASC,EAAOrT,EAAO9J,GACrC,IAAIwd,EAzCN,SAAwBjP,EAAQ4O,EAAOrT,GAYrC,IAXA,IASI2T,EAAaC,EADbtE,EAAU,GAGLlb,EAAK,EAAGyf,EAXH,CAAC,CAAC,QAAS,SAAU1sB,EAAGgpB,GACpC,OAAOA,EAAEnmB,KAAO7C,EAAE6C,OAChB,CAAC,SAAU,SAAU7C,EAAGgpB,GAC1B,OAAOA,EAAElmB,MAAQ9C,EAAE8C,MAA4B,IAAnBkmB,EAAEnmB,KAAO7C,EAAE6C,QACrC,CAAC,QAAS,SAAU7C,EAAGgpB,GACzB,IAAI/P,EAAO+S,GAAQhsB,EAAGgpB,GACtB,OAAQ/P,EAAOA,EAAO,GAAK,IACzB,CAAC,OAAQ+S,KAIwB/e,EAAKyf,EAAShvB,OAAQuP,IAAM,CAC/D,IAAI0f,EAAcD,EAASzf,GACvB7K,EAAOuqB,EAAY,GACnBC,EAASD,EAAY,GAEzB,GAA2B,GAAvB9T,EAAMjY,QAAQwB,GAAY,CAC5B,IAAIyqB,EAEJL,EAAcpqB,EACd,IAIM0qB,EAJFC,EAAQH,EAAOtP,EAAQ4O,GAG3B,GAAgBA,GAFhBO,EAAYnP,EAAOuH,OAAMgI,EAAe,IAAiBzqB,GAAQ2qB,EAAOF,KAKtEvP,EAASA,EAAOuH,OAAMiI,EAAgB,IAAkB1qB,GAAQ2qB,EAAQ,EAAGD,IAC3EC,GAAS,OAETzP,EAASmP,EAGXtE,EAAQ/lB,GAAQ2qB,GAIpB,MAAO,CAACzP,EAAQ6K,EAASsE,EAAWD,GAIdQ,CAAef,EAASC,EAAOrT,GACjDyE,EAASiP,EAAgB,GACzBpE,EAAUoE,EAAgB,GAC1BE,EAAYF,EAAgB,GAC5BC,EAAcD,EAAgB,GAE9BU,EAAkBf,EAAQ5O,EAC1B4P,EAAkBrU,EAAMlG,OAAO,SAAU7H,GAC3C,OAAqE,GAA9D,CAAC,QAAS,UAAW,UAAW,gBAAgBlK,QAAQkK,KAGjE,GAA+B,IAA3BoiB,EAAgBxvB,OAAc,CAE9B,IAAIyvB,EADN,GAAIV,EAAYP,EAGdO,EAAYnP,EAAOuH,OAAMsI,EAAgB,IAAkBX,GAAe,EAAGW,IAG3EV,IAAcnP,IAChB6K,EAAQqE,IAAgBrE,EAAQqE,IAAgB,GAAKS,GAAmBR,EAAYnP,IAIxF,IAGM8P,EAHFtI,EAAWjC,GAAS3H,WAAWnd,OAAOsL,OAAO8e,EAASpZ,IAE1D,OAA6B,EAAzBme,EAAgBxvB,QAGV0vB,EAAuBvK,GAAShL,WAAWoV,EAAiBle,IAAO0D,QAAQvS,MAAMktB,EAAsBF,GAAiBrI,KAAKC,GAE9HA,EAIX,IAAIuI,GAAmB,CACrBC,KAAM,QACNC,QAAS,QACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,SAAU,QACVC,KAAM,QACNC,QAAS,wBACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,QAAS,QACTC,KAAM,QACNC,KAAM,QACNC,KAAM,QACNC,KAAM,OAEJC,GAAwB,CAC1BrB,KAAM,CAAC,KAAM,MACbC,QAAS,CAAC,KAAM,MAChBC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,SAAU,CAAC,MAAO,OAClBC,KAAM,CAAC,KAAM,MACbE,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,QAAS,CAAC,KAAM,MAChBC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,MACbC,KAAM,CAAC,KAAM,OAGXG,GAAevB,GAAiBQ,QAAQ9jB,QAAQ,WAAY,IAAIqd,MAAM,IA8B1E,SAASyH,GAAWzhB,EAAM0hB,GACxB,IAAItY,EAAkBpJ,EAAKoJ,gBAM3B,YAJe,IAAXsY,IACFA,EAAS,IAGJ,IAAIvb,OAAO,GAAK8Z,GAAiB7W,GAAmB,QAAUsY,GAGvE,IAAIC,GAAc,oDAElB,SAASC,GAAQlR,EAAOmR,GAOtB,YANa,IAATA,IACFA,EAAO,SAAcxxB,GACnB,OAAOA,IAIJ,CACLqgB,MAAOA,EACPoR,MAAO,SAAe9hB,GACpB,IAAI1K,EAAI0K,EAAK,GACb,OAAO6hB,EApDb,SAAqBE,GACnB,IAAI/tB,EAAQwF,SAASuoB,EAAK,IAE1B,GAAI9kB,MAAMjJ,GAAQ,CAChBA,EAAQ,GAER,IAAK,IAAI3D,EAAI,EAAGA,EAAI0xB,EAAIzxB,OAAQD,IAAK,CACnC,IAAI2xB,EAAOD,EAAIE,WAAW5xB,GAE1B,IAAiD,IAA7C0xB,EAAI1xB,GAAG6xB,OAAOjC,GAAiBQ,SACjCzsB,GAASwtB,GAAahuB,QAAQuuB,EAAI1xB,SAElC,IAAK,IAAIQ,KAAO0wB,GAAuB,CACrC,IAAIY,EAAuBZ,GAAsB1wB,GAC7CuxB,EAAMD,EAAqB,GAC3BE,EAAMF,EAAqB,GAEnBC,GAARJ,GAAeA,GAAQK,IACzBruB,GAASguB,EAAOI,IAMxB,OAAO5oB,SAASxF,EAAO,IAEvB,OAAOA,EA0BOsuB,CAAYhtB,MAK9B,SAASitB,GAAajtB,GAEpB,OAAOA,EAAEqH,QAAQ,KAAM,QAGzB,SAAS6lB,GAAqBltB,GAC5B,OAAOA,EAAEqH,QAAQ,KAAM,IAAIJ,cAG7B,SAASkmB,GAAMC,EAASC,GACtB,OAAgB,OAAZD,EACK,KAEA,CACLhS,MAAOvK,OAAOuc,EAAQpd,IAAIid,IAAcK,KAAK,MAC7Cd,MAAO,SAAe5c,GACpB,IAAI5P,EAAI4P,EAAM,GACd,OAAOwd,EAAQG,UAAU,SAAUxyB,GACjC,OAAOmyB,GAAqBltB,KAAOktB,GAAqBnyB,KACrDsyB,IAMb,SAAS9kB,GAAO6S,EAAOoS,GACrB,MAAO,CACLpS,MAAOA,EACPoR,MAAO,SAAezF,GAGpB,OAAOzf,GAFCyf,EAAM,GACNA,EAAM,KAGhByG,OAAQA,GAIZ,SAASC,GAAOrS,GACd,MAAO,CACLA,MAAOA,EACPoR,MAAO,SAAe7D,GAEpB,OADQA,EAAM,KAyMpB,IAAI+E,GAA0B,CAC5BvtB,KAAM,CACJwtB,UAAW,KACX1X,QAAS,SAEX7V,MAAO,CACL6V,QAAS,IACT0X,UAAW,KACXC,MAAO,MACPC,KAAM,QAERxtB,IAAK,CACH4V,QAAS,IACT0X,UAAW,MAEbltB,QAAS,CACPmtB,MAAO,MACPC,KAAM,QAERC,UAAW,IACXC,UAAW,IACXptB,KAAM,CACJsV,QAAS,IACT0X,UAAW,MAEb/sB,OAAQ,CACNqV,QAAS,IACT0X,UAAW,MAEb7sB,OAAQ,CACNmV,QAAS,IACT0X,UAAW,OA4Jf,IAAIK,GAAqB,KAUzB,SAASC,GAAsBrjB,EAAOtE,GACpC,GAAIsE,EAAMC,QACR,OAAOD,EAGT,IAAIwB,EAAaD,GAAUY,uBAAuBnC,EAAME,KAExD,IAAKsB,EACH,OAAOxB,EAGT,IAEI6E,EAFYtD,GAAUnQ,OAAOsK,EAAQ8F,GACnBkB,oBAlBpB0gB,GADGA,IACkB9Y,GAASC,WAAW,gBAmBxBnF,IAAI,SAAUxT,GAC/B,OAhLJ,SAAsB0xB,EAAM5nB,EAAQ8F,GAClC,IAAIpF,EAAOknB,EAAKlnB,KACZtI,EAAQwvB,EAAKxvB,MAEjB,GAAa,YAATsI,EACF,MAAO,CACL6D,SAAS,EACTC,IAAKpM,GAIT,IAAIkX,EAAQxJ,EAAWpF,GACnB8D,EAAM4iB,GAAwB1mB,GAMlC,MAJmB,iBAAR8D,IACTA,EAAMA,EAAI8K,IAGR9K,EACK,CACLD,SAAS,EACTC,IAAKA,QAHT,EA8JSqjB,CAAa3xB,EAAG8J,EAAQ8F,KAGjC,OAAIqD,EAAO2e,cAASpwB,GACX4M,EAGF6E,EAeT,SAAS4e,GAAkB/nB,EAAQzC,EAAOsD,GACxC,IAAIsI,EAbN,SAA2BA,EAAQnJ,GACjC,IAAIqgB,EAEJ,OAAQA,EAAmBtc,MAAMzO,WAAWiU,OAAOrS,MAAMmpB,EAAkBlX,EAAOO,IAAI,SAAU5E,GAC9F,OAAO6iB,GAAsB7iB,EAAG9E,MASrBgoB,CAAkBniB,GAAUK,YAAYrF,GAASb,GAC1D6P,EAAQ1G,EAAOO,IAAI,SAAU5E,GAC/B,OA1aJ,SAAsBR,EAAO0B,GAYb,SAAVzB,EAA2BO,GAC7B,MAAO,CACLgQ,MAAOvK,OAnBb,SAAqBnS,GAEnB,OAAOA,EAAM2I,QAAQ,8BAA+B,QAiBlCknB,CAAYnjB,EAAEN,MAC5B0hB,MAAO,SAAegC,GAEpB,OADQA,EAAM,IAGhB3jB,SAAS,GAlBb,IAAI4jB,EAAMtC,GAAW7f,GACjBoiB,EAAMvC,GAAW7f,EAAK,OACtBqiB,EAAQxC,GAAW7f,EAAK,OACxBsiB,EAAOzC,GAAW7f,EAAK,OACvBuiB,EAAM1C,GAAW7f,EAAK,OACtBwiB,EAAW3C,GAAW7f,EAAK,SAC3ByiB,EAAa5C,GAAW7f,EAAK,SAC7B0iB,EAAW7C,GAAW7f,EAAK,SAC3B2iB,EAAY9C,GAAW7f,EAAK,SAC5B4iB,EAAY/C,GAAW7f,EAAK,SAC5B6iB,EAAYhD,GAAW7f,EAAK,SA4K5B5M,EAjKU,SAAiB0L,GAC7B,GAAIR,EAAMC,QACR,OAAOA,EAAQO,GAGjB,OAAQA,EAAEN,KAER,IAAK,IACH,OAAOqiB,GAAM7gB,EAAIvC,KAAK,SAAS,GAAQ,GAEzC,IAAK,KACH,OAAOojB,GAAM7gB,EAAIvC,KAAK,QAAQ,GAAQ,GAGxC,IAAK,IACH,OAAOuiB,GAAQ0C,GAEjB,IAAK,KACH,OAAO1C,GAAQ4C,EAAWhpB,IAE5B,IAAK,OACH,OAAOomB,GAAQsC,GAEjB,IAAK,QACH,OAAOtC,GAAQ6C,GAEjB,IAAK,SACH,OAAO7C,GAAQuC,GAGjB,IAAK,IACH,OAAOvC,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAEjB,IAAK,MACH,OAAOvB,GAAM7gB,EAAIhD,OAAO,SAAS,GAAM,GAAQ,GAEjD,IAAK,OACH,OAAO6jB,GAAM7gB,EAAIhD,OAAO,QAAQ,GAAM,GAAQ,GAEhD,IAAK,IACH,OAAOgjB,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAEjB,IAAK,MACH,OAAOvB,GAAM7gB,EAAIhD,OAAO,SAAS,GAAO,GAAQ,GAElD,IAAK,OACH,OAAO6jB,GAAM7gB,EAAIhD,OAAO,QAAQ,GAAO,GAAQ,GAGjD,IAAK,IACH,OAAOgjB,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAGjB,IAAK,IACH,OAAOpC,GAAQyC,GAEjB,IAAK,MACH,OAAOzC,GAAQqC,GAGjB,IAAK,KACH,OAAOrC,GAAQoC,GAEjB,IAAK,IACH,OAAOpC,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAEjB,IAAK,IACH,OAAOpC,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAEjB,IAAK,IAGL,IAAK,IACH,OAAOpC,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAEjB,IAAK,IACH,OAAOpC,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAEjB,IAAK,IACH,OAAOpC,GAAQyC,GAEjB,IAAK,MACH,OAAOzC,GAAQqC,GAEjB,IAAK,IACH,OAAOlB,GAAOwB,GAGhB,IAAK,IACH,OAAO9B,GAAM7gB,EAAI3C,YAAa,GAGhC,IAAK,OACH,OAAO2iB,GAAQsC,GAEjB,IAAK,KACH,OAAOtC,GAAQ4C,EAAWhpB,IAG5B,IAAK,IACH,OAAOomB,GAAQwC,GAEjB,IAAK,KACH,OAAOxC,GAAQoC,GAGjB,IAAK,IACL,IAAK,IACH,OAAOpC,GAAQmC,GAEjB,IAAK,MACH,OAAOtB,GAAM7gB,EAAI5C,SAAS,SAAS,GAAO,GAAQ,GAEpD,IAAK,OACH,OAAOyjB,GAAM7gB,EAAI5C,SAAS,QAAQ,GAAO,GAAQ,GAEnD,IAAK,MACH,OAAOyjB,GAAM7gB,EAAI5C,SAAS,SAAS,GAAM,GAAQ,GAEnD,IAAK,OACH,OAAOyjB,GAAM7gB,EAAI5C,SAAS,QAAQ,GAAM,GAAQ,GAGlD,IAAK,IACL,IAAK,KACH,OAAOnB,GAAO,IAAIsI,OAAO,QAAUie,EAAShe,OAAS,SAAW4d,EAAI5d,OAAS,OAAQ,GAEvF,IAAK,MACH,OAAOvI,GAAO,IAAIsI,OAAO,QAAUie,EAAShe,OAAS,KAAO4d,EAAI5d,OAAS,MAAO,GAIlF,IAAK,IACH,OAAO2c,GAAO,sBAEhB,QACE,OAAO5iB,EAAQO,IAIVgkB,CAAQxkB,IAAU,CAC3B2c,cAAe8E,IAGjB,OADA3sB,EAAKkL,MAAQA,EACNlL,EA+OE2vB,CAAajkB,EAAG9E,KAErBgpB,EAAoBnZ,EAAMrP,KAAK,SAAUsE,GAC3C,OAAOA,EAAEmc,gBAGX,GAAI+H,EACF,MAAO,CACLzrB,MAAOA,EACP4L,OAAQA,EACR8X,cAAe+H,EAAkB/H,eAGnC,IAAIgI,EA1LR,SAAoBpZ,GAMlB,MAAO,CAAC,IALCA,EAAMnG,IAAI,SAAU5H,GAC3B,OAAOA,EAAEgT,QACRtY,OAAO,SAAUuB,EAAGyO,GACrB,OAAOzO,EAAI,IAAMyO,EAAEhC,OAAS,KAC3B,IACgB,IAAKqF,GAoLJqZ,CAAWrZ,GACzBsZ,EAAcF,EAAY,GAC1BG,EAAWH,EAAY,GACvBnU,EAAQvK,OAAO4e,EAAa,KAC5BE,EArLR,SAAe9rB,EAAOuX,EAAOsU,GAC3B,IAAIE,EAAU/rB,EAAM2N,MAAM4J,GAE1B,GAAIwU,EAAS,CACX,IAAIC,EAAM,GACNC,EAAa,EAEjB,IAAK,IAAI/0B,KAAK20B,EACZ,GAAIpsB,EAAeosB,EAAU30B,GAAI,CAC/B,IAAIg1B,EAAIL,EAAS30B,GACbyyB,EAASuC,EAAEvC,OAASuC,EAAEvC,OAAS,EAAI,GAElCuC,EAAEllB,SAAWklB,EAAEnlB,QAClBilB,EAAIE,EAAEnlB,MAAME,IAAI,IAAMilB,EAAEvD,MAAMoD,EAAQ7rB,MAAM+rB,EAAYA,EAAatC,KAGvEsC,GAActC,EAIlB,MAAO,CAACoC,EAASC,GAEjB,MAAO,CAACD,EAAS,IA+JJpe,CAAM3N,EAAOuX,EAAOsU,GAC7BM,EAAaL,EAAO,GACpBC,EAAUD,EAAO,GACjBM,EAAQL,EA9JhB,SAA6BA,GAC3B,IA8CI1hB,EAuCJ,OAhCEA,EALGlM,EAAY4tB,EAAQM,GAEbluB,EAAY4tB,EAAQ/b,GAGvB,KAFA3C,GAASlV,OAAO4zB,EAAQ/b,GAFxB,IAAInB,GAAgBkd,EAAQM,GAOhCluB,EAAY4tB,EAAQO,KACvBP,EAAQQ,EAAsB,GAAjBR,EAAQO,EAAI,GAAS,GAG/BnuB,EAAY4tB,EAAQG,KACnBH,EAAQG,EAAI,IAAoB,IAAdH,EAAQtyB,EAC5BsyB,EAAQG,GAAK,GACU,KAAdH,EAAQG,GAA0B,IAAdH,EAAQtyB,IACrCsyB,EAAQG,EAAI,IAIE,IAAdH,EAAQS,GAAWT,EAAQU,IAC7BV,EAAQU,GAAKV,EAAQU,GAGlBtuB,EAAY4tB,EAAQxnB,KACvBwnB,EAAQW,EAAIpsB,EAAYyrB,EAAQxnB,IAY3B,CATI/M,OAAO+H,KAAKwsB,GAAS9sB,OAAO,SAAUgQ,EAAGzP,GAClD,IAAIgB,EA7EQ,SAAiBuG,GAC7B,OAAQA,GACN,IAAK,IACH,MAAO,cAET,IAAK,IACH,MAAO,SAET,IAAK,IACH,MAAO,SAET,IAAK,IACL,IAAK,IACH,MAAO,OAET,IAAK,IACH,MAAO,MAET,IAAK,IACH,MAAO,UAET,IAAK,IACL,IAAK,IACH,MAAO,QAET,IAAK,IACH,MAAO,OAET,IAAK,IACL,IAAK,IACH,MAAO,UAET,IAAK,IACH,MAAO,aAET,IAAK,IACH,MAAO,WAET,IAAK,IACH,MAAO,UAET,QACE,OAAO,MAmCH4lB,CAAQntB,GAMhB,OAJIgB,IACFyO,EAAEzO,GAAKurB,EAAQvsB,IAGVyP,GACN,IACW5E,GAwEUuiB,CAAoBb,GAAW,CAAC,KAAM,MAI5D,MAAO,CACL/rB,MAAOA,EACP4L,OAAQA,EACR2L,MAAOA,EACP4U,WAAYA,EACZJ,QAASA,EACT3R,OATWgS,EAAM,GAUjB/hB,KATS+hB,EAAM,IAsBrB,IAAIS,GAAgB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnEC,GAAa,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEpE,SAASC,GAAelxB,EAAMhB,GAC5B,OAAO,IAAIyR,GAAQ,oBAAqB,iBAAmBzR,EAAQ,oBAAsBA,EAAQ,UAAYgB,EAAO,sBAGtH,SAASmxB,GAAU1wB,EAAMC,EAAOC,GAC9B,IAAIywB,EAAK,IAAI7zB,KAAKA,KAAKwI,IAAItF,EAAMC,EAAQ,EAAGC,IAAM0wB,YAClD,OAAc,IAAPD,EAAW,EAAIA,EAGxB,SAASE,GAAe7wB,EAAMC,EAAOC,GACnC,OAAOA,GAAO4E,GAAW9E,GAAQwwB,GAAaD,IAAetwB,EAAQ,GAGvE,SAAS6wB,GAAiB9wB,EAAM8O,GAC9B,IAAIiiB,EAAQjsB,GAAW9E,GAAQwwB,GAAaD,GACxCS,EAASD,EAAM3D,UAAU,SAAUxyB,GACrC,OAAOA,EAAIkU,IAGb,MAAO,CACL7O,MAAO+wB,EAAS,EAChB9wB,IAHQ4O,EAAUiiB,EAAMC,IAW5B,SAASC,GAAgBC,GACvB,IAMIvrB,EANA3F,EAAOkxB,EAAQlxB,KACfC,EAAQixB,EAAQjxB,MAChBC,EAAMgxB,EAAQhxB,IACd4O,EAAU+hB,GAAe7wB,EAAMC,EAAOC,GACtCI,EAAUowB,GAAU1wB,EAAMC,EAAOC,GACjC2O,EAAazK,KAAKC,OAAOyK,EAAUxO,EAAU,IAAM,GAavD,OAVIuO,EAAa,EAEfA,EAAanJ,GADbC,EAAW3F,EAAO,GAET6O,EAAanJ,GAAgB1F,IACtC2F,EAAW3F,EAAO,EAClB6O,EAAa,GAEblJ,EAAW3F,EAGN9E,OAAOsL,OAAO,CACnBb,SAAUA,EACVkJ,WAAYA,EACZvO,QAASA,GACRqI,GAAWuoB,IAEhB,SAASC,GAAgBC,GACvB,IAMIpxB,EANA2F,EAAWyrB,EAASzrB,SACpBkJ,EAAauiB,EAASviB,WACtBvO,EAAU8wB,EAAS9wB,QACnB+wB,EAAgBX,GAAU/qB,EAAU,EAAG,GACvC2rB,EAAavsB,GAAWY,GACxBmJ,EAAuB,EAAbD,EAAiBvO,EAAU+wB,EAAgB,EAGrDviB,EAAU,EAEZA,GAAW/J,GADX/E,EAAO2F,EAAW,GAEC2rB,EAAVxiB,GACT9O,EAAO2F,EAAW,EAClBmJ,GAAW/J,GAAWY,IAEtB3F,EAAO2F,EAGT,IAAI4rB,EAAoBT,GAAiB9wB,EAAM8O,GAC3C7O,EAAQsxB,EAAkBtxB,MAC1BC,EAAMqxB,EAAkBrxB,IAE5B,OAAOhF,OAAOsL,OAAO,CACnBxG,KAAMA,EACNC,MAAOA,EACPC,IAAKA,GACJyI,GAAWyoB,IAEhB,SAASI,GAAmBC,GAC1B,IAAIzxB,EAAOyxB,EAASzxB,KAGhB8O,EAAU+hB,GAAe7wB,EAFjByxB,EAASxxB,MACXwxB,EAASvxB,KAEnB,OAAOhF,OAAOsL,OAAO,CACnBxG,KAAMA,EACN8O,QAASA,GACRnG,GAAW8oB,IAEhB,SAASC,GAAmBC,GAC1B,IAAI3xB,EAAO2xB,EAAY3xB,KAEnB4xB,EAAqBd,GAAiB9wB,EAD5B2xB,EAAY7iB,SAEtB7O,EAAQ2xB,EAAmB3xB,MAC3BC,EAAM0xB,EAAmB1xB,IAE7B,OAAOhF,OAAOsL,OAAO,CACnBxG,KAAMA,EACNC,MAAOA,EACPC,IAAKA,GACJyI,GAAWgpB,IAyBhB,SAASE,GAAwB7uB,GAC/B,IAAI8uB,EAAY/vB,EAAUiB,EAAIhD,MAC1B+xB,EAAa1uB,EAAeL,EAAI/C,MAAO,EAAG,IAC1C+xB,EAAW3uB,EAAeL,EAAI9C,IAAK,EAAG8E,GAAYhC,EAAIhD,KAAMgD,EAAI/C,QAEpE,OAAK6xB,EAEOC,GAEAC,GACHvB,GAAe,MAAOztB,EAAI9C,KAF1BuwB,GAAe,QAASztB,EAAI/C,OAF5BwwB,GAAe,OAAQztB,EAAIhD,MAOtC,SAASiyB,GAAmBjvB,GAC1B,IAAIxC,EAAOwC,EAAIxC,KACXC,EAASuC,EAAIvC,OACbE,EAASqC,EAAIrC,OACb4E,EAAcvC,EAAIuC,YAClB2sB,EAAY7uB,EAAe7C,EAAM,EAAG,KAAgB,KAATA,GAA0B,IAAXC,GAA2B,IAAXE,GAAgC,IAAhB4E,EAC1F4sB,EAAc9uB,EAAe5C,EAAQ,EAAG,IACxC2xB,EAAc/uB,EAAe1C,EAAQ,EAAG,IACxC0xB,EAAmBhvB,EAAekC,EAAa,EAAG,KAEtD,OAAK2sB,EAEOC,EAEAC,GAEAC,GACH5B,GAAe,cAAelrB,GAF9BkrB,GAAe,SAAU9vB,GAFzB8vB,GAAe,SAAUhwB,GAFzBgwB,GAAe,OAAQjwB,GAUlC,IAAI8xB,GAAY,mBAGhB,SAASC,GAAgBxkB,GACvB,OAAO,IAAIiC,GAAQ,mBAAoB,aAAgBjC,EAAKiD,KAAO,sBAIrE,SAASwhB,GAAuBzlB,GAK9B,OAJoB,OAAhBA,EAAGqkB,WACLrkB,EAAGqkB,SAAWH,GAAgBlkB,EAAGL,IAG5BK,EAAGqkB,SAKZ,SAASqB,GAAQC,EAAM9Z,GACrB,IAAIrM,EAAU,CACZtG,GAAIysB,EAAKzsB,GACT8H,KAAM2kB,EAAK3kB,KACXrB,EAAGgmB,EAAKhmB,EACRzQ,EAAGy2B,EAAKz2B,EACRkQ,IAAKumB,EAAKvmB,IACV8U,QAASyR,EAAKzR,SAEhB,OAAO,IAAIlM,GAAS7Z,OAAOsL,OAAO,GAAI+F,EAASqM,EAAM,CACnD+Z,IAAKpmB,KAMT,SAASqmB,GAAUC,EAAS52B,EAAG62B,GAE7B,IAAIC,EAAWF,EAAc,GAAJ52B,EAAS,IAE9B+2B,EAAKF,EAAG1qB,OAAO2qB,GAEnB,GAAI92B,IAAM+2B,EACR,MAAO,CAACD,EAAU92B,GAIpB82B,GAAuB,IAAVC,EAAK/2B,GAAU,IAE5B,IAAIg3B,EAAKH,EAAG1qB,OAAO2qB,GAEnB,OAAIC,IAAOC,EACF,CAACF,EAAUC,GAIb,CAACH,EAA6B,GAAnBzuB,KAAKuoB,IAAIqG,EAAIC,GAAW,IAAM7uB,KAAKwoB,IAAIoG,EAAIC,IAI/D,SAASC,GAAQjtB,EAAImC,GAEnB,IAAI/C,EAAI,IAAIvI,KADZmJ,GAAe,GAATmC,EAAc,KAEpB,MAAO,CACLpI,KAAMqF,EAAEI,iBACRxF,MAAOoF,EAAE8tB,cAAgB,EACzBjzB,IAAKmF,EAAE+tB,aACP5yB,KAAM6E,EAAEguB,cACR5yB,OAAQ4E,EAAEiuB,gBACV3yB,OAAQ0E,EAAEkuB,gBACVhuB,YAAaF,EAAEmuB,sBAKnB,SAASC,GAAQzwB,EAAKoF,EAAQ2F,GAC5B,OAAO6kB,GAAUxtB,GAAapC,GAAMoF,EAAQ2F,GAI9C,SAAS2lB,GAAWhB,EAAMxjB,GACxB,IAAIsV,EAEAvhB,EAAO/H,OAAO+H,KAAKiM,EAAI4Q,SAEW,IAAlC7c,EAAKlF,QAAQ,iBACfkF,EAAK7F,KAAK,gBAGZ8R,GAAOsV,EAAOtV,GAAKU,QAAQvS,MAAMmnB,EAAMvhB,GACvC,IAAI0wB,EAAOjB,EAAKz2B,EACZ+D,EAAO0yB,EAAKhmB,EAAE1M,KAAOkP,EAAI+G,MACzBhW,EAAQyyB,EAAKhmB,EAAEzM,MAAQiP,EAAI/F,OAAwB,EAAf+F,EAAIgH,SACxCxJ,EAAIxR,OAAOsL,OAAO,GAAIksB,EAAKhmB,EAAG,CAChC1M,KAAMA,EACNC,MAAOA,EACPC,IAAKkE,KAAKuoB,IAAI+F,EAAKhmB,EAAExM,IAAK8E,GAAYhF,EAAMC,IAAUiP,EAAIkH,KAAmB,EAAZlH,EAAIiH,QAEnEyd,EAAc5T,GAAS3H,WAAW,CACpChQ,MAAO6G,EAAI7G,MACXC,QAAS4G,EAAI5G,QACb+N,QAASnH,EAAImH,QACb4G,aAAc/N,EAAI+N,eACjB8E,GAAG,gBAGF8R,EAAajB,GAFHxtB,GAAasH,GAESinB,EAAMjB,EAAK3kB,MAC3C9H,EAAK4tB,EAAW,GAChB53B,EAAI43B,EAAW,GAQnB,OANoB,IAAhBD,IACF3tB,GAAM2tB,EAEN33B,EAAIy2B,EAAK3kB,KAAK3F,OAAOnC,IAGhB,CACLA,GAAIA,EACJhK,EAAGA,GAMP,SAAS63B,GAAoBptB,EAAQqtB,EAAY7nB,EAAMlF,EAAQqa,GAC7D,IAAIqG,EAAUxb,EAAKwb,QACf3Z,EAAO7B,EAAK6B,KAEhB,GAAIrH,GAAyC,IAA/BxL,OAAO+H,KAAKyD,GAAQ7L,OAAc,CAC9C,IAAIm5B,EAAqBD,GAAchmB,EACnC2kB,EAAO3d,GAASsD,WAAWnd,OAAOsL,OAAOE,EAAQwF,EAAM,CACzD6B,KAAMimB,EAENtM,aAAS7pB,KAEX,OAAO6pB,EAAUgL,EAAOA,EAAKhL,QAAQ3Z,GAErC,OAAOgH,GAASkM,QAAQ,IAAIjR,GAAQ,aAAc,cAAiBqR,EAAO,yBAA2Bra,IAMzG,SAASitB,GAAalnB,EAAI/F,GACxB,OAAO+F,EAAGe,QAAU9B,GAAUnQ,OAAO4X,GAAO5X,OAAO,SAAU,CAC3DgS,QAAQ,EACRP,aAAa,IACZG,yBAAyBV,EAAI/F,GAAU,KAK5C,SAASktB,GAAiBnnB,EAAIxC,GAC5B,IAAI4pB,EAAuB5pB,EAAK6pB,gBAC5BA,OAA2C,IAAzBD,GAA0CA,EAC5DE,EAAwB9pB,EAAK+pB,qBAC7BA,OAAiD,IAA1BD,GAA2CA,EAClEE,EAAgBhqB,EAAKgqB,cACrBC,EAAmBjqB,EAAKkqB,YACxBA,OAAmC,IAArBD,GAAsCA,EACpDE,EAAiBnqB,EAAKoqB,UACtBA,OAA+B,IAAnBD,GAAoCA,EAChDpoB,EAAM,QAoBV,OAlBK8nB,GAAiC,IAAdrnB,EAAGpM,QAAmC,IAAnBoM,EAAGxH,cAC5C+G,GAAO,MAEFgoB,GAA2C,IAAnBvnB,EAAGxH,cAC9B+G,GAAO,UAINmoB,GAAeF,IAAkBI,IACpCroB,GAAO,KAGLmoB,EACFnoB,GAAO,IACEioB,IACTjoB,GAAO,MAGF2nB,GAAalnB,EAAIT,GAI1B,IAAIsoB,GAAoB,CACtB30B,MAAO,EACPC,IAAK,EACLM,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACR4E,YAAa,GAEXsvB,GAAwB,CAC1BhmB,WAAY,EACZvO,QAAS,EACTE,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACR4E,YAAa,GAEXuvB,GAA2B,CAC7BhmB,QAAS,EACTtO,KAAM,EACNC,OAAQ,EACRE,OAAQ,EACR4E,YAAa,GAGXwvB,GAAiB,CAAC,OAAQ,QAAS,MAAO,OAAQ,SAAU,SAAU,eACtEC,GAAmB,CAAC,WAAY,aAAc,UAAW,OAAQ,SAAU,SAAU,eACrFC,GAAsB,CAAC,OAAQ,UAAW,OAAQ,SAAU,SAAU,eAE1E,SAAS9T,GAAc5hB,GACrB,IAAIyI,EAAa,CACfhI,KAAM,OACNiW,MAAO,OACPhW,MAAO,QACPkJ,OAAQ,QACRjJ,IAAK,MACLkW,KAAM,MACN5V,KAAM,OACN6H,MAAO,OACP5H,OAAQ,SACR6H,QAAS,SACTyG,QAAS,UACTmH,SAAU,UACVvV,OAAQ,SACR0V,QAAS,SACT9Q,YAAa,cACb0X,aAAc,cACd3c,QAAS,UACTiJ,SAAU,UACV2rB,WAAY,aACZC,YAAa,aACbC,YAAa,aACbC,SAAU,WACVC,UAAW,WACXxmB,QAAS,WACTvP,EAAKuH,eACP,IAAKkB,EAAY,MAAM,IAAI3I,EAAiBE,GAC5C,OAAOyI,EAMT,SAASutB,GAAQvyB,EAAK+K,GAEpB,IAAK,IAAI3D,EAAK,EAAG+X,EAAgB4S,GAAgB3qB,EAAK+X,EAActnB,OAAQuP,IAAM,CAChF,IAAInC,EAAIka,EAAc/X,GAElBvI,EAAYmB,EAAIiF,MAClBjF,EAAIiF,GAAK2sB,GAAkB3sB,IAI/B,IAAIgZ,EAAU4Q,GAAwB7uB,IAAQivB,GAAmBjvB,GAEjE,GAAIie,EACF,OAAOlM,GAASkM,QAAQA,GAG1B,IAAIuU,EAAQjiB,GAASL,MAEjBuiB,EAAWhC,GAAQzwB,EADJ+K,EAAK3F,OAAOotB,GACWznB,GACtC9H,EAAKwvB,EAAS,GACdx5B,EAAIw5B,EAAS,GAEjB,OAAO,IAAI1gB,GAAS,CAClB9O,GAAIA,EACJ8H,KAAMA,EACN9R,EAAGA,IAIP,SAASy5B,GAAa/R,EAAOC,EAAK1X,GAEnB,SAATlF,EAAyB0F,EAAGnN,GAG9B,OAFAmN,EAAIpI,EAAQoI,EAAG7H,GAASqH,EAAKypB,UAAY,EAAI,GAAG,GAChC/R,EAAIzX,IAAIwM,MAAMzM,GAAMuN,aAAavN,GAChClF,OAAO0F,EAAGnN,GAEhB,SAATwqB,EAAyBxqB,GAC3B,OAAI2M,EAAKypB,UACF/R,EAAIiB,QAAQlB,EAAOpkB,GAEV,EADLqkB,EAAIe,QAAQplB,GAAMqlB,KAAKjB,EAAMgB,QAAQplB,GAAOA,GAAMpB,IAAIoB,GAGxDqkB,EAAIgB,KAAKjB,EAAOpkB,GAAMpB,IAAIoB,GAZrC,IAAIsF,IAAQhD,EAAYqK,EAAKrH,QAAgBqH,EAAKrH,MAgBlD,GAAIqH,EAAK3M,KACP,OAAOyH,EAAO+iB,EAAO7d,EAAK3M,MAAO2M,EAAK3M,MAGnC,IAAIyK,EAAYkC,EAAK8J,MAAO/L,EAAWC,MAAMC,QAAQH,GAAYuY,EAAM,EAA5E,IAA+EvY,EAAYC,EAAWD,EAAYA,EAAUK,OAAOC,cAAe,CAChJ,IAAImF,EAEJ,GAAIxF,EAAU,CACZ,GAAIsY,GAAOvY,EAAUnP,OAAQ,MAC7B4U,EAAQzF,EAAUuY,SACb,CAEL,IADAA,EAAMvY,EAAUnH,QACR2H,KAAM,MACdiF,EAAQ8S,EAAIhkB,MAGd,IAAIgB,EAAOkQ,EACPoG,EAAQkU,EAAOxqB,GAEnB,GAAuB,GAAnB6E,KAAKmE,IAAIsN,GACX,OAAO7O,EAAO6O,EAAOtW,GAIzB,OAAOyH,EAAO,EAAGkF,EAAK8J,MAAM9J,EAAK8J,MAAMnb,OAAS,IAwBlD,IAAIka,GAEJ,WAIE,SAASA,EAASgM,GAChB,IAAIhT,EAAOgT,EAAOhT,MAAQwF,GAASR,YAC/BkO,EAAUF,EAAOE,UAAY1Z,OAAOC,MAAMuZ,EAAO9a,IAAM,IAAI+J,GAAQ,iBAAmB,QAAWjC,EAAKD,QAAkC,KAAxBykB,GAAgBxkB,IAKpIzP,KAAK2H,GAAKpE,EAAYkf,EAAO9a,IAAMsN,GAASL,MAAQ6N,EAAO9a,GAC3D,IAAIyG,EAAI,KACJzQ,EAAI,KAER,IAAKglB,EAGH,GAFgBF,EAAO4R,KAAO5R,EAAO4R,IAAI1sB,KAAO3H,KAAK2H,IAAM8a,EAAO4R,IAAI5kB,KAAKoC,OAAOpC,GAEnE,CACb,IAAI6Y,EAAQ,CAAC7F,EAAO4R,IAAIjmB,EAAGqU,EAAO4R,IAAI12B,GACtCyQ,EAAIka,EAAM,GACV3qB,EAAI2qB,EAAM,QAEVla,EAAIwmB,GAAQ50B,KAAK2H,GAAI8H,EAAK3F,OAAO9J,KAAK2H,KAEtCyG,GADAuU,EAAU1Z,OAAOC,MAAMkF,EAAE1M,MAAQ,IAAIgQ,GAAQ,iBAAmB,MAClD,KAAOtD,EACrBzQ,EAAIglB,EAAU,KAAOlT,EAAK3F,OAAO9J,KAAK2H,IAQ1C3H,KAAKs3B,MAAQ7nB,EAKbzP,KAAK6N,IAAM4U,EAAO5U,KAAOsH,GAAO5X,SAKhCyC,KAAK2iB,QAAUA,EAKf3iB,KAAK8yB,SAAW,KAKhB9yB,KAAKoO,EAAIA,EAKTpO,KAAKrC,EAAIA,EAKTqC,KAAKu3B,iBAAkB,EAwBzB9gB,EAASqH,MAAQ,SAAepc,EAAMC,EAAOC,EAAKM,EAAMC,EAAQE,EAAQ4E,GACtE,OAAI1D,EAAY7B,GACP,IAAI+U,EAAS,CAClB9O,GAAIsN,GAASL,QAGRqiB,GAAQ,CACbv1B,KAAMA,EACNC,MAAOA,EACPC,IAAKA,EACLM,KAAMA,EACNC,OAAQA,EACRE,OAAQA,EACR4E,YAAaA,GACZgO,GAASR,cAwBhBgC,EAASkE,IAAM,SAAajZ,EAAMC,EAAOC,EAAKM,EAAMC,EAAQE,EAAQ4E,GAClE,OAAI1D,EAAY7B,GACP,IAAI+U,EAAS,CAClB9O,GAAIsN,GAASL,MACbnF,KAAMwE,GAAgBE,cAGjB8iB,GAAQ,CACbv1B,KAAMA,EACNC,MAAOA,EACPC,IAAKA,EACLM,KAAMA,EACNC,OAAQA,EACRE,OAAQA,EACR4E,YAAaA,GACZgN,GAAgBE,cAYvBsC,EAAS+gB,WAAa,SAAoBzvB,EAAM8Q,QAC9B,IAAZA,IACFA,EAAU,IAGZ,IAAIlR,EAzxLR,SAAgBhK,GACd,MAA6C,kBAAtCf,OAAOO,UAAUsB,SAASC,KAAKf,GAwxL3B85B,CAAO1vB,GAAQA,EAAKgM,UAAYQ,IAEzC,GAAItL,OAAOC,MAAMvB,GACf,OAAO8O,EAASkM,QAAQ,iBAG1B,IAAI+U,EAAYljB,GAAcqE,EAAQpJ,KAAMwF,GAASR,aAErD,OAAKijB,EAAUloB,QAIR,IAAIiH,EAAS,CAClB9O,GAAIA,EACJ8H,KAAMioB,EACN7pB,IAAKsH,GAAO4E,WAAWlB,KANhBpC,EAASkM,QAAQsR,GAAgByD,KAqB5CjhB,EAASC,WAAa,SAAoBiI,EAAc9F,GAKtD,QAJgB,IAAZA,IACFA,EAAU,IAGPrV,EAASmb,GAEP,OAAIA,GAxhBA,QAAA,OAwhB4BA,EAE9BlI,EAASkM,QAAQ,0BAEjB,IAAIlM,EAAS,CAClB9O,GAAIgX,EACJlP,KAAM+E,GAAcqE,EAAQpJ,KAAMwF,GAASR,aAC3C5G,IAAKsH,GAAO4E,WAAWlB,KARzB,MAAM,IAAI3X,EAAqB,0CAwBnCuV,EAASkhB,YAAc,SAAqB5f,EAASc,GAKnD,QAJgB,IAAZA,IACFA,EAAU,IAGPrV,EAASuU,GAGZ,OAAO,IAAItB,EAAS,CAClB9O,GAAc,IAAVoQ,EACJtI,KAAM+E,GAAcqE,EAAQpJ,KAAMwF,GAASR,aAC3C5G,IAAKsH,GAAO4E,WAAWlB,KALzB,MAAM,IAAI3X,EAAqB,2CAsCnCuV,EAASsD,WAAa,SAAoBrV,GACxC,IAAIgzB,EAAYljB,GAAc9P,EAAI+K,KAAMwF,GAASR,aAEjD,IAAKijB,EAAUloB,QACb,OAAOiH,EAASkM,QAAQsR,GAAgByD,IAG1C,IAAIR,EAAQjiB,GAASL,MACjBgjB,EAAeF,EAAU5tB,OAAOotB,GAChCxtB,EAAaH,GAAgB7E,EAAKme,GAAe,CAAC,OAAQ,SAAU,iBAAkB,oBACtFgV,GAAmBt0B,EAAYmG,EAAW8G,SAC1CsnB,GAAsBv0B,EAAYmG,EAAWhI,MAC7Cq2B,GAAoBx0B,EAAYmG,EAAW/H,SAAW4B,EAAYmG,EAAW9H,KAC7Eo2B,EAAiBF,GAAsBC,EACvCE,EAAkBvuB,EAAWrC,UAAYqC,EAAW6G,WACpD1C,EAAMsH,GAAO4E,WAAWrV,GAM5B,IAAKszB,GAAkBH,IAAoBI,EACzC,MAAM,IAAIp3B,EAA8B,uEAG1C,GAAIk3B,GAAoBF,EACtB,MAAM,IAAIh3B,EAA8B,0CAG1C,IAEI6W,EACAwgB,EAHAC,EAAcF,GAAmBvuB,EAAW1H,UAAYg2B,EAIxDI,EAASxD,GAAQsC,EAAOU,GAExBO,GACFzgB,EAAQgf,GACRwB,EAAgB3B,GAChB6B,EAASzF,GAAgByF,IAChBP,GACTngB,EAAQif,GACRuB,EAAgB1B,GAChB4B,EAASlF,GAAmBkF,KAE5B1gB,EAAQ+e,GACRyB,EAAgB5B,IAIlB,IAAI+B,GAAa,EAERC,EAAa5gB,EAAO6gB,EAAY3sB,MAAMC,QAAQysB,GAAa9T,EAAM,EAA1E,IAA6E8T,EAAaC,EAAYD,EAAaA,EAAWvsB,OAAOC,cAAe,CAClJ,IAAIke,EAEJ,GAAIqO,EAAW,CACb,GAAI/T,GAAO8T,EAAW/7B,OAAQ,MAC9B2tB,EAAQoO,EAAW9T,SACd,CAEL,IADAA,EAAM8T,EAAW/zB,QACT2H,KAAM,MACdge,EAAQ1F,EAAIvkB,MAGd,IAAI0J,EAAIugB,EAGH3mB,EAFGmG,EAAWC,IAKjBD,EAAWC,GADF0uB,EACOH,EAAcvuB,GAEdyuB,EAAOzuB,GAJvB0uB,GAAa,EASjB,IACI1V,GADqBwV,EAjuB7B,SAA4BzzB,GAC1B,IAAI8uB,EAAY/vB,EAAUiB,EAAI2C,UAC1BmxB,EAAYzzB,EAAeL,EAAI6L,WAAY,EAAGnJ,GAAgB1C,EAAI2C,WAClEoxB,EAAe1zB,EAAeL,EAAI1C,QAAS,EAAG,GAElD,OAAKwxB,EAEOgF,GAEAC,GACHtG,GAAe,UAAWztB,EAAI1C,SAF9BmwB,GAAe,OAAQztB,EAAIue,MAF3BkP,GAAe,WAAYztB,EAAI2C,UA2tBCqxB,CAAmBhvB,GAAcmuB,EAptB5E,SAA+BnzB,GAC7B,IAAI8uB,EAAY/vB,EAAUiB,EAAIhD,MAC1Bi3B,EAAe5zB,EAAeL,EAAI8L,QAAS,EAAG/J,GAAW/B,EAAIhD,OAEjE,OAAK8xB,GAEOmF,GACHxG,GAAe,UAAWztB,EAAI8L,SAF9B2hB,GAAe,OAAQztB,EAAIhD,MA+sBwDk3B,CAAsBlvB,GAAc6pB,GAAwB7pB,KAClHiqB,GAAmBjqB,GAEvD,GAAIiZ,EACF,OAAOlM,EAASkM,QAAQA,GAI1B,IACIkW,EAAY1D,GADAgD,EAActF,GAAgBnpB,GAAcmuB,EAAkBzE,GAAmB1pB,GAAcA,EAC5EkuB,EAAcF,GAG7CtD,EAAO,IAAI3d,EAAS,CACtB9O,GAHYkxB,EAAU,GAItBppB,KAAMioB,EACN/5B,EAJgBk7B,EAAU,GAK1BhrB,IAAKA,IAIP,OAAInE,EAAW1H,SAAWg2B,GAAkBtzB,EAAI1C,UAAYoyB,EAAKpyB,QACxDyU,EAASkM,QAAQ,qBAAsB,uCAAyCjZ,EAAW1H,QAAU,kBAAoBoyB,EAAK7Q,SAGhI6Q,GAoBT3d,EAASqM,QAAU,SAAiBC,EAAMnV,QAC3B,IAATA,IACFA,EAAO,IAGT,IAAIkrB,EA13GR,SAAsBv3B,GACpB,OAAO8a,GAAM9a,EAAG,CAAC2e,GAA8BI,IAA6B,CAACH,GAA+BI,IAA8B,CAACH,GAAkCI,IAA+B,CAACH,GAAsBI,KAy3G7MsY,CAAahW,GAIjC,OAAOyS,GAHIsD,EAAc,GACRA,EAAc,GAEclrB,EAAM,WAAYmV,IAkBjEtM,EAASuiB,YAAc,SAAqBjW,EAAMnV,QACnC,IAATA,IACFA,EAAO,IAGT,IAAIqrB,EAl5GR,SAA0B13B,GACxB,OAAO8a,GAlDT,SAA2B9a,GAEzB,OAAOA,EAAEqH,QAAQ,oBAAqB,KAAKA,QAAQ,WAAY,KAAKswB,OAgDvDC,CAAkB53B,GAAI,CAACke,GAASC,KAi5GnB0Z,CAAiBrW,GAIzC,OAAOyS,GAHIyD,EAAkB,GACZA,EAAkB,GAEUrrB,EAAM,WAAYmV,IAmBjEtM,EAAS4iB,SAAW,SAAkBtW,EAAMnV,QAC7B,IAATA,IACFA,EAAO,IAGT,IAAI0rB,EA36GR,SAAuB/3B,GACrB,OAAO8a,GAAM9a,EAAG,CAACse,GAASG,IAAsB,CAACF,GAAQE,IAAsB,CAACD,GAAOE,KA06GhEsZ,CAAcxW,GAInC,OAAOyS,GAHI8D,EAAe,GACTA,EAAe,GAEa1rB,EAAM,OAAQA,IAkB7D6I,EAAS+iB,WAAa,SAAoBzW,EAAM/U,EAAKJ,GAKnD,QAJa,IAATA,IACFA,EAAO,IAGLrK,EAAYwf,IAASxf,EAAYyK,GACnC,MAAM,IAAI9M,EAAqB,oDAGjC,IAAIu4B,EAAQ7rB,EACR8rB,EAAeD,EAAM5xB,OACrBA,OAA0B,IAAjB6xB,EAA0B,KAAOA,EAC1CC,EAAwBF,EAAMpkB,gBAC9BA,OAA4C,IAA1BskB,EAAmC,KAAOA,EAM5DC,EAx+BR,SAAyB/xB,EAAQzC,EAAOsD,GACtC,IAAImxB,EAAqBjK,GAAkB/nB,EAAQzC,EAAOsD,GAK1D,MAAO,CAJMmxB,EAAmBra,OACrBqa,EAAmBpqB,KACVoqB,EAAmB/Q,eAo+BdgR,CALL3kB,GAAOwE,SAAS,CAChC9R,OAAQA,EACRwN,gBAAiBA,EACjBuE,aAAa,IAEqCmJ,EAAM/U,GACtDuU,EAAOqX,EAAiB,GACxBnE,EAAamE,EAAiB,GAC9BjX,EAAUiX,EAAiB,GAE/B,OAAIjX,EACKlM,EAASkM,QAAQA,GAEjB6S,GAAoBjT,EAAMkT,EAAY7nB,EAAM,UAAYI,EAAK+U,IAQxEtM,EAASsjB,WAAa,SAAoBhX,EAAM/U,EAAKJ,GAKnD,YAJa,IAATA,IACFA,EAAO,IAGF6I,EAAS+iB,WAAWzW,EAAM/U,EAAKJ,IAwBxC6I,EAASujB,QAAU,SAAiBjX,EAAMnV,QAC3B,IAATA,IACFA,EAAO,IAGT,IAAIqsB,EA5/GR,SAAkB14B,GAChB,OAAO8a,GAAM9a,EAAG,CAACmf,GAA8BE,IAAqC,CAACD,GAAsBE,KA2/GzFqZ,CAASnX,GAIzB,OAAOyS,GAHIyE,EAAU,GACJA,EAAU,GAEkBrsB,EAAM,MAAOmV,IAU5DtM,EAASkM,QAAU,SAAiBpiB,EAAQoR,GAK1C,QAJoB,IAAhBA,IACFA,EAAc,OAGXpR,EACH,MAAM,IAAIW,EAAqB,oDAGjC,IAAIyhB,EAAUpiB,aAAkBmR,GAAUnR,EAAS,IAAImR,GAAQnR,EAAQoR,GAEvE,GAAIsD,GAASD,eACX,MAAM,IAAI3U,EAAqBsiB,GAE/B,OAAO,IAAIlM,EAAS,CAClBkM,QAASA,KAWflM,EAAS0jB,WAAa,SAAoBx8B,GACxC,OAAOA,GAAKA,EAAE45B,kBAAmB,GAYnC,IAAIhpB,EAASkI,EAAStZ,UAi8CtB,OA/7CAoR,EAAO1O,IAAM,SAAaoB,GACxB,OAAOjB,KAAKiB,IAgBdsN,EAAO6rB,mBAAqB,SAA4BxsB,QACzC,IAATA,IACFA,EAAO,IAGT,IAAIysB,EAAwB3sB,GAAUnQ,OAAOyC,KAAK6N,IAAIwM,MAAMzM,GAAOA,GAAMkB,gBAAgB9O,MAKzF,MAAO,CACL6H,OALWwyB,EAAsBxyB,OAMjCwN,gBALoBglB,EAAsBhlB,gBAM1CjF,eALaiqB,EAAsBrhB,WAmBvCzK,EAAO0c,MAAQ,SAAenhB,EAAQ8D,GASpC,YARe,IAAX9D,IACFA,EAAS,QAGE,IAAT8D,IACFA,EAAO,IAGF5N,KAAKopB,QAAQnV,GAAgBjV,SAAS8K,GAAS8D,IAUxDW,EAAO+rB,QAAU,WACf,OAAOt6B,KAAKopB,QAAQnU,GAASR,cAa/BlG,EAAO6a,QAAU,SAAiB3Z,EAAMuK,GACtC,IAAI+V,OAAkB,IAAV/V,EAAmB,GAAKA,EAChCugB,EAAsBxK,EAAM7E,cAC5BA,OAAwC,IAAxBqP,GAAyCA,EACzDC,EAAwBzK,EAAM0K,iBAC9BA,OAA6C,IAA1BD,GAA2CA,EAIlE,IAFA/qB,EAAO+E,GAAc/E,EAAMwF,GAASR,cAE3B5C,OAAO7R,KAAKyP,MACnB,OAAOzP,KACF,GAAKyP,EAAKD,QAEV,CACL,IAAIkrB,EAAQ16B,KAAK2H,GAEjB,GAAIujB,GAAiBuP,EAAkB,CACrC,IAAIE,EAAc36B,KAAKrC,EAAI8R,EAAK3F,OAAO9J,KAAK2H,IAK5C+yB,EAFgBvF,GAFJn1B,KAAKqjB,WAEcsX,EAAalrB,GAE1B,GAGpB,OAAO0kB,GAAQn0B,KAAM,CACnB2H,GAAI+yB,EACJjrB,KAAMA,IAfR,OAAOgH,EAASkM,QAAQsR,GAAgBxkB,KA2B5ClB,EAAO4V,YAAc,SAAqBwE,GACxC,IAAI6I,OAAmB,IAAX7I,EAAoB,GAAKA,EACjC9gB,EAAS2pB,EAAM3pB,OACfwN,EAAkBmc,EAAMnc,gBACxBjF,EAAiBohB,EAAMphB,eAEvBvC,EAAM7N,KAAK6N,IAAIwM,MAAM,CACvBxS,OAAQA,EACRwN,gBAAiBA,EACjBjF,eAAgBA,IAElB,OAAO+jB,GAAQn0B,KAAM,CACnB6N,IAAKA,KAWTU,EAAOqsB,UAAY,SAAmB/yB,GACpC,OAAO7H,KAAKmkB,YAAY,CACtBtc,OAAQA,KAeZ0G,EAAOzO,IAAM,SAAa0hB,GACxB,IAAKxhB,KAAKwP,QAAS,OAAOxP,KAC1B,IAEI66B,EAFAnxB,EAAaH,GAAgBiY,EAAQqB,GAAe,KAChCtf,EAAYmG,EAAWrC,YAAc9D,EAAYmG,EAAW6G,cAAgBhN,EAAYmG,EAAW1H,SAIzH64B,EAAQhI,GAAgBj2B,OAAOsL,OAAOyqB,GAAgB3yB,KAAKoO,GAAI1E,IACrDnG,EAAYmG,EAAW8G,UAGjCqqB,EAAQj+B,OAAOsL,OAAOlI,KAAKqjB,WAAY3Z,GAGnCnG,EAAYmG,EAAW9H,OACzBi5B,EAAMj5B,IAAMkE,KAAKuoB,IAAI3nB,GAAYm0B,EAAMn5B,KAAMm5B,EAAMl5B,OAAQk5B,EAAMj5B,OANnEi5B,EAAQzH,GAAmBx2B,OAAOsL,OAAOgrB,GAAmBlzB,KAAKoO,GAAI1E,IAUvE,IAAIoxB,EAAY3F,GAAQ0F,EAAO76B,KAAKrC,EAAGqC,KAAKyP,MAI5C,OAAO0kB,GAAQn0B,KAAM,CACnB2H,GAJOmzB,EAAU,GAKjBn9B,EAJMm9B,EAAU,MAsBpBvsB,EAAOmV,KAAO,SAAcC,GAC1B,OAAK3jB,KAAKwP,QAEH2kB,GAAQn0B,KAAMo1B,GAAWp1B,KADtB4jB,GAAiBD,KADD3jB,MAY5BuO,EAAOuV,MAAQ,SAAeH,GAC5B,OAAK3jB,KAAKwP,QAEH2kB,GAAQn0B,KAAMo1B,GAAWp1B,KADtB4jB,GAAiBD,GAAUI,WADX/jB,MAe5BuO,EAAO8X,QAAU,SAAiBplB,GAChC,IAAKjB,KAAKwP,QAAS,OAAOxP,KAC1B,IAAIrC,EAAI,GACJo9B,EAAiBrZ,GAASmB,cAAc5hB,GAE5C,OAAQ85B,GACN,IAAK,QACHp9B,EAAEgE,MAAQ,EAGZ,IAAK,WACL,IAAK,SACHhE,EAAEiE,IAAM,EAGV,IAAK,QACL,IAAK,OACHjE,EAAEuE,KAAO,EAGX,IAAK,QACHvE,EAAEwE,OAAS,EAGb,IAAK,UACHxE,EAAE0E,OAAS,EAGb,IAAK,UACH1E,EAAEsJ,YAAc,EAYpB,GAJuB,UAAnB8zB,IACFp9B,EAAEqE,QAAU,GAGS,aAAnB+4B,EAA+B,CACjC,IAAIrJ,EAAI5rB,KAAKsc,KAAKpiB,KAAK2B,MAAQ,GAC/BhE,EAAEgE,MAAkB,GAAT+vB,EAAI,GAAS,EAG1B,OAAO1xB,KAAKF,IAAInC,IAalB4Q,EAAOysB,MAAQ,SAAe/5B,GAC5B,IAAIg6B,EAEJ,OAAOj7B,KAAKwP,QAAUxP,KAAK0jB,OAAMuX,EAAa,IAAeh6B,GAAQ,EAAGg6B,IAAa5U,QAAQplB,GAAM6iB,MAAM,GAAK9jB,MAkBhHuO,EAAO4U,SAAW,SAAkBnV,EAAKJ,GAKvC,YAJa,IAATA,IACFA,EAAO,IAGF5N,KAAKwP,QAAU9B,GAAUnQ,OAAOyC,KAAK6N,IAAI2M,cAAc5M,IAAOuB,yBAAyBnP,KAAMgO,GAAOgmB,IAsB7GzlB,EAAO2sB,eAAiB,SAAwBttB,GAK9C,YAJa,IAATA,IACFA,EAAOnM,GAGFzB,KAAKwP,QAAU9B,GAAUnQ,OAAOyC,KAAK6N,IAAIwM,MAAMzM,GAAOA,GAAMgB,eAAe5O,MAAQg0B,IAiB5FzlB,EAAO4sB,cAAgB,SAAuBvtB,GAK5C,YAJa,IAATA,IACFA,EAAO,IAGF5N,KAAKwP,QAAU9B,GAAUnQ,OAAOyC,KAAK6N,IAAIwM,MAAMzM,GAAOA,GAAMiB,oBAAoB7O,MAAQ,IAejGuO,EAAOgV,MAAQ,SAAe3V,GAK5B,YAJa,IAATA,IACFA,EAAO,IAGJ5N,KAAKwP,QAIHxP,KAAKwoB,YAAc,IAAMxoB,KAAKyoB,UAAU7a,GAHtC,MAYXW,EAAOia,UAAY,WACjB,IAAI9f,EAAS,aAMb,OAJgB,KAAZ1I,KAAK0B,OACPgH,EAAS,IAAMA,GAGVitB,GAAa31B,KAAM0I,IAS5B6F,EAAO6sB,cAAgB,WACrB,OAAOzF,GAAa31B,KAAM,iBAc5BuO,EAAOka,UAAY,SAAmBoB,GACpC,IAAIwR,OAAmB,IAAXxR,EAAoB,GAAKA,EACjCyR,EAAwBD,EAAMrF,qBAC9BA,OAAiD,IAA1BsF,GAA2CA,EAClEC,EAAwBF,EAAMvF,gBAC9BA,OAA4C,IAA1ByF,GAA2CA,EAC7DC,EAAsBH,EAAMpF,cAGhC,OAAOL,GAAiB51B,KAAM,CAC5B81B,gBAAiBA,EACjBE,qBAAsBA,EACtBC,mBAL0C,IAAxBuF,GAAwCA,KAgB9DjtB,EAAOktB,UAAY,WACjB,OAAO9F,GAAa31B,KAAM,kCAY5BuO,EAAOmtB,OAAS,WACd,OAAO/F,GAAa31B,KAAKirB,QAAS,oCASpC1c,EAAOotB,UAAY,WACjB,OAAOhG,GAAa31B,KAAM,eAe5BuO,EAAOqtB,UAAY,SAAmB3R,GACpC,IAAI4R,OAAmB,IAAX5R,EAAoB,GAAKA,EACjC6R,EAAsBD,EAAM5F,cAC5BA,OAAwC,IAAxB6F,GAAwCA,EACxDC,EAAoBF,EAAM1F,YAG9B,OAAOP,GAAiB51B,KAAM,CAC5Bi2B,cAAeA,EACfE,iBAJsC,IAAtB4F,GAAuCA,EAKvD1F,WAAW,KAgBf9nB,EAAOytB,MAAQ,SAAepuB,GAK5B,YAJa,IAATA,IACFA,EAAO,IAGJ5N,KAAKwP,QAIHxP,KAAK27B,YAAc,IAAM37B,KAAK47B,UAAUhuB,GAHtC,MAWXW,EAAO9P,SAAW,WAChB,OAAOuB,KAAKwP,QAAUxP,KAAKujB,QAAUyQ,IAQvCzlB,EAAOwF,QAAU,WACf,OAAO/T,KAAKi8B,YAQd1tB,EAAO0tB,SAAW,WAChB,OAAOj8B,KAAKwP,QAAUxP,KAAK2H,GAAK4M,KAQlChG,EAAO2tB,UAAY,WACjB,OAAOl8B,KAAKwP,QAAUxP,KAAK2H,GAAK,IAAO4M,KAQzChG,EAAOiV,OAAS,WACd,OAAOxjB,KAAKujB,SAQdhV,EAAO4tB,OAAS,WACd,OAAOn8B,KAAK4W,YAWdrI,EAAO8U,SAAW,SAAkBzV,GAKlC,QAJa,IAATA,IACFA,EAAO,KAGJ5N,KAAKwP,QAAS,MAAO,GAC1B,IAAIrF,EAAOvN,OAAOsL,OAAO,GAAIlI,KAAKoO,GAQlC,OANIR,EAAK0V,gBACPnZ,EAAKiG,eAAiBpQ,KAAKoQ,eAC3BjG,EAAKkL,gBAAkBrV,KAAK6N,IAAIwH,gBAChClL,EAAKtC,OAAS7H,KAAK6N,IAAIhG,QAGlBsC,GAQToE,EAAOqI,SAAW,WAChB,OAAO,IAAIpY,KAAKwB,KAAKwP,QAAUxP,KAAK2H,GAAK4M,MAoB3ChG,EAAO+X,KAAO,SAAc8V,EAAen7B,EAAM2M,GAS/C,QARa,IAAT3M,IACFA,EAAO,qBAGI,IAAT2M,IACFA,EAAO,KAGJ5N,KAAKwP,UAAY4sB,EAAc5sB,QAClC,OAAOkS,GAASiB,QAAQ3iB,KAAK2iB,SAAWyZ,EAAczZ,QAAS,0CAGjE,IAAI0Z,EAAUz/B,OAAOsL,OAAO,CAC1BL,OAAQ7H,KAAK6H,OACbwN,gBAAiBrV,KAAKqV,iBACrBzH,GAEC8J,EA1zNR,SAAoB1S,GAClB,OAAO4G,MAAMC,QAAQ7G,GAASA,EAAQ,CAACA,GAyzNzBs3B,CAAWr7B,GAAMsQ,IAAImQ,GAASmB,eACtC0Z,EAAeH,EAAcroB,UAAY/T,KAAK+T,UAG9CyoB,EAASrR,GAFCoR,EAAev8B,KAAOo8B,EACxBG,EAAeH,EAAgBp8B,KACR0X,EAAO2kB,GAE1C,OAAOE,EAAeC,EAAOzY,SAAWyY,GAY1CjuB,EAAOkuB,QAAU,SAAiBx7B,EAAM2M,GAStC,YARa,IAAT3M,IACFA,EAAO,qBAGI,IAAT2M,IACFA,EAAO,IAGF5N,KAAKsmB,KAAK7P,EAASqH,QAAS7c,EAAM2M,IAS3CW,EAAOmuB,MAAQ,SAAeN,GAC5B,OAAOp8B,KAAKwP,QAAU4V,GAASI,cAAcxlB,KAAMo8B,GAAiBp8B,MAWtEuO,EAAOgY,QAAU,SAAiB6V,EAAen7B,GAC/C,IAAKjB,KAAKwP,QAAS,OAAO,EAE1B,GAAa,gBAATvO,EACF,OAAOjB,KAAK+T,YAAcqoB,EAAcroB,UAExC,IAAI4oB,EAAUP,EAAcroB,UAC5B,OAAO/T,KAAKqmB,QAAQplB,IAAS07B,GAAWA,GAAW38B,KAAKg7B,MAAM/5B,IAYlEsN,EAAOsD,OAAS,SAAgBwJ,GAC9B,OAAOrb,KAAKwP,SAAW6L,EAAM7L,SAAWxP,KAAK+T,YAAcsH,EAAMtH,WAAa/T,KAAKyP,KAAKoC,OAAOwJ,EAAM5L,OAASzP,KAAK6N,IAAIgE,OAAOwJ,EAAMxN,MAsBtIU,EAAOquB,WAAa,SAAoB/jB,GAKtC,QAJgB,IAAZA,IACFA,EAAU,KAGP7Y,KAAKwP,QAAS,OAAO,KAC1B,IAAIrF,EAAO0O,EAAQ1O,MAAQsM,EAASsD,WAAW,CAC7CtK,KAAMzP,KAAKyP,OAETotB,EAAUhkB,EAAQgkB,QAAU78B,KAAOmK,GAAQ0O,EAAQgkB,QAAUhkB,EAAQgkB,QAAU,EACnF,OAAOzF,GAAajtB,EAAMnK,KAAK0jB,KAAKmZ,GAAUjgC,OAAOsL,OAAO2Q,EAAS,CACnErB,QAAS,SACTE,MAAO,CAAC,QAAS,SAAU,OAAQ,QAAS,UAAW,eAkB3DnJ,EAAOuuB,mBAAqB,SAA4BjkB,GAKtD,YAJgB,IAAZA,IACFA,EAAU,IAGP7Y,KAAKwP,QACH4nB,GAAave,EAAQ1O,MAAQsM,EAASsD,WAAW,CACtDtK,KAAMzP,KAAKyP,OACTzP,KAAMpD,OAAOsL,OAAO2Q,EAAS,CAC/BrB,QAAS,OACTE,MAAO,CAAC,QAAS,SAAU,QAC3B2f,WAAW,KANa,MAgB5B5gB,EAAS4X,IAAM,WACb,IAAK,IAAI7S,EAAOrc,UAAU5C,OAAQuqB,EAAY,IAAIlb,MAAM4P,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IACpFoL,EAAUpL,GAAQvc,UAAUuc,GAG9B,IAAKoL,EAAUiW,MAAMtmB,EAAS0jB,YAC5B,MAAM,IAAIj5B,EAAqB,2CAGjC,OAAO+C,EAAO6iB,EAAW,SAAUxqB,GACjC,OAAOA,EAAEyX,WACRjO,KAAKuoB,MASV5X,EAAS6X,IAAM,WACb,IAAK,IAAIzS,EAAQ1c,UAAU5C,OAAQuqB,EAAY,IAAIlb,MAAMiQ,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACzF+K,EAAU/K,GAAS5c,UAAU4c,GAG/B,IAAK+K,EAAUiW,MAAMtmB,EAAS0jB,YAC5B,MAAM,IAAIj5B,EAAqB,2CAGjC,OAAO+C,EAAO6iB,EAAW,SAAUxqB,GACjC,OAAOA,EAAEyX,WACRjO,KAAKwoB,MAYV7X,EAASumB,kBAAoB,SAA2Bja,EAAM/U,EAAK6K,QACjD,IAAZA,IACFA,EAAU,IAGZ,IAAIE,EAAWF,EACXokB,EAAkBlkB,EAASlR,OAC3BA,OAA6B,IAApBo1B,EAA6B,KAAOA,EAC7CC,EAAwBnkB,EAAS1D,gBACjCA,OAA4C,IAA1B6nB,EAAmC,KAAOA,EAMhE,OAAOtN,GALWza,GAAOwE,SAAS,CAChC9R,OAAQA,EACRwN,gBAAiBA,EACjBuE,aAAa,IAEuBmJ,EAAM/U,IAO9CyI,EAAS0mB,kBAAoB,SAA2Bpa,EAAM/U,EAAK6K,GAKjE,YAJgB,IAAZA,IACFA,EAAU,IAGLpC,EAASumB,kBAAkBja,EAAM/U,EAAK6K,IAS/C9b,EAAa0Z,EAAU,CAAC,CACtB3Z,IAAK,UACL+C,IAAK,WACH,OAAwB,OAAjBG,KAAK2iB,UAOb,CACD7lB,IAAK,gBACL+C,IAAK,WACH,OAAOG,KAAK2iB,QAAU3iB,KAAK2iB,QAAQpiB,OAAS,OAO7C,CACDzD,IAAK,qBACL+C,IAAK,WACH,OAAOG,KAAK2iB,QAAU3iB,KAAK2iB,QAAQhR,YAAc,OAQlD,CACD7U,IAAK,SACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAK6N,IAAIhG,OAAS,OAQzC,CACD/K,IAAK,kBACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAK6N,IAAIwH,gBAAkB,OAQlD,CACDvY,IAAK,iBACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAK6N,IAAIuC,eAAiB,OAOjD,CACDtT,IAAK,OACL+C,IAAK,WACH,OAAOG,KAAKs3B,QAOb,CACDx6B,IAAK,WACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKyP,KAAKiD,KAAO,OAQxC,CACD5V,IAAK,OACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKoO,EAAE1M,KAAO6S,MAQrC,CACDzX,IAAK,UACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAU1J,KAAKsc,KAAKpiB,KAAKoO,EAAEzM,MAAQ,GAAK4S,MAQrD,CACDzX,IAAK,QACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKoO,EAAEzM,MAAQ4S,MAQtC,CACDzX,IAAK,MACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKoO,EAAExM,IAAM2S,MAQpC,CACDzX,IAAK,OACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKoO,EAAElM,KAAOqS,MAQrC,CACDzX,IAAK,SACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKoO,EAAEjM,OAASoS,MAQvC,CACDzX,IAAK,SACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKoO,EAAE/L,OAASkS,MAQvC,CACDzX,IAAK,cACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKoO,EAAEnH,YAAcsN,MAS5C,CACDzX,IAAK,WACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAU0kB,GAAuBl0B,MAAMqH,SAAWkN,MAS/D,CACDzX,IAAK,aACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAU0kB,GAAuBl0B,MAAMuQ,WAAagE,MAUjE,CACDzX,IAAK,UACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAU0kB,GAAuBl0B,MAAMgC,QAAUuS,MAQ9D,CACDzX,IAAK,UACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAU0jB,GAAmBlzB,KAAKoO,GAAGoC,QAAU+D,MAS5D,CACDzX,IAAK,aACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUyZ,GAAKpe,OAAO,QAAS,CACzChD,OAAQ7H,KAAK6H,SACZ7H,KAAK2B,MAAQ,GAAK,OAStB,CACD7E,IAAK,YACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUyZ,GAAKpe,OAAO,OAAQ,CACxChD,OAAQ7H,KAAK6H,SACZ7H,KAAK2B,MAAQ,GAAK,OAStB,CACD7E,IAAK,eACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUyZ,GAAKhe,SAAS,QAAS,CAC3CpD,OAAQ7H,KAAK6H,SACZ7H,KAAKgC,QAAU,GAAK,OASxB,CACDlF,IAAK,cACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUyZ,GAAKhe,SAAS,OAAQ,CAC1CpD,OAAQ7H,KAAK6H,SACZ7H,KAAKgC,QAAU,GAAK,OASxB,CACDlF,IAAK,SACL+C,IAAK,WACH,OAAOG,KAAKwP,SAAWxP,KAAKrC,EAAI4W,MAQjC,CACDzX,IAAK,kBACL+C,IAAK,WACH,OAAIG,KAAKwP,QACAxP,KAAKyP,KAAKY,WAAWrQ,KAAK2H,GAAI,CACnCe,OAAQ,QACRb,OAAQ7H,KAAK6H,SAGR,OASV,CACD/K,IAAK,iBACL+C,IAAK,WACH,OAAIG,KAAKwP,QACAxP,KAAKyP,KAAKY,WAAWrQ,KAAK2H,GAAI,CACnCe,OAAQ,OACRb,OAAQ7H,KAAK6H,SAGR,OAQV,CACD/K,IAAK,gBACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUxP,KAAKyP,KAAK+G,UAAY,OAO7C,CACD1Z,IAAK,UACL+C,IAAK,WACH,OAAIG,KAAKsP,gBAGAtP,KAAK8J,OAAS9J,KAAKF,IAAI,CAC5B6B,MAAO,IACNmI,QAAU9J,KAAK8J,OAAS9J,KAAKF,IAAI,CAClC6B,MAAO,IACNmI,UAUN,CACDhN,IAAK,eACL+C,IAAK,WACH,OAAO2G,GAAWxG,KAAK0B,QASxB,CACD5E,IAAK,cACL+C,IAAK,WACH,OAAO6G,GAAY1G,KAAK0B,KAAM1B,KAAK2B,SASpC,CACD7E,IAAK,aACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAU/I,GAAWzG,KAAK0B,MAAQ6S,MAU/C,CACDzX,IAAK,kBACL+C,IAAK,WACH,OAAOG,KAAKwP,QAAUpI,GAAgBpH,KAAKqH,UAAYkN,OAEvD,CAAC,CACHzX,IAAK,aACL+C,IAAK,WACH,OAAO4B,IAOR,CACD3E,IAAK,WACL+C,IAAK,WACH,OAAOgC,IAOR,CACD/E,IAAK,YACL+C,IAAK,WACH,OAAOiC,IAOR,CACDhF,IAAK,YACL+C,IAAK,WACH,OAAOkC,IAOR,CACDjF,IAAK,cACL+C,IAAK,WACH,OAAOoC,IAOR,CACDnF,IAAK,oBACL+C,IAAK,WACH,OAAOuC,IAOR,CACDtF,IAAK,yBACL+C,IAAK,WACH,OAAOyC,IAOR,CACDxF,IAAK,wBACL+C,IAAK,WACH,OAAO2C,IAOR,CACD1F,IAAK,iBACL+C,IAAK,WACH,OAAO4C,IAOR,CACD3F,IAAK,uBACL+C,IAAK,WACH,OAAO8C,IAOR,CACD7F,IAAK,4BACL+C,IAAK,WACH,OAAO+C,IAOR,CACD9F,IAAK,2BACL+C,IAAK,WACH,OAAOgD,IAOR,CACD/F,IAAK,iBACL+C,IAAK,WACH,OAAOiD,IAOR,CACDhG,IAAK,8BACL+C,IAAK,WACH,OAAOkD,IAOR,CACDjG,IAAK,eACL+C,IAAK,WACH,OAAOmD,IAOR,CACDlG,IAAK,4BACL+C,IAAK,WACH,OAAOoD,IAOR,CACDnG,IAAK,4BACL+C,IAAK,WACH,OAAOqD,IAOR,CACDpG,IAAK,gBACL+C,IAAK,WACH,OAAOsD,IAOR,CACDrG,IAAK,6BACL+C,IAAK,WACH,OAAOuD,IAOR,CACDtG,IAAK,gBACL+C,IAAK,WACH,OAAOwD,IAOR,CACDvG,IAAK,6BACL+C,IAAK,WACH,OAAOyD,MAIJmT,EA3gET,GA6gEA,SAASiP,GAAiB0X,GACxB,GAAI3mB,GAAS0jB,WAAWiD,GACtB,OAAOA,EACF,GAAIA,GAAeA,EAAYrpB,SAAWvQ,EAAS45B,EAAYrpB,WACpE,OAAO0C,GAAS+gB,WAAW4F,GACtB,GAAIA,GAAsC,iBAAhBA,EAC/B,OAAO3mB,GAASsD,WAAWqjB,GAE3B,MAAM,IAAIl8B,EAAqB,8BAAgCk8B,EAAc,oBAAsBA,GAevG,OAXAlhC,EAAQua,SAAWA,GACnBva,EAAQwlB,SAAWA,GACnBxlB,EAAQ+X,gBAAkBA,GAC1B/X,EAAQuW,SAAWA,GACnBvW,EAAQ+sB,KAAOA,GACf/sB,EAAQkpB,SAAWA,GACnBlpB,EAAQoY,YAAcA,GACtBpY,EAAQ8V,UAAYA,GACpB9V,EAAQ+Y,SAAWA,GACnB/Y,EAAQ0V,KAAOA,GAER1V,EArkQG,CAukQV","file":"build/global/luxon.js"} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js index 611808654e..8d13c0a985 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js @@ -1,5 +1,5 @@ -/* == jquery mousewheel plugin == Version: 3.1.13, License: MIT License (MIT) */ -!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); -/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */ -!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o="function"==typeof define&&define.amd,a="undefined"!=typeof module&&module.exports,n="https:"==document.location.protocol?"https:":"http:",i="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";o||(a?require("jquery-mousewheel")(e):e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+i+"%3E%3C/script%3E"))),t()}(function(){var t,o="mCustomScrollbar",a="mCS",n=".mCustomScrollbar",i={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:"auto",autoUpdateTimeout:60},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if("off"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),"once"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var n=o.data(a),i=n.opt,l=o.data("mcs-axis"),s=o.data("mcs-scrollbar-position"),c=o.data("mcs-theme");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),n&&i.callbacks.onCreate&&"function"==typeof i.callbacks.onCreate&&i.callbacks.onCreate.call(this),e("#mCSB_"+n.idx+"_container img:not(."+d[2]+")").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container"),l=e("#mCSB_"+n.idx),s=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];if(!r.length)return;n.tweenRunning&&Q(t),o&&n&&i.callbacks.onBeforeUpdate&&"function"==typeof i.callbacks.onBeforeUpdate&&i.callbacks.onBeforeUpdate.call(this),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),l.css("max-height","none"),l.height()!==t.height()&&l.css("max-height",t.height()),_.call(this),"y"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css("width",x(r)),n.overflowed=y.call(this),M.call(this),i.autoDraggerLength&&S.call(this),b.call(this),T.call(this);var c=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==i.axis&&(n.overflowed[0]?s[0].height()>s[0].parent().height()?B.call(this):(G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}),n.contentReset.y=null):(B.call(this),"y"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[1]&&G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==i.axis&&(n.overflowed[1]?s[1].width()>s[1].parent().width()?B.call(this):(G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}),n.contentReset.x=null):(B.call(this),"x"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[0]&&G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&"function"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&"function"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&"function"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),N.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:"external",scrollInertia:r.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=X.call(this,c[0],"y"),c[1]=X.call(this,c[1],"x"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=ne()?0:d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==r.axis&&i.overflowed[0]&&(s.dir="y",s.overwrite="all",G(n,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==r.axis&&i.overflowed[1]&&(s.dir="x",s.overwrite="none",G(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&Q(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){o.data(a);N.call(this,"remove"),k.call(this),t&&B.call(this),M.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx),s=e("#mCSB_"+i.idx+"_container"),c=e(".mCSB_"+i.idx+"_scrollbar");r.live&&m(r.liveSelector||e(t).selector),N.call(this,"remove"),k.call(this),B.call(this),n.removeData(a),$(this,"mcs"),c.remove(),s.find("img."+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+" _"+a+"_"+i.idx+" "+d[6]+" "+d[7]+" "+d[5]+" "+d[3]).addClass(d[4])}})}},f=function(){return"object"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],i=["minimal","minimal-dark"],r=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?"outside":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),$(l,e))},p=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},g=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?" "+d[1]+"_expand":"",l=["
","
"],s="yx"===i.axis?"mCSB_vertical_horizontal":"x"===i.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===i.axis?l[0]+l[1]:"x"===i.axis?l[1]:l[0],u="yx"===i.axis?"
":"",f=i.autoHideScrollbar?" "+d[6]:"",h="x"!==i.axis&&"rtl"===n.langDir?" "+d[7]:"";i.setWidth&&t.css("width",i.setWidth),i.setHeight&&t.css("height",i.setHeight),i.setLeft="y"!==i.axis&&"rtl"===n.langDir?"989999px":i.setLeft,t.addClass(o+" _"+a+"_"+n.idx+f+h).wrapInner("
");var m=e("#mCSB_"+n.idx),p=e("#mCSB_"+n.idx+"_container");"y"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css("width",x(p)),"outside"===i.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),m.addClass("mCSB_outside").after(c)):(m.addClass("mCSB_inside").append(c),p.wrap(u)),w.call(this);var g=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];g[0].css("min-height",g[0].height()),g[1].css("min-width",g[1].width())},x=function(t){var o=[t[0].scrollWidth,Math.max.apply(Math,t.children().map(function(){return e(this).outerWidth(!0)}).get())],a=t.parent().width();return o[0]>a?o[0]:o[1]>a?o[1]:"100%"},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx+"_container");if(n.advanced.autoExpandHorizontalScroll&&"y"!==n.axis){i.css({width:"auto","min-width":0,"overflow-x":"scroll"});var r=Math.ceil(i[0].scrollWidth);3===n.advanced.autoExpandHorizontalScroll||2!==n.advanced.autoExpandHorizontalScroll&&r>i.parent().width()?i.css({width:r,"min-width":"100%","overflow-x":"inherit"}):i.css({"overflow-x":"inherit",position:"absolute"}).wrap("
").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),"min-width":"100%",position:"relative"}).unwrap()}},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(".mCSB_"+o.idx+"_scrollbar:first"),r=oe(n.scrollButtons.tabindex)?"tabindex='"+n.scrollButtons.tabindex+"'":"",l=["","","",""],s=["x"===n.axis?l[2]:l[0],"x"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css("min-height")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css("min-width")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]r&&(r=s),c>l&&(l=c),[r>n.height(),l>n.width()]},B=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(Q(t),("x"!==n.axis&&!o.overflowed[0]||"y"===n.axis&&o.overflowed[0])&&(l[0].add(r).css("top",0),G(t,"_resetY")),"y"!==n.axis&&!o.overflowed[1]||"x"===n.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css("left",s),l[1].css("left",dx),G(t,"_resetX")}},T=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(I.call(this),i.contentTouchScroll&&D.call(this),E.call(this),i.mouseWheel.enable){var r;t()}P.call(this),U.call(this),i.advanced.autoScrollOnFocus&&H.call(this),i.scrollButtons.enable&&F.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},k=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=".mCSB_"+o.idx+"_scrollbar",l=e("#mCSB_"+o.idx+",#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,"+r+" ."+d[12]+",#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal,"+r+">a"),s=e("#mCSB_"+o.idx+"_container");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),n.advanced.extraDraggableSelectors&&l.add(e(n.advanced.extraDraggableSelectors)),o.bindEvents&&(e(document).add(e(!A()||top.document)).unbind("."+i),l.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),$(t[0],"_focusTimeout"),clearTimeout(o.sequential.step),$(o.sequential,"step"),clearTimeout(s[0].onCompleteTimeout),$(s[0],"onCompleteTimeout"),o.bindEvents=!1)},M=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container_wrapper"),l=r.length?r:e("#mCSB_"+n.idx+"_container"),s=[e("#mCSB_"+n.idx+"_scrollbar_vertical"),e("#mCSB_"+n.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass(d[8]+" "+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css("display","none"),l.removeClass(d[10])):(s[0].css("display","none"),l.addClass(d[10])),l.addClass(d[8]))),"y"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass(d[9]+" "+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css("display","none"),l.removeClass(d[11])):(s[1].css("display","none"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},O=function(t){var o=t.type,a=t.target.ownerDocument!==document&&null!==frameElement?[e(frameElement).offset().top,e(frameElement).offset().left]:null,n=A()&&t.target.ownerDocument!==top.document&&null!==frameElement?[e(t.view.frameElement).offset().top,e(t.view.frameElement).offset().left]:[0,0];switch(o){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return a?[t.originalEvent.pageY-a[0]+n[0],t.originalEvent.pageX-a[1]+n[1],!1]:[t.originalEvent.pageY,t.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var i=t.originalEvent.touches[0]||t.originalEvent.changedTouches[0],r=t.originalEvent.touches.length||t.originalEvent.changedTouches.length;return t.target.ownerDocument!==document?[i.screenY,i.screenX,r>1]:[i.pageY,i.pageX,r>1];default:return a?[t.pageY-a[0]+n[0],t.pageX-a[1]+n[1],!1]:[t.pageY,t.pageX,!1]}},I=function(){function t(e,t,a,n){if(h[0].idleTimer=d.scrollInertia<233?250:0,o.attr("id")===f[1])var i="x",s=(o[0].offsetLeft-t+n)*l.scrollRatio.x;else var i="y",s=(o[0].offsetTop-e+a)*l.scrollRatio.y;G(r,s.toString(),{dir:i,drag:!0})}var o,n,i,r=e(this),l=r.data(a),d=l.opt,u=a+"_"+l.idx,f=["mCSB_"+l.idx+"_dragger_vertical","mCSB_"+l.idx+"_dragger_horizontal"],h=e("#mCSB_"+l.idx+"_container"),m=e("#"+f[0]+",#"+f[1]),p=d.advanced.releaseDraggableSelectors?m.add(e(d.advanced.releaseDraggableSelectors)):m,g=d.advanced.extraDraggableSelectors?e(!A()||top.document).add(e(d.advanced.extraDraggableSelectors)):e(!A()||top.document);m.bind("contextmenu."+u,function(e){e.preventDefault()}).bind("mousedown."+u+" touchstart."+u+" pointerdown."+u+" MSPointerDown."+u,function(t){if(t.stopImmediatePropagation(),t.preventDefault(),ee(t)){c=!0,s&&(document.onselectstart=function(){return!1}),L.call(h,!1),Q(r),o=e(this);var a=o.offset(),l=O(t)[0]-a.top,u=O(t)[1]-a.left,f=o.height()+a.top,m=o.width()+a.left;f>l&&l>0&&m>u&&u>0&&(n=l,i=u),C(o,"active",d.autoExpandScrollbar)}}).bind("touchmove."+u,function(e){e.stopImmediatePropagation(),e.preventDefault();var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;t(n,i,r,l)}),e(document).add(g).bind("mousemove."+u+" pointermove."+u+" MSPointerMove."+u,function(e){if(o){var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;if(n===r&&i===l)return;t(n,i,r,l)}}).add(p).bind("mouseup."+u+" touchend."+u+" pointerup."+u+" MSPointerUp."+u,function(){o&&(C(o,"active",d.autoExpandScrollbar),o=null),c=!1,s&&(document.onselectstart=null),L.call(h,!0)})},D=function(){function o(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,b=0,C=0,d=1,y.removeClass("mCS_touch_action");var o=I.offset();u=O(e)[0]-o.top,f=O(e)[1]-o.left,z=[O(e)[0],O(e)[1]]}function n(e){if(te(e)&&!c&&!O(e)[2]&&(T.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!C||b)&&d)){g=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left,n="mcsLinearOut";if(E.push(o),W.push(a),z[2]=Math.abs(O(e)[0]-z[0]),z[3]=Math.abs(O(e)[1]-z[1]),B.overflowed[0])var i=D[0].parent().height()-D[0].height(),r=u-o>0&&o-u>-(i*B.scrollRatio.y)&&(2*z[3]0&&a-f>-(l*B.scrollRatio.x)&&(2*z[2]30)){_=1e3/(v-p);var n="mcsEaseOut",i=2.5>_,r=i?[E[E.length-2],W[W.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-h,a-m];var u=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var f=[Math.abs(I[0].offsetTop)-x[0]*l(u[0]/_[0],_[0]),Math.abs(I[0].offsetLeft)-x[1]*l(u[1]/_[1],_[1])];w="yx"===T.axis?[f[0],f[1]]:"x"===T.axis?[null,f[1]]:[f[0],null],S=[4*u[0]+T.scrollInertia,4*u[1]+T.scrollInertia];var y=parseInt(T.contentTouchScroll)||0;w[0]=u[0]>y?w[0]:0,w[1]=u[1]>y?w[1]:0,B.overflowed[0]&&s(w[0],S[0],n,"y",L,!1),B.overflowed[1]&&s(w[1],S[1],n,"x",L,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&G(y,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C,y=e(this),B=y.data(a),T=B.opt,k=a+"_"+B.idx,M=e("#mCSB_"+B.idx),I=e("#mCSB_"+B.idx+"_container"),D=[e("#mCSB_"+B.idx+"_dragger_vertical"),e("#mCSB_"+B.idx+"_dragger_horizontal")],E=[],W=[],R=0,L="yx"===T.axis?"none":"all",z=[],P=I.find("iframe"),H=["touchstart."+k+" pointerdown."+k+" MSPointerDown."+k,"touchmove."+k+" pointermove."+k+" MSPointerMove."+k,"touchend."+k+" pointerup."+k+" MSPointerUp."+k],U=void 0!==document.body.style.touchAction&&""!==document.body.style.touchAction;I.bind(H[0],function(e){o(e)}).bind(H[1],function(e){n(e)}),M.bind(H[0],function(e){i(e)}).bind(H[2],function(e){r(e)}),P.length&&P.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(H[0],function(e){o(e),i(e)}).bind(H[1],function(e){n(e)}).bind(H[2],function(e){r(e)})})})},E=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?"stepped":"stepless",d.scrollAmount=10,j(r,e,t,"mcsLinearOut",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+"_"+l.idx,f=e("#mCSB_"+l.idx+"_container"),h=f.parent();f.bind("mousedown."+u,function(){t||i||(i=1,c=!0)}).add(document).bind("mousemove."+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=O(e)[0]-a.top+f[0].offsetTop,c=O(e)[1]-a.left+f[0].offsetLeft;r>0&&r0&&cr?n("on",38):r>h.height()&&n("on",40)),"y"!==s.axis&&l.overflowed[1]&&(0>c?n("on",37):c>h.width()&&n("on",39)))}}).bind("mouseup."+u+" dragend."+u,function(){t||(i&&(i=0,n("off",null)),c=!1)})},W=function(){function t(t,a){if(Q(o),!z(o,t.target)){var r="auto"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100,d=i.scrollInertia;if("x"===i.axis||"x"===i.mouseWheel.axis)var u="x",f=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.width()?.9*l.width():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetLeft),p=c[1][0].offsetLeft,g=c[1].parent().width()-c[1].width(),v="y"===i.mouseWheel.axis?t.deltaY||a:t.deltaX;else var u="y",f=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.height()?.9*l.height():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetTop),p=c[0][0].offsetTop,g=c[0].parent().height()-c[0].height(),v=t.deltaY||a;"y"===u&&!n.overflowed[0]||"x"===u&&!n.overflowed[1]||((i.mouseWheel.invert||t.webkitDirectionInvertedFromDevice)&&(v=-v),i.mouseWheel.normalizeDelta&&(v=0>v?-1:1),(v>0&&0!==p||0>v&&p!==g||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),t.deltaFactor<5&&!i.mouseWheel.normalizeDelta&&(h=t.deltaFactor,d=17),G(o,(m-v*h).toString(),{dir:u,dur:d}))}}if(e(this).data(a)){var o=e(this),n=o.data(a),i=n.opt,r=a+"_"+n.idx,l=e("#mCSB_"+n.idx),c=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")],d=e("#mCSB_"+n.idx+"_container").find("iframe");d.length&&d.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind("mousewheel."+r,function(e,o){t(e,o)})})}),l.bind("mousewheel."+r,function(e,o){t(e,o)})}},R=new Object,A=function(t){var o=!1,a=!1,n=null;if(void 0===t?a="#empty":void 0!==e(t).attr("id")&&(a=e(t).attr("id")),a!==!1&&void 0!==R[a])return R[a];if(t){try{var i=t.contentDocument||t.contentWindow.document;n=i.body.innerHTML}catch(r){}o=null!==n}else{try{var i=top.document;n=i.body.innerHTML}catch(r){}o=null!==n}return a!==!1&&(R[a]=o),o},L=function(e){var t=this.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}},z=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=["select","textarea"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(":focus"))},P=function(){var t,o=e(this),n=o.data(a),i=a+"_"+n.idx,r=e("#mCSB_"+n.idx+"_container"),l=r.parent(),s=e(".mCSB_"+n.idx+"_scrollbar ."+d[12]);s.bind("mousedown."+i+" touchstart."+i+" pointerdown."+i+" MSPointerDown."+i,function(o){c=!0,e(o.target).hasClass("mCSB_dragger")||(t=1)}).bind("touchend."+i+" pointerup."+i+" MSPointerUp."+i,function(){c=!1}).bind("click."+i,function(a){if(t&&(t=0,e(a.target).hasClass(d[12])||e(a.target).hasClass("mCSB_draggerRail"))){Q(o);var i=e(this),s=i.find(".mCSB_dragger");if(i.parent(".mCSB_scrollTools_horizontal").length>0){if(!n.overflowed[1])return;var c="x",u=a.pageX>s.offset().left?-1:1,f=Math.abs(r[0].offsetLeft)-u*(.9*l.width())}else{if(!n.overflowed[0])return;var c="y",u=a.pageY>s.offset().top?-1:1,f=Math.abs(r[0].offsetTop)-u*(.9*l.height())}G(o,f.toString(),{dir:c,scrollEasing:"mcsEaseInOut"})}})},H=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),l=r.parent();r.bind("focusin."+i,function(){var o=e(document.activeElement),a=r.find(".mCustomScrollBox").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(Q(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ae(o)[0],ae(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]=0&&a[0]+e[1]a");s.bind("contextmenu."+r,function(e){e.preventDefault()}).bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(a){function r(e,o){i.scrollAmount=n.scrollButtons.scrollAmount,j(t,e,o)}if(a.preventDefault(),ee(a)){var l=e(this).attr("class");switch(i.type=n.scrollButtons.scrollType,a.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===i.type)return;c=!0,o.tweenRunning=!1,r("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===i.type)return;c=!1,i.dir&&r("off",l);break;case"click":if("stepped"!==i.type||o.tweenRunning)return;r("on",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.keyboard.scrollAmount,"stepped"===r.type&&n.tweenRunning||j(o,e,t)}switch(t.type){case"blur":n.tweenRunning&&r.dir&&a("off",null);break;case"keydown":case"keyup":var l=t.keyCode?t.keyCode:t.which,s="on";if("x"!==i.axis&&(38===l||40===l)||"y"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;"keyup"===t.type&&(s="off"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type){Q(o);var f=34===l?-1:1;if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=Math.abs(c[0].offsetLeft)-f*(.9*d.width());else var h="y",m=Math.abs(c[0].offsetTop)-f*(.9*d.height());G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type)){if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h="y",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+"_"+n.idx,s=e("#mCSB_"+n.idx),c=e("#mCSB_"+n.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']",f=c.find("iframe"),h=["blur."+l+" keydown."+l+" keyup."+l];f.length&&f.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr("tabindex","0").bind(h[0],function(e){t(e)})},j=function(t,o,n,i,r){function l(e){u.snapAmount&&(f.scrollAmount=u.snapAmount instanceof Array?"x"===f.dir[0]?u.snapAmount[1]:u.snapAmount[0]:u.snapAmount);var o="stepped"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],m="x"===f.dir[0]?s[1]+f.dir[1]*(d[1]*n):s[0]+f.dir[1]*(d[0]*n),v="x"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),x="auto"!==f.scrollAmount?v:m,_=i?i:e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",w=!!e;return e&&17>a&&(x="x"===f.dir[0]?s[1]:s[0]),G(t,x.toString(),{dir:f.dir[0],scrollEasing:_,dur:a,onComplete:w}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),$(f,"step"),Q(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e("#mCSB_"+c.idx+"_container"),m="stepped"===f.type,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case"on":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?"x":"y",n===d[13]||n===d[15]||38===n||37===n?-1:1],Q(t),oe(n)&&"stepped"===f.type)return;l(m);break;case"off":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return"function"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||"x"===o.axis?null:t,n[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof n[0]&&(n[0]=n[0]()),"function"==typeof n[1]&&(n[1]=n[1]()),n},X=function(t,o){if(null!=t&&"undefined"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===r.axis?"x":"y");var d="x"===o?l.outerWidth(!1)-s.width():l.outerHeight(!1)-s.height(),f="x"===o?l[0].offsetLeft:l[0].offsetTop,h="x"===o?"left":"top";switch(c){case"function":return t();case"object":var m=t.jquery?t:e(t);if(!m.length)return;return"x"===o?ae(m)[1]:ae(m)[0];case"string":case"number":if(oe(t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(f-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var p=f+parseInt(t.split("+=")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf("px")&&oe(t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var m=l.find(":"+t);return"x"===o?ae(m)[1]:ae(m)[0]}return e(t).length?"x"===o?ae(e(t))[1]:ae(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},N=function(t){function o(){return clearTimeout(f[0].autoUpdate),0===l.parents("html").length?void(l=null):void(f[0].autoUpdate=setTimeout(function(){return c.advanced.updateOnSelectorChange&&(s.poll.change.n=i(),s.poll.change.n!==s.poll.change.o)?(s.poll.change.o=s.poll.change.n,void r(3)):c.advanced.updateOnContentResize&&(s.poll.size.n=l[0].scrollHeight+l[0].scrollWidth+f[0].offsetHeight+l[0].offsetHeight+l[0].offsetWidth,s.poll.size.n!==s.poll.size.o)?(s.poll.size.o=s.poll.size.n,void r(1)):!c.advanced.updateOnImageLoad||"auto"===c.advanced.updateOnImageLoad&&"y"===c.axis||(s.poll.img.n=f.find("img").length,s.poll.img.n===s.poll.img.o)?void((c.advanced.updateOnSelectorChange||c.advanced.updateOnContentResize||c.advanced.updateOnImageLoad)&&o()):(s.poll.img.o=s.poll.img.n,void f.find("img").each(function(){n(this)}))},c.advanced.autoUpdateTimeout))}function n(t){function o(e,t){return function(){ +/* == jquery mousewheel plugin == Version: 3.1.13, License: MIT License (MIT) */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); +/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o="function"==typeof define&&define.amd,a="undefined"!=typeof module&&module.exports,n="https:"==document.location.protocol?"https:":"http:",i="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";o||(a?require("jquery-mousewheel")(e):e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+i+"%3E%3C/script%3E"))),t()}(function(){var t,o="mCustomScrollbar",a="mCS",n=".mCustomScrollbar",i={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:"auto",autoUpdateTimeout:60},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if("off"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),"once"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var n=o.data(a),i=n.opt,l=o.data("mcs-axis"),s=o.data("mcs-scrollbar-position"),c=o.data("mcs-theme");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),n&&i.callbacks.onCreate&&"function"==typeof i.callbacks.onCreate&&i.callbacks.onCreate.call(this),e("#mCSB_"+n.idx+"_container img:not(."+d[2]+")").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container"),l=e("#mCSB_"+n.idx),s=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];if(!r.length)return;n.tweenRunning&&Q(t),o&&n&&i.callbacks.onBeforeUpdate&&"function"==typeof i.callbacks.onBeforeUpdate&&i.callbacks.onBeforeUpdate.call(this),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),l.css("max-height","none"),l.height()!==t.height()&&l.css("max-height",t.height()),_.call(this),"y"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css("width",x(r)),n.overflowed=y.call(this),M.call(this),i.autoDraggerLength&&S.call(this),b.call(this),T.call(this);var c=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==i.axis&&(n.overflowed[0]?s[0].height()>s[0].parent().height()?B.call(this):(G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}),n.contentReset.y=null):(B.call(this),"y"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[1]&&G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==i.axis&&(n.overflowed[1]?s[1].width()>s[1].parent().width()?B.call(this):(G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}),n.contentReset.x=null):(B.call(this),"x"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[0]&&G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&"function"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&"function"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&"function"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),N.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:"external",scrollInertia:r.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=X.call(this,c[0],"y"),c[1]=X.call(this,c[1],"x"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=ne()?0:d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==r.axis&&i.overflowed[0]&&(s.dir="y",s.overwrite="all",G(n,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==r.axis&&i.overflowed[1]&&(s.dir="x",s.overwrite="none",G(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&Q(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){o.data(a);N.call(this,"remove"),k.call(this),t&&B.call(this),M.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx),s=e("#mCSB_"+i.idx+"_container"),c=e(".mCSB_"+i.idx+"_scrollbar");r.live&&m(r.liveSelector||e(t).selector),N.call(this,"remove"),k.call(this),B.call(this),n.removeData(a),$(this,"mcs"),c.remove(),s.find("img."+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+" _"+a+"_"+i.idx+" "+d[6]+" "+d[7]+" "+d[5]+" "+d[3]).addClass(d[4])}})}},f=function(){return"object"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],i=["minimal","minimal-dark"],r=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?"outside":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),$(l,e))},p=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},g=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?" "+d[1]+"_expand":"",l=["
","
"],s="yx"===i.axis?"mCSB_vertical_horizontal":"x"===i.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===i.axis?l[0]+l[1]:"x"===i.axis?l[1]:l[0],u="yx"===i.axis?"
":"",f=i.autoHideScrollbar?" "+d[6]:"",h="x"!==i.axis&&"rtl"===n.langDir?" "+d[7]:"";i.setWidth&&t.css("width",i.setWidth),i.setHeight&&t.css("height",i.setHeight),i.setLeft="y"!==i.axis&&"rtl"===n.langDir?"989999px":i.setLeft,t.addClass(o+" _"+a+"_"+n.idx+f+h).wrapInner("
");var m=e("#mCSB_"+n.idx),p=e("#mCSB_"+n.idx+"_container");"y"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css("width",x(p)),"outside"===i.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),m.addClass("mCSB_outside").after(c)):(m.addClass("mCSB_inside").append(c),p.wrap(u)),w.call(this);var g=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];g[0].css("min-height",g[0].height()),g[1].css("min-width",g[1].width())},x=function(t){var o=[t[0].scrollWidth,Math.max.apply(Math,t.children().map(function(){return e(this).outerWidth(!0)}).get())],a=t.parent().width();return o[0]>a?o[0]:o[1]>a?o[1]:"100%"},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx+"_container");if(n.advanced.autoExpandHorizontalScroll&&"y"!==n.axis){i.css({width:"auto","min-width":0,"overflow-x":"scroll"});var r=Math.ceil(i[0].scrollWidth);3===n.advanced.autoExpandHorizontalScroll||2!==n.advanced.autoExpandHorizontalScroll&&r>i.parent().width()?i.css({width:r,"min-width":"100%","overflow-x":"inherit"}):i.css({"overflow-x":"inherit",position:"absolute"}).wrap("
").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),"min-width":"100%",position:"relative"}).unwrap()}},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(".mCSB_"+o.idx+"_scrollbar:first"),r=oe(n.scrollButtons.tabindex)?"tabindex='"+n.scrollButtons.tabindex+"'":"",l=["","","",""],s=["x"===n.axis?l[2]:l[0],"x"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css("min-height")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css("min-width")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]r&&(r=s),c>l&&(l=c),[r>n.height(),l>n.width()]},B=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(Q(t),("x"!==n.axis&&!o.overflowed[0]||"y"===n.axis&&o.overflowed[0])&&(l[0].add(r).css("top",0),G(t,"_resetY")),"y"!==n.axis&&!o.overflowed[1]||"x"===n.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css("left",s),l[1].css("left",dx),G(t,"_resetX")}},T=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(I.call(this),i.contentTouchScroll&&D.call(this),E.call(this),i.mouseWheel.enable){var r;t()}P.call(this),U.call(this),i.advanced.autoScrollOnFocus&&H.call(this),i.scrollButtons.enable&&F.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},k=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=".mCSB_"+o.idx+"_scrollbar",l=e("#mCSB_"+o.idx+",#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,"+r+" ."+d[12]+",#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal,"+r+">a"),s=e("#mCSB_"+o.idx+"_container");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),n.advanced.extraDraggableSelectors&&l.add(e(n.advanced.extraDraggableSelectors)),o.bindEvents&&(e(document).add(e(!A()||top.document)).unbind("."+i),l.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),$(t[0],"_focusTimeout"),clearTimeout(o.sequential.step),$(o.sequential,"step"),clearTimeout(s[0].onCompleteTimeout),$(s[0],"onCompleteTimeout"),o.bindEvents=!1)},M=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container_wrapper"),l=r.length?r:e("#mCSB_"+n.idx+"_container"),s=[e("#mCSB_"+n.idx+"_scrollbar_vertical"),e("#mCSB_"+n.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass(d[8]+" "+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css("display","none"),l.removeClass(d[10])):(s[0].css("display","none"),l.addClass(d[10])),l.addClass(d[8]))),"y"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass(d[9]+" "+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css("display","none"),l.removeClass(d[11])):(s[1].css("display","none"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},O=function(t){var o=t.type,a=t.target.ownerDocument!==document&&null!==frameElement?[e(frameElement).offset().top,e(frameElement).offset().left]:null,n=A()&&t.target.ownerDocument!==top.document&&null!==frameElement?[e(t.view.frameElement).offset().top,e(t.view.frameElement).offset().left]:[0,0];switch(o){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return a?[t.originalEvent.pageY-a[0]+n[0],t.originalEvent.pageX-a[1]+n[1],!1]:[t.originalEvent.pageY,t.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var i=t.originalEvent.touches[0]||t.originalEvent.changedTouches[0],r=t.originalEvent.touches.length||t.originalEvent.changedTouches.length;return t.target.ownerDocument!==document?[i.screenY,i.screenX,r>1]:[i.pageY,i.pageX,r>1];default:return a?[t.pageY-a[0]+n[0],t.pageX-a[1]+n[1],!1]:[t.pageY,t.pageX,!1]}},I=function(){function t(e,t,a,n){if(h[0].idleTimer=d.scrollInertia<233?250:0,o.attr("id")===f[1])var i="x",s=(o[0].offsetLeft-t+n)*l.scrollRatio.x;else var i="y",s=(o[0].offsetTop-e+a)*l.scrollRatio.y;G(r,s.toString(),{dir:i,drag:!0})}var o,n,i,r=e(this),l=r.data(a),d=l.opt,u=a+"_"+l.idx,f=["mCSB_"+l.idx+"_dragger_vertical","mCSB_"+l.idx+"_dragger_horizontal"],h=e("#mCSB_"+l.idx+"_container"),m=e("#"+f[0]+",#"+f[1]),p=d.advanced.releaseDraggableSelectors?m.add(e(d.advanced.releaseDraggableSelectors)):m,g=d.advanced.extraDraggableSelectors?e(!A()||top.document).add(e(d.advanced.extraDraggableSelectors)):e(!A()||top.document);m.bind("contextmenu."+u,function(e){e.preventDefault()}).bind("mousedown."+u+" touchstart."+u+" pointerdown."+u+" MSPointerDown."+u,function(t){if(t.stopImmediatePropagation(),t.preventDefault(),ee(t)){c=!0,s&&(document.onselectstart=function(){return!1}),L.call(h,!1),Q(r),o=e(this);var a=o.offset(),l=O(t)[0]-a.top,u=O(t)[1]-a.left,f=o.height()+a.top,m=o.width()+a.left;f>l&&l>0&&m>u&&u>0&&(n=l,i=u),C(o,"active",d.autoExpandScrollbar)}}).bind("touchmove."+u,function(e){e.stopImmediatePropagation(),e.preventDefault();var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;t(n,i,r,l)}),e(document).add(g).bind("mousemove."+u+" pointermove."+u+" MSPointerMove."+u,function(e){if(o){var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;if(n===r&&i===l)return;t(n,i,r,l)}}).add(p).bind("mouseup."+u+" touchend."+u+" pointerup."+u+" MSPointerUp."+u,function(){o&&(C(o,"active",d.autoExpandScrollbar),o=null),c=!1,s&&(document.onselectstart=null),L.call(h,!0)})},D=function(){function o(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,b=0,C=0,d=1,y.removeClass("mCS_touch_action");var o=I.offset();u=O(e)[0]-o.top,f=O(e)[1]-o.left,z=[O(e)[0],O(e)[1]]}function n(e){if(te(e)&&!c&&!O(e)[2]&&(T.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!C||b)&&d)){g=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left,n="mcsLinearOut";if(E.push(o),W.push(a),z[2]=Math.abs(O(e)[0]-z[0]),z[3]=Math.abs(O(e)[1]-z[1]),B.overflowed[0])var i=D[0].parent().height()-D[0].height(),r=u-o>0&&o-u>-(i*B.scrollRatio.y)&&(2*z[3]0&&a-f>-(l*B.scrollRatio.x)&&(2*z[2]30)){_=1e3/(v-p);var n="mcsEaseOut",i=2.5>_,r=i?[E[E.length-2],W[W.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-h,a-m];var u=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var f=[Math.abs(I[0].offsetTop)-x[0]*l(u[0]/_[0],_[0]),Math.abs(I[0].offsetLeft)-x[1]*l(u[1]/_[1],_[1])];w="yx"===T.axis?[f[0],f[1]]:"x"===T.axis?[null,f[1]]:[f[0],null],S=[4*u[0]+T.scrollInertia,4*u[1]+T.scrollInertia];var y=parseInt(T.contentTouchScroll)||0;w[0]=u[0]>y?w[0]:0,w[1]=u[1]>y?w[1]:0,B.overflowed[0]&&s(w[0],S[0],n,"y",L,!1),B.overflowed[1]&&s(w[1],S[1],n,"x",L,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&G(y,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C,y=e(this),B=y.data(a),T=B.opt,k=a+"_"+B.idx,M=e("#mCSB_"+B.idx),I=e("#mCSB_"+B.idx+"_container"),D=[e("#mCSB_"+B.idx+"_dragger_vertical"),e("#mCSB_"+B.idx+"_dragger_horizontal")],E=[],W=[],R=0,L="yx"===T.axis?"none":"all",z=[],P=I.find("iframe"),H=["touchstart."+k+" pointerdown."+k+" MSPointerDown."+k,"touchmove."+k+" pointermove."+k+" MSPointerMove."+k,"touchend."+k+" pointerup."+k+" MSPointerUp."+k],U=void 0!==document.body.style.touchAction&&""!==document.body.style.touchAction;I.bind(H[0],function(e){o(e)}).bind(H[1],function(e){n(e)}),M.bind(H[0],function(e){i(e)}).bind(H[2],function(e){r(e)}),P.length&&P.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(H[0],function(e){o(e),i(e)}).bind(H[1],function(e){n(e)}).bind(H[2],function(e){r(e)})})})},E=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?"stepped":"stepless",d.scrollAmount=10,j(r,e,t,"mcsLinearOut",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+"_"+l.idx,f=e("#mCSB_"+l.idx+"_container"),h=f.parent();f.bind("mousedown."+u,function(){t||i||(i=1,c=!0)}).add(document).bind("mousemove."+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=O(e)[0]-a.top+f[0].offsetTop,c=O(e)[1]-a.left+f[0].offsetLeft;r>0&&r0&&cr?n("on",38):r>h.height()&&n("on",40)),"y"!==s.axis&&l.overflowed[1]&&(0>c?n("on",37):c>h.width()&&n("on",39)))}}).bind("mouseup."+u+" dragend."+u,function(){t||(i&&(i=0,n("off",null)),c=!1)})},W=function(){function t(t,a){if(Q(o),!z(o,t.target)){var r="auto"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100,d=i.scrollInertia;if("x"===i.axis||"x"===i.mouseWheel.axis)var u="x",f=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.width()?.9*l.width():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetLeft),p=c[1][0].offsetLeft,g=c[1].parent().width()-c[1].width(),v="y"===i.mouseWheel.axis?t.deltaY||a:t.deltaX;else var u="y",f=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.height()?.9*l.height():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetTop),p=c[0][0].offsetTop,g=c[0].parent().height()-c[0].height(),v=t.deltaY||a;"y"===u&&!n.overflowed[0]||"x"===u&&!n.overflowed[1]||((i.mouseWheel.invert||t.webkitDirectionInvertedFromDevice)&&(v=-v),i.mouseWheel.normalizeDelta&&(v=0>v?-1:1),(v>0&&0!==p||0>v&&p!==g||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),t.deltaFactor<5&&!i.mouseWheel.normalizeDelta&&(h=t.deltaFactor,d=17),G(o,(m-v*h).toString(),{dir:u,dur:d}))}}if(e(this).data(a)){var o=e(this),n=o.data(a),i=n.opt,r=a+"_"+n.idx,l=e("#mCSB_"+n.idx),c=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")],d=e("#mCSB_"+n.idx+"_container").find("iframe");d.length&&d.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind("mousewheel."+r,function(e,o){t(e,o)})})}),l.bind("mousewheel."+r,function(e,o){t(e,o)})}},R=new Object,A=function(t){var o=!1,a=!1,n=null;if(void 0===t?a="#empty":void 0!==e(t).attr("id")&&(a=e(t).attr("id")),a!==!1&&void 0!==R[a])return R[a];if(t){try{var i=t.contentDocument||t.contentWindow.document;n=i.body.innerHTML}catch(r){}o=null!==n}else{try{var i=top.document;n=i.body.innerHTML}catch(r){}o=null!==n}return a!==!1&&(R[a]=o),o},L=function(e){var t=this.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}},z=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=["select","textarea"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(":focus"))},P=function(){var t,o=e(this),n=o.data(a),i=a+"_"+n.idx,r=e("#mCSB_"+n.idx+"_container"),l=r.parent(),s=e(".mCSB_"+n.idx+"_scrollbar ."+d[12]);s.bind("mousedown."+i+" touchstart."+i+" pointerdown."+i+" MSPointerDown."+i,function(o){c=!0,e(o.target).hasClass("mCSB_dragger")||(t=1)}).bind("touchend."+i+" pointerup."+i+" MSPointerUp."+i,function(){c=!1}).bind("click."+i,function(a){if(t&&(t=0,e(a.target).hasClass(d[12])||e(a.target).hasClass("mCSB_draggerRail"))){Q(o);var i=e(this),s=i.find(".mCSB_dragger");if(i.parent(".mCSB_scrollTools_horizontal").length>0){if(!n.overflowed[1])return;var c="x",u=a.pageX>s.offset().left?-1:1,f=Math.abs(r[0].offsetLeft)-u*(.9*l.width())}else{if(!n.overflowed[0])return;var c="y",u=a.pageY>s.offset().top?-1:1,f=Math.abs(r[0].offsetTop)-u*(.9*l.height())}G(o,f.toString(),{dir:c,scrollEasing:"mcsEaseInOut"})}})},H=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),l=r.parent();r.bind("focusin."+i,function(){var o=e(document.activeElement),a=r.find(".mCustomScrollBox").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(Q(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ae(o)[0],ae(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]=0&&a[0]+e[1]a");s.bind("contextmenu."+r,function(e){e.preventDefault()}).bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(a){function r(e,o){i.scrollAmount=n.scrollButtons.scrollAmount,j(t,e,o)}if(a.preventDefault(),ee(a)){var l=e(this).attr("class");switch(i.type=n.scrollButtons.scrollType,a.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===i.type)return;c=!0,o.tweenRunning=!1,r("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===i.type)return;c=!1,i.dir&&r("off",l);break;case"click":if("stepped"!==i.type||o.tweenRunning)return;r("on",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.keyboard.scrollAmount,"stepped"===r.type&&n.tweenRunning||j(o,e,t)}switch(t.type){case"blur":n.tweenRunning&&r.dir&&a("off",null);break;case"keydown":case"keyup":var l=t.keyCode?t.keyCode:t.which,s="on";if("x"!==i.axis&&(38===l||40===l)||"y"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;"keyup"===t.type&&(s="off"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type){Q(o);var f=34===l?-1:1;if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=Math.abs(c[0].offsetLeft)-f*(.9*d.width());else var h="y",m=Math.abs(c[0].offsetTop)-f*(.9*d.height());G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type)){if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h="y",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+"_"+n.idx,s=e("#mCSB_"+n.idx),c=e("#mCSB_"+n.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']",f=c.find("iframe"),h=["blur."+l+" keydown."+l+" keyup."+l];f.length&&f.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr("tabindex","0").bind(h[0],function(e){t(e)})},j=function(t,o,n,i,r){function l(e){u.snapAmount&&(f.scrollAmount=u.snapAmount instanceof Array?"x"===f.dir[0]?u.snapAmount[1]:u.snapAmount[0]:u.snapAmount);var o="stepped"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],m="x"===f.dir[0]?s[1]+f.dir[1]*(d[1]*n):s[0]+f.dir[1]*(d[0]*n),v="x"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),x="auto"!==f.scrollAmount?v:m,_=i?i:e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",w=!!e;return e&&17>a&&(x="x"===f.dir[0]?s[1]:s[0]),G(t,x.toString(),{dir:f.dir[0],scrollEasing:_,dur:a,onComplete:w}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),$(f,"step"),Q(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e("#mCSB_"+c.idx+"_container"),m="stepped"===f.type,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case"on":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?"x":"y",n===d[13]||n===d[15]||38===n||37===n?-1:1],Q(t),oe(n)&&"stepped"===f.type)return;l(m);break;case"off":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return"function"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||"x"===o.axis?null:t,n[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof n[0]&&(n[0]=n[0]()),"function"==typeof n[1]&&(n[1]=n[1]()),n},X=function(t,o){if(null!=t&&"undefined"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===r.axis?"x":"y");var d="x"===o?l.outerWidth(!1)-s.width():l.outerHeight(!1)-s.height(),f="x"===o?l[0].offsetLeft:l[0].offsetTop,h="x"===o?"left":"top";switch(c){case"function":return t();case"object":var m=t.jquery?t:e(t);if(!m.length)return;return"x"===o?ae(m)[1]:ae(m)[0];case"string":case"number":if(oe(t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(f-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var p=f+parseInt(t.split("+=")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf("px")&&oe(t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var m=l.find(":"+t);return"x"===o?ae(m)[1]:ae(m)[0]}return e(t).length?"x"===o?ae(e(t))[1]:ae(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},N=function(t){function o(){return clearTimeout(f[0].autoUpdate),0===l.parents("html").length?void(l=null):void(f[0].autoUpdate=setTimeout(function(){return c.advanced.updateOnSelectorChange&&(s.poll.change.n=i(),s.poll.change.n!==s.poll.change.o)?(s.poll.change.o=s.poll.change.n,void r(3)):c.advanced.updateOnContentResize&&(s.poll.size.n=l[0].scrollHeight+l[0].scrollWidth+f[0].offsetHeight+l[0].offsetHeight+l[0].offsetWidth,s.poll.size.n!==s.poll.size.o)?(s.poll.size.o=s.poll.size.n,void r(1)):!c.advanced.updateOnImageLoad||"auto"===c.advanced.updateOnImageLoad&&"y"===c.axis||(s.poll.img.n=f.find("img").length,s.poll.img.n===s.poll.img.o)?void((c.advanced.updateOnSelectorChange||c.advanced.updateOnContentResize||c.advanced.updateOnImageLoad)&&o()):(s.poll.img.o=s.poll.img.n,void f.find("img").each(function(){n(this)}))},c.advanced.autoUpdateTimeout))}function n(t){function o(e,t){return function(){ return t.apply(e,arguments)}}function a(){this.onload=null,e(t).addClass(d[2]),r(2)}if(e(t).hasClass(d[2]))return void r();var n=new Image;n.onload=o(n,a),n.src=t.src}function i(){c.advanced.updateOnSelectorChange===!0&&(c.advanced.updateOnSelectorChange="*");var e=0,t=f.find(c.advanced.updateOnSelectorChange);return c.advanced.updateOnSelectorChange&&t.length>0&&t.each(function(){e+=this.offsetHeight+this.offsetWidth}),e}function r(e){clearTimeout(f[0].autoUpdate),u.update.call(null,l[0],e)}var l=e(this),s=l.data(a),c=s.opt,f=e("#mCSB_"+s.idx+"_container");return t?(clearTimeout(f[0].autoUpdate),void $(f[0],"autoUpdate")):void o()},V=function(e,t,o){return Math.round(e/t)*t-o},Q=function(t){var o=t.data(a),n=e("#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal");n.each(function(){Z.call(this)})},G=function(t,o,n){function i(e){return s&&c.callbacks[e]&&"function"==typeof c.callbacks[e]}function r(){return[c.callbacks.alwaysTriggerOffsets||w>=S[0]+y,c.callbacks.alwaysTriggerOffsets||-B>=w]}function l(){var e=[h[0].offsetTop,h[0].offsetLeft],o=[x[0].offsetTop,x[0].offsetLeft],a=[h.outerHeight(!1),h.outerWidth(!1)],i=[f.height(),f.width()];t[0].mcs={content:h,top:e[0],left:e[1],draggerTop:o[0],draggerLeft:o[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(a[0])-i[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(a[1])-i[1])),direction:n.dir}}var s=t.data(a),c=s.opt,d={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:c.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=e.extend(d,n),u=[n.dur,n.drag?0:n.dur],f=e("#mCSB_"+s.idx),h=e("#mCSB_"+s.idx+"_container"),m=h.parent(),p=c.callbacks.onTotalScrollOffset?Y.call(t,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?Y.call(t,c.callbacks.onTotalScrollBackOffset):[0,0];if(s.trigger=n.trigger,0===m.scrollTop()&&0===m.scrollLeft()||(e(".mCSB_"+s.idx+"_scrollbar").css("visibility","visible"),m.scrollTop(0).scrollLeft(0)),"_resetY"!==o||s.contentReset.y||(i("onOverflowYNone")&&c.callbacks.onOverflowYNone.call(t[0]),s.contentReset.y=1),"_resetX"!==o||s.contentReset.x||(i("onOverflowXNone")&&c.callbacks.onOverflowXNone.call(t[0]),s.contentReset.x=1),"_resetY"!==o&&"_resetX"!==o){if(!s.contentReset.y&&t[0].mcs||!s.overflowed[0]||(i("onOverflowY")&&c.callbacks.onOverflowY.call(t[0]),s.contentReset.x=null),!s.contentReset.x&&t[0].mcs||!s.overflowed[1]||(i("onOverflowX")&&c.callbacks.onOverflowX.call(t[0]),s.contentReset.x=null),c.snapAmount){var v=c.snapAmount instanceof Array?"x"===n.dir?c.snapAmount[1]:c.snapAmount[0]:c.snapAmount;o=V(o,v,c.snapOffset)}switch(n.dir){case"x":var x=e("#mCSB_"+s.idx+"_dragger_horizontal"),_="left",w=h[0].offsetLeft,S=[f.width()-h.outerWidth(!1),x.parent().width()-x.width()],b=[o,0===o?0:o/s.scrollRatio.x],y=p[1],B=g[1],T=y>0?y/s.scrollRatio.x:0,k=B>0?B/s.scrollRatio.x:0;break;case"y":var x=e("#mCSB_"+s.idx+"_dragger_vertical"),_="top",w=h[0].offsetTop,S=[f.height()-h.outerHeight(!1),x.parent().height()-x.height()],b=[o,0===o?0:o/s.scrollRatio.y],y=p[0],B=g[0],T=y>0?y/s.scrollRatio.y:0,k=B>0?B/s.scrollRatio.y:0}b[1]<0||0===b[0]&&0===b[1]?b=[0,0]:b[1]>=S[1]?b=[S[0],S[1]]:b[0]=-b[0],t[0].mcs||(l(),i("onInit")&&c.callbacks.onInit.call(t[0])),clearTimeout(h[0].onCompleteTimeout),J(x[0],_,Math.round(b[1]),u[1],n.scrollEasing),!s.tweenRunning&&(0===w&&b[0]>=0||w===S[0]&&b[0]<=S[0])||J(h[0],_,Math.round(b[0]),u[0],n.scrollEasing,n.overwrite,{onStart:function(){n.callbacks&&n.onStart&&!s.tweenRunning&&(i("onScrollStart")&&(l(),c.callbacks.onScrollStart.call(t[0])),s.tweenRunning=!0,C(x),s.cbOffsets=r())},onUpdate:function(){n.callbacks&&n.onUpdate&&i("whileScrolling")&&(l(),c.callbacks.whileScrolling.call(t[0]))},onComplete:function(){if(n.callbacks&&n.onComplete){"yx"===c.axis&&clearTimeout(h[0].onCompleteTimeout);var e=h[0].idleTimer||0;h[0].onCompleteTimeout=setTimeout(function(){i("onScroll")&&(l(),c.callbacks.onScroll.call(t[0])),i("onTotalScroll")&&b[1]>=S[1]-T&&s.cbOffsets[0]&&(l(),c.callbacks.onTotalScroll.call(t[0])),i("onTotalScrollBack")&&b[1]<=k&&s.cbOffsets[1]&&(l(),c.callbacks.onTotalScrollBack.call(t[0])),s.tweenRunning=!1,h[0].idleTimer=0,C(x,"hide")},e)}}})}},J=function(e,t,o,a,n,i,r){function l(){S.stop||(x||m.call(),x=K()-v,s(),x>=S.time&&(S.time=x>S.time?x+f-(x-S.time):x+f-1,S.time0?(S.currVal=u(S.time,_,b,a,n),w[t]=Math.round(S.currVal)+"px"):w[t]=o+"px",p.call()}function c(){f=1e3/60,S.time=x+f,h=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return s(),setTimeout(e,.01)},S.id=h(l)}function d(){null!=S.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(S.id):clearTimeout(S.id),S.id=null)}function u(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return e/=a/2,1>e?o/2*e*e+t:(e--,-o/2*(e*(e-2)-1)+t);case"easeInOutStrong":return e/=a/2,1>e?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(-Math.pow(2,-10*e)+2)+t);case"easeInOut":case"mcsEaseInOut":return e/=a/2,1>e?o/2*e*e*e+t:(e-=2,o/2*(e*e*e+2)+t);case"easeOutSmooth":return e/=a,e--,-o*(e*e*e*e-1)+t;case"easeOutStrong":return o*(-Math.pow(2,-10*e/a)+1)+t;case"easeOut":case"mcsEaseOut":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}e._mTween||(e._mTween={top:{},left:{}});var f,h,r=r||{},m=r.onStart||function(){},p=r.onUpdate||function(){},g=r.onComplete||function(){},v=K(),x=0,_=e.offsetTop,w=e.style,S=e._mTween[t];"left"===t&&(_=e.offsetLeft);var b=o-_;S.stop=0,"none"!==i&&d(),c()},K=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},Z=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=["top","left"],o=0;o=0&&a[0]+ae(n)[0]=0&&a[1]+ae(n)[1]=0&&r[1]-i[1]*l[1][0]<0&&r[1]+n[1]-i[1]*l[1][1]>=0},mcsOverflow:e.expr[":"].mcsOverflow||function(t){var o=e(t).data(a);if(o)return o.overflowed[0]||o.overflowed[1]}})})})}); \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css index 45152c1bec..8f013dafa3 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css @@ -1,1267 +1,1267 @@ -/* -== malihu jquery custom scrollbar plugin == -Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller -*/ - - - -/* -CONTENTS: - 1. BASIC STYLE - Plugin's basic/essential CSS properties (normally, should not be edited). - 2. VERTICAL SCROLLBAR - Positioning and dimensions of vertical scrollbar. - 3. HORIZONTAL SCROLLBAR - Positioning and dimensions of horizontal scrollbar. - 4. VERTICAL AND HORIZONTAL SCROLLBARS - Positioning and dimensions of 2-axis scrollbars. - 5. TRANSITIONS - CSS3 transitions for hover events, auto-expanded and auto-hidden scrollbars. - 6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS - 6.1 THEMES - Scrollbar colors, opacity, dimensions, backgrounds etc. via ready-to-use themes. -*/ - - - -/* ------------------------------------------------------------------------------------------------------------------------- -1. BASIC STYLE ------------------------------------------------------------------------------------------------------------------------- -*/ - - .mCustomScrollbar{ -ms-touch-action: pinch-zoom; touch-action: pinch-zoom; /* direct pointer events to js */ } - .mCustomScrollbar.mCS_no_scrollbar, .mCustomScrollbar.mCS_touch_action{ -ms-touch-action: auto; touch-action: auto; } - - .mCustomScrollBox{ /* contains plugin's markup */ - position: relative; - overflow: hidden; - height: 100%; - max-width: 100%; - outline: none; - direction: ltr; - } - - .mCSB_container{ /* contains the original content */ - overflow: hidden; - width: auto; - height: auto; - } - - - -/* ------------------------------------------------------------------------------------------------------------------------- -2. VERTICAL SCROLLBAR -y-axis ------------------------------------------------------------------------------------------------------------------------- -*/ - - .mCSB_inside > .mCSB_container{ margin-right: 30px; } - - .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-right: 0; } /* non-visible scrollbar */ - - .mCS-dir-rtl > .mCSB_inside > .mCSB_container{ /* RTL direction/left-side scrollbar */ - margin-right: 0; - margin-left: 30px; - } - - .mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-left: 0; } /* RTL direction/left-side scrollbar */ - - .mCSB_scrollTools{ /* contains scrollbar markup (draggable element, dragger rail, buttons etc.) */ - position: absolute; - width: 16px; - height: auto; - left: auto; - top: 0; - right: 0; - bottom: 0; - } - - .mCSB_outside + .mCSB_scrollTools{ right: -26px; } /* scrollbar position: outside */ - - .mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools, - .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ /* RTL direction/left-side scrollbar */ - right: auto; - left: 0; - } - - .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ left: -26px; } /* RTL direction/left-side scrollbar (scrollbar position: outside) */ - - .mCSB_scrollTools .mCSB_draggerContainer{ /* contains the draggable element and dragger rail markup */ - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - height: auto; - } - - .mCSB_scrollTools a + .mCSB_draggerContainer{ margin: 20px 0; } - - .mCSB_scrollTools .mCSB_draggerRail{ - width: 2px; - height: 100%; - margin: 0 auto; - -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; - } - - .mCSB_scrollTools .mCSB_dragger{ /* the draggable element */ - cursor: pointer; - width: 100%; - height: 30px; /* minimum dragger height */ - z-index: 1; - } - - .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ /* the dragger element */ - position: relative; - width: 4px; - height: 100%; - margin: 0 auto; - -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; - text-align: center; - } - - .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, - .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ width: 12px; /* auto-expanded scrollbar */ } - - .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 8px; /* auto-expanded scrollbar */ } - - .mCSB_scrollTools .mCSB_buttonUp, - .mCSB_scrollTools .mCSB_buttonDown{ - display: block; - position: absolute; - height: 20px; - width: 100%; - overflow: hidden; - margin: 0 auto; - cursor: pointer; - } - - .mCSB_scrollTools .mCSB_buttonDown{ bottom: 0; } - - - -/* ------------------------------------------------------------------------------------------------------------------------- -3. HORIZONTAL SCROLLBAR -x-axis ------------------------------------------------------------------------------------------------------------------------- -*/ - - .mCSB_horizontal.mCSB_inside > .mCSB_container{ - margin-right: 0; - margin-bottom: 30px; - } - - .mCSB_horizontal.mCSB_outside > .mCSB_container{ min-height: 100%; } - - .mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } /* non-visible scrollbar */ - - .mCSB_scrollTools.mCSB_scrollTools_horizontal{ - width: auto; - height: 16px; - top: auto; - right: 0; - bottom: 0; - left: 0; - } - - .mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal, - .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ bottom: -26px; } /* scrollbar position: outside */ - - .mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer{ margin: 0 20px; } - - .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{ - width: 100%; - height: 2px; - margin: 7px 0; - } - - .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{ - width: 30px; /* minimum dragger width */ - height: 100%; - left: 0; - } - - .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - width: 100%; - height: 4px; - margin: 6px auto; - } - - .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, - .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ - height: 12px; /* auto-expanded scrollbar */ - margin: 2px auto; - } - - .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ - height: 8px; /* auto-expanded scrollbar */ - margin: 4px 0; - } - - .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft, - .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ - display: block; - position: absolute; - width: 20px; - height: 100%; - overflow: hidden; - margin: 0 auto; - cursor: pointer; - } - - .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{ left: 0; } - - .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ right: 0; } - - - -/* ------------------------------------------------------------------------------------------------------------------------- -4. VERTICAL AND HORIZONTAL SCROLLBARS -yx-axis ------------------------------------------------------------------------------------------------------------------------- -*/ - - .mCSB_container_wrapper{ - position: absolute; - height: auto; - width: auto; - overflow: hidden; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin-right: 30px; - margin-bottom: 30px; - } - - .mCSB_container_wrapper > .mCSB_container{ - padding-right: 30px; - padding-bottom: 30px; - -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; - } - - .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 20px; } - - .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 20px; } - - /* non-visible horizontal scrollbar */ - .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 0; } - - /* non-visible vertical scrollbar/RTL direction/left-side scrollbar */ - .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal, - .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 0; } - - /* RTL direction/left-side scrollbar */ - .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 20px; } - - /* non-visible scrollbar/RTL direction/left-side scrollbar */ - .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 0; } - - .mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper{ /* RTL direction/left-side scrollbar */ - margin-right: 0; - margin-left: 30px; - } - - .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container{ padding-right: 0; } - - .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container{ padding-bottom: 0; } - - .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{ - margin-right: 0; /* non-visible scrollbar */ - margin-left: 0; - } - - /* non-visible horizontal scrollbar */ - .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } - - - -/* ------------------------------------------------------------------------------------------------------------------------- -5. TRANSITIONS ------------------------------------------------------------------------------------------------------------------------- -*/ - - .mCSB_scrollTools, - .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCSB_scrollTools .mCSB_buttonUp, - .mCSB_scrollTools .mCSB_buttonDown, - .mCSB_scrollTools .mCSB_buttonLeft, - .mCSB_scrollTools .mCSB_buttonRight{ - -webkit-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; - -moz-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; - -o-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; - transition: opacity .2s ease-in-out, background-color .2s ease-in-out; - } - - .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, /* auto-expanded scrollbar */ - .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail, - .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, - .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail{ - -webkit-transition: width .2s ease-out .2s, height .2s ease-out .2s, - margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, - margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, - opacity .2s ease-in-out, background-color .2s ease-in-out; - -moz-transition: width .2s ease-out .2s, height .2s ease-out .2s, - margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, - margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, - opacity .2s ease-in-out, background-color .2s ease-in-out; - -o-transition: width .2s ease-out .2s, height .2s ease-out .2s, - margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, - margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, - opacity .2s ease-in-out, background-color .2s ease-in-out; - transition: width .2s ease-out .2s, height .2s ease-out .2s, - margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, - margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, - opacity .2s ease-in-out, background-color .2s ease-in-out; - } - - - -/* ------------------------------------------------------------------------------------------------------------------------- -6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS ------------------------------------------------------------------------------------------------------------------------- -*/ - - /* - ---------------------------------------- - 6.1 THEMES - ---------------------------------------- - */ - - /* default theme ("light") */ - - .mCSB_scrollTools{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; } - - .mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools, - .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 0; filter: "alpha(opacity=0)"; -ms-filter: "alpha(opacity=0)"; } - - .mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag, - .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag, - .mCustomScrollBox:hover > .mCSB_scrollTools, - .mCustomScrollBox:hover ~ .mCSB_scrollTools, - .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools, - .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 1; filter: "alpha(opacity=100)"; -ms-filter: "alpha(opacity=100)"; } - - .mCSB_scrollTools .mCSB_draggerRail{ - background-color: #000; background-color: rgba(0,0,0,0.4); - filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; - } - - .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - background-color: #fff; background-color: rgba(255,255,255,0.75); - filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; - } - - .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ - background-color: #fff; background-color: rgba(255,255,255,0.85); - filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)"; - } - .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ - background-color: #fff; background-color: rgba(255,255,255,0.9); - filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; - } - - .mCSB_scrollTools .mCSB_buttonUp, - .mCSB_scrollTools .mCSB_buttonDown, - .mCSB_scrollTools .mCSB_buttonLeft, - .mCSB_scrollTools .mCSB_buttonRight{ - background-image: url(mCSB_buttons.png); /* css sprites */ - background-repeat: no-repeat; - opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; - } - - .mCSB_scrollTools .mCSB_buttonUp{ - background-position: 0 0; - /* - sprites locations - light: 0 0, -16px 0, -32px 0, -48px 0, 0 -72px, -16px -72px, -32px -72px - dark: -80px 0, -96px 0, -112px 0, -128px 0, -80px -72px, -96px -72px, -112px -72px - */ - } - - .mCSB_scrollTools .mCSB_buttonDown{ - background-position: 0 -20px; - /* - sprites locations - light: 0 -20px, -16px -20px, -32px -20px, -48px -20px, 0 -92px, -16px -92px, -32px -92px - dark: -80px -20px, -96px -20px, -112px -20px, -128px -20px, -80px -92px, -96px -92px, -112 -92px - */ - } - - .mCSB_scrollTools .mCSB_buttonLeft{ - background-position: 0 -40px; - /* - sprites locations - light: 0 -40px, -20px -40px, -40px -40px, -60px -40px, 0 -112px, -20px -112px, -40px -112px - dark: -80px -40px, -100px -40px, -120px -40px, -140px -40px, -80px -112px, -100px -112px, -120px -112px - */ - } - - .mCSB_scrollTools .mCSB_buttonRight{ - background-position: 0 -56px; - /* - sprites locations - light: 0 -56px, -20px -56px, -40px -56px, -60px -56px, 0 -128px, -20px -128px, -40px -128px - dark: -80px -56px, -100px -56px, -120px -56px, -140px -56px, -80px -128px, -100px -128px, -120px -128px - */ - } - - .mCSB_scrollTools .mCSB_buttonUp:hover, - .mCSB_scrollTools .mCSB_buttonDown:hover, - .mCSB_scrollTools .mCSB_buttonLeft:hover, - .mCSB_scrollTools .mCSB_buttonRight:hover{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; } - - .mCSB_scrollTools .mCSB_buttonUp:active, - .mCSB_scrollTools .mCSB_buttonDown:active, - .mCSB_scrollTools .mCSB_buttonLeft:active, - .mCSB_scrollTools .mCSB_buttonRight:active{ opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; } - - - /* theme: "dark" */ - - .mCS-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } - - .mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } - - .mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.85); } - - .mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.9); } - - .mCS-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; } - - .mCS-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; } - - .mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; } - - .mCS-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; } - - /* ---------------------------------------- */ - - - - /* theme: "light-2", "dark-2" */ - - .mCS-light-2.mCSB_scrollTools .mCSB_draggerRail, - .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{ - width: 4px; - background-color: #fff; background-color: rgba(255,255,255,0.1); - -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; - } - - .mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - width: 4px; - background-color: #fff; background-color: rgba(255,255,255,0.75); - -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; - } - - .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - width: 100%; - height: 4px; - margin: 6px auto; - } - - .mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } - - .mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } - - .mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px 0; } - - .mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -20px; } - - .mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -40px; } - - .mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -56px; } - - - /* theme: "dark-2" */ - - .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{ - background-color: #000; background-color: rgba(0,0,0,0.1); - -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; - } - - .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - background-color: #000; background-color: rgba(0,0,0,0.75); - -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; - } - - .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } - - .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } - - .mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px 0; } - - .mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -20px; } - - .mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -40px; } - - .mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -56px; } - - /* ---------------------------------------- */ - - - - /* theme: "light-thick", "dark-thick" */ - - .mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail, - .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{ - width: 4px; - background-color: #fff; background-color: rgba(255,255,255,0.1); - -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; - } - - .mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - width: 6px; - background-color: #fff; background-color: rgba(255,255,255,0.75); - -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; - } - - .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{ - width: 100%; - height: 4px; - margin: 6px 0; - } - - .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - width: 100%; - height: 6px; - margin: 5px auto; - } - - .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } - - .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } - - .mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px 0; } - - .mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -20px; } - - .mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -40px; } - - .mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -56px; } - - - /* theme: "dark-thick" */ - - .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{ - background-color: #000; background-color: rgba(0,0,0,0.1); - -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; - } - - .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - background-color: #000; background-color: rgba(0,0,0,0.75); - -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; - } - - .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } - - .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } - - .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px 0; } - - .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -20px; } - - .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -40px; } - - .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -56px; } - - /* ---------------------------------------- */ - - - - /* theme: "light-thin", "dark-thin" */ - - .mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.1); } - - .mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 2px; } - - .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{ width: 100%; } - - .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - width: 100%; - height: 2px; - margin: 7px auto; - } - - - /* theme "dark-thin" */ - - .mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } - - .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } - - .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } - - .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } - - .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; } - - .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; } - - .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; } - - .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; } - - /* ---------------------------------------- */ - - - - /* theme "rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark" */ - - .mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.15); } - - .mCS-rounded.mCSB_scrollTools .mCSB_dragger, - .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger, - .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger{ height: 14px; } - - .mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - width: 14px; - margin: 0 1px; - } - - .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger, - .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger, - .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger, - .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 14px; } - - .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - height: 14px; - margin: 1px 0; - } - - .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, - .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, - .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ - width: 16px; /* auto-expanded scrollbar */ - height: 16px; - margin: -1px 0; - } - - .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, - .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 4px; /* auto-expanded scrollbar */ } - - .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, - .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, - .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ - height: 16px; /* auto-expanded scrollbar */ - width: 16px; - margin: 0 -1px; - } - - .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, - .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ - height: 4px; /* auto-expanded scrollbar */ - margin: 6px 0; - } - - .mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{ background-position: 0 -72px; } - - .mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{ background-position: 0 -92px; } - - .mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{ background-position: 0 -112px; } - - .mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{ background-position: 0 -128px; } - - - /* theme "rounded-dark", "rounded-dots-dark" */ - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px -72px; } - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -92px; } - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -112px; } - - .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -128px; } - - - /* theme "rounded-dots", "rounded-dots-dark" */ - - .mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail, - .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail{ width: 4px; } - - .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail, - .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ - background-color: transparent; - background-position: center; - } - - .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{ - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg=="); - background-repeat: repeat-y; - opacity: 0.3; - filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; - } - - .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ - height: 4px; - margin: 6px 0; - background-repeat: repeat-x; - } - - .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px -72px; } - - .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -92px; } - - .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -112px; } - - .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -128px; } - - - /* theme "rounded-dots-dark" */ - - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{ - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII="); - } - - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px -72px; } - - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -92px; } - - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -112px; } - - .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -128px; } - - /* ---------------------------------------- */ - - - - /* theme "3d", "3d-dark", "3d-thick", "3d-thick-dark" */ - - .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - background-repeat: repeat-y; - background-image: -moz-linear-gradient(left, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); - background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0))); - background-image: -webkit-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - background-image: -o-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - background-image: -ms-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - } - - .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - background-repeat: repeat-x; - background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0))); - background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - background-image: -o-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); - } - - - /* theme "3d", "3d-dark" */ - - .mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger, - .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 70px; } - - .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger, - .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 70px; } - - .mCS-3d.mCSB_scrollTools, - .mCS-3d-dark.mCSB_scrollTools{ - opacity: 1; - filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; - } - - .mCS-3d.mCSB_scrollTools .mCSB_draggerRail, - .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail, - .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; } - - .mCS-3d.mCSB_scrollTools .mCSB_draggerRail, - .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{ - width: 8px; - background-color: #000; background-color: rgba(0,0,0,0.2); - box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2); - } - - .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, - .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; } - - .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 8px; } - - .mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ - width: 100%; - height: 8px; - margin: 4px 0; - box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2); - } - - .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - width: 100%; - height: 8px; - margin: 4px auto; - } - - .mCS-3d.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } - - .mCS-3d.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } - - .mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } - - .mCS-3d.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } - - - /* theme "3d-dark" */ - - .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{ - background-color: #000; background-color: rgba(0,0,0,0.1); - box-shadow: inset 1px 0 1px rgba(0,0,0,0.1); - } - - .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); } - - .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } - - .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } - - .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } - - .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } - - /* ---------------------------------------- */ - - - - /* theme: "3d-thick", "3d-thick-dark" */ - - .mCS-3d-thick.mCSB_scrollTools, - .mCS-3d-thick-dark.mCSB_scrollTools{ - opacity: 1; - filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; - } - - .mCS-3d-thick.mCSB_scrollTools, - .mCS-3d-thick-dark.mCSB_scrollTools, - .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer, - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } - - .mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical, - .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ right: 1px; } - - .mCS-3d-thick.mCSB_scrollTools_vertical, - .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); } - - .mCS-3d-thick.mCSB_scrollTools_horizontal, - .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ - bottom: 1px; - box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); - } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - box-shadow: inset 1px 0 0 rgba(255,255,255,0.4); - width: 12px; - margin: 2px; - position: absolute; - height: auto; - top: 0; - bottom: 0; - left: 0; - right: 0; - } - - .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, - .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; } - - .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - height: 12px; - width: auto; - } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{ - background-color: #000; background-color: rgba(0,0,0,0.05); - box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); - } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } - - .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } - - - /* theme: "3d-thick-dark" */ - - .mCS-3d-thick-dark.mCSB_scrollTools{ box-shadow: inset 0 0 14px rgba(0,0,0,0.2); } - - .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); } - - .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #777; } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ - background-color: #fff; background-color: rgba(0,0,0,0.05); - box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); - } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } - - .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } - - /* ---------------------------------------- */ - - - - /* theme: "minimal", "minimal-dark" */ - - .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, - .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{ - right: 0; - margin: 12px 0; - } - - .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal, - .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal, - .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal, - .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ - bottom: 0; - margin: 0 12px; - } - - /* RTL direction/left-side scrollbar */ - .mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, - .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{ - left: 0; - right: auto; - } - - .mCS-minimal.mCSB_scrollTools .mCSB_draggerRail, - .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } - - .mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger, - .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 50px; } - - .mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger, - .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 50px; } - - .mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - background-color: #fff; background-color: rgba(255,255,255,0.2); - filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)"; - } - - .mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ - background-color: #fff; background-color: rgba(255,255,255,0.5); - filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)"; - } - - - /* theme: "minimal-dark" */ - - .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - background-color: #000; background-color: rgba(0,0,0,0.2); - filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)"; - } - - .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ - background-color: #000; background-color: rgba(0,0,0,0.5); - filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)"; - } - - /* ---------------------------------------- */ - - - - /* theme "light-3", "dark-3" */ - - .mCS-light-3.mCSB_scrollTools .mCSB_draggerRail, - .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ - width: 6px; - background-color: #000; background-color: rgba(0,0,0,0.2); - } - - .mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 6px; } - - .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{ - width: 100%; - height: 6px; - margin: 5px 0; - } - - .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, - .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ - width: 12px; - } - - .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, - .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, - .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ - height: 12px; - margin: 2px 0; - } - - .mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } - - .mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } - - .mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } - - .mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } - - - /* theme "dark-3" */ - - .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } - - .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } - - .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } - - .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); } - - .mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } - - .mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } - - .mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } - - .mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } - - /* ---------------------------------------- */ - - - - /* theme "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark" */ - - .mCS-inset.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ - width: 12px; - background-color: #000; background-color: rgba(0,0,0,0.2); - } - - .mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ - width: 6px; - margin: 3px 5px; - position: absolute; - height: auto; - top: 0; - bottom: 0; - left: 0; - right: 0; - } - - .mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ - height: 6px; - margin: 5px 3px; - position: absolute; - width: auto; - top: 0; - bottom: 0; - left: 0; - right: 0; - } - - .mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, - .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ - width: 100%; - height: 12px; - margin: 2px 0; - } - - .mCS-inset.mCSB_scrollTools .mCSB_buttonUp, - .mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp, - .mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } - - .mCS-inset.mCSB_scrollTools .mCSB_buttonDown, - .mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown, - .mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } - - .mCS-inset.mCSB_scrollTools .mCSB_buttonLeft, - .mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft, - .mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } - - .mCS-inset.mCSB_scrollTools .mCSB_buttonRight, - .mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight, - .mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } - - - /* theme "inset-dark", "inset-2-dark", "inset-3-dark" */ - - .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } - - .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } - - .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } - - .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); } - - .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } - - .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } - - .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } - - .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } - - - /* theme "inset-2", "inset-2-dark" */ - - .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ - background-color: transparent; - border-width: 1px; - border-style: solid; - border-color: #fff; - border-color: rgba(255,255,255,0.2); - -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; - } - - .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ border-color: #000; border-color: rgba(0,0,0,0.2); } - - - /* theme "inset-3", "inset-3-dark" */ - - .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.6); } - - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.6); } - - .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } - - .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } - - .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } - - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.75); } - - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } - - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, - .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } - - /* ---------------------------------------- */ +/* +== malihu jquery custom scrollbar plugin == +Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller +*/ + + + +/* +CONTENTS: + 1. BASIC STYLE - Plugin's basic/essential CSS properties (normally, should not be edited). + 2. VERTICAL SCROLLBAR - Positioning and dimensions of vertical scrollbar. + 3. HORIZONTAL SCROLLBAR - Positioning and dimensions of horizontal scrollbar. + 4. VERTICAL AND HORIZONTAL SCROLLBARS - Positioning and dimensions of 2-axis scrollbars. + 5. TRANSITIONS - CSS3 transitions for hover events, auto-expanded and auto-hidden scrollbars. + 6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS + 6.1 THEMES - Scrollbar colors, opacity, dimensions, backgrounds etc. via ready-to-use themes. +*/ + + + +/* +------------------------------------------------------------------------------------------------------------------------ +1. BASIC STYLE +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCustomScrollbar{ -ms-touch-action: pinch-zoom; touch-action: pinch-zoom; /* direct pointer events to js */ } + .mCustomScrollbar.mCS_no_scrollbar, .mCustomScrollbar.mCS_touch_action{ -ms-touch-action: auto; touch-action: auto; } + + .mCustomScrollBox{ /* contains plugin's markup */ + position: relative; + overflow: hidden; + height: 100%; + max-width: 100%; + outline: none; + direction: ltr; + } + + .mCSB_container{ /* contains the original content */ + overflow: hidden; + width: auto; + height: auto; + } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +2. VERTICAL SCROLLBAR +y-axis +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_inside > .mCSB_container{ margin-right: 30px; } + + .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-right: 0; } /* non-visible scrollbar */ + + .mCS-dir-rtl > .mCSB_inside > .mCSB_container{ /* RTL direction/left-side scrollbar */ + margin-right: 0; + margin-left: 30px; + } + + .mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-left: 0; } /* RTL direction/left-side scrollbar */ + + .mCSB_scrollTools{ /* contains scrollbar markup (draggable element, dragger rail, buttons etc.) */ + position: absolute; + width: 16px; + height: auto; + left: auto; + top: 0; + right: 0; + bottom: 0; + } + + .mCSB_outside + .mCSB_scrollTools{ right: -26px; } /* scrollbar position: outside */ + + .mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools, + .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ /* RTL direction/left-side scrollbar */ + right: auto; + left: 0; + } + + .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ left: -26px; } /* RTL direction/left-side scrollbar (scrollbar position: outside) */ + + .mCSB_scrollTools .mCSB_draggerContainer{ /* contains the draggable element and dragger rail markup */ + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: auto; + } + + .mCSB_scrollTools a + .mCSB_draggerContainer{ margin: 20px 0; } + + .mCSB_scrollTools .mCSB_draggerRail{ + width: 2px; + height: 100%; + margin: 0 auto; + -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; + } + + .mCSB_scrollTools .mCSB_dragger{ /* the draggable element */ + cursor: pointer; + width: 100%; + height: 30px; /* minimum dragger height */ + z-index: 1; + } + + .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ /* the dragger element */ + position: relative; + width: 4px; + height: 100%; + margin: 0 auto; + -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; + text-align: center; + } + + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ width: 12px; /* auto-expanded scrollbar */ } + + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 8px; /* auto-expanded scrollbar */ } + + .mCSB_scrollTools .mCSB_buttonUp, + .mCSB_scrollTools .mCSB_buttonDown{ + display: block; + position: absolute; + height: 20px; + width: 100%; + overflow: hidden; + margin: 0 auto; + cursor: pointer; + } + + .mCSB_scrollTools .mCSB_buttonDown{ bottom: 0; } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +3. HORIZONTAL SCROLLBAR +x-axis +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_horizontal.mCSB_inside > .mCSB_container{ + margin-right: 0; + margin-bottom: 30px; + } + + .mCSB_horizontal.mCSB_outside > .mCSB_container{ min-height: 100%; } + + .mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } /* non-visible scrollbar */ + + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ + width: auto; + height: 16px; + top: auto; + right: 0; + bottom: 0; + left: 0; + } + + .mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ bottom: -26px; } /* scrollbar position: outside */ + + .mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer{ margin: 0 20px; } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 2px; + margin: 7px 0; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{ + width: 30px; /* minimum dragger width */ + height: 100%; + left: 0; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 4px; + margin: 6px auto; + } + + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ + height: 12px; /* auto-expanded scrollbar */ + margin: 2px auto; + } + + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + height: 8px; /* auto-expanded scrollbar */ + margin: 4px 0; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft, + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ + display: block; + position: absolute; + width: 20px; + height: 100%; + overflow: hidden; + margin: 0 auto; + cursor: pointer; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{ left: 0; } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ right: 0; } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +4. VERTICAL AND HORIZONTAL SCROLLBARS +yx-axis +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_container_wrapper{ + position: absolute; + height: auto; + width: auto; + overflow: hidden; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin-right: 30px; + margin-bottom: 30px; + } + + .mCSB_container_wrapper > .mCSB_container{ + padding-right: 30px; + padding-bottom: 30px; + -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; + } + + .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 20px; } + + .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 20px; } + + /* non-visible horizontal scrollbar */ + .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 0; } + + /* non-visible vertical scrollbar/RTL direction/left-side scrollbar */ + .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 0; } + + /* RTL direction/left-side scrollbar */ + .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 20px; } + + /* non-visible scrollbar/RTL direction/left-side scrollbar */ + .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 0; } + + .mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper{ /* RTL direction/left-side scrollbar */ + margin-right: 0; + margin-left: 30px; + } + + .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container{ padding-right: 0; } + + .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container{ padding-bottom: 0; } + + .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{ + margin-right: 0; /* non-visible scrollbar */ + margin-left: 0; + } + + /* non-visible horizontal scrollbar */ + .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +5. TRANSITIONS +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_scrollTools, + .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCSB_scrollTools .mCSB_buttonUp, + .mCSB_scrollTools .mCSB_buttonDown, + .mCSB_scrollTools .mCSB_buttonLeft, + .mCSB_scrollTools .mCSB_buttonRight{ + -webkit-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + -moz-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + -o-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + } + + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, /* auto-expanded scrollbar */ + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail{ + -webkit-transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + -moz-transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + -o-transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS +------------------------------------------------------------------------------------------------------------------------ +*/ + + /* + ---------------------------------------- + 6.1 THEMES + ---------------------------------------- + */ + + /* default theme ("light") */ + + .mCSB_scrollTools{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; } + + .mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools, + .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 0; filter: "alpha(opacity=0)"; -ms-filter: "alpha(opacity=0)"; } + + .mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag, + .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag, + .mCustomScrollBox:hover > .mCSB_scrollTools, + .mCustomScrollBox:hover ~ .mCSB_scrollTools, + .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools, + .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 1; filter: "alpha(opacity=100)"; -ms-filter: "alpha(opacity=100)"; } + + .mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.4); + filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; + } + + .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.75); + filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; + } + + .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.85); + filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)"; + } + .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.9); + filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; + } + + .mCSB_scrollTools .mCSB_buttonUp, + .mCSB_scrollTools .mCSB_buttonDown, + .mCSB_scrollTools .mCSB_buttonLeft, + .mCSB_scrollTools .mCSB_buttonRight{ + background-image: url(mCSB_buttons.png); /* css sprites */ + background-repeat: no-repeat; + opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; + } + + .mCSB_scrollTools .mCSB_buttonUp{ + background-position: 0 0; + /* + sprites locations + light: 0 0, -16px 0, -32px 0, -48px 0, 0 -72px, -16px -72px, -32px -72px + dark: -80px 0, -96px 0, -112px 0, -128px 0, -80px -72px, -96px -72px, -112px -72px + */ + } + + .mCSB_scrollTools .mCSB_buttonDown{ + background-position: 0 -20px; + /* + sprites locations + light: 0 -20px, -16px -20px, -32px -20px, -48px -20px, 0 -92px, -16px -92px, -32px -92px + dark: -80px -20px, -96px -20px, -112px -20px, -128px -20px, -80px -92px, -96px -92px, -112 -92px + */ + } + + .mCSB_scrollTools .mCSB_buttonLeft{ + background-position: 0 -40px; + /* + sprites locations + light: 0 -40px, -20px -40px, -40px -40px, -60px -40px, 0 -112px, -20px -112px, -40px -112px + dark: -80px -40px, -100px -40px, -120px -40px, -140px -40px, -80px -112px, -100px -112px, -120px -112px + */ + } + + .mCSB_scrollTools .mCSB_buttonRight{ + background-position: 0 -56px; + /* + sprites locations + light: 0 -56px, -20px -56px, -40px -56px, -60px -56px, 0 -128px, -20px -128px, -40px -128px + dark: -80px -56px, -100px -56px, -120px -56px, -140px -56px, -80px -128px, -100px -128px, -120px -128px + */ + } + + .mCSB_scrollTools .mCSB_buttonUp:hover, + .mCSB_scrollTools .mCSB_buttonDown:hover, + .mCSB_scrollTools .mCSB_buttonLeft:hover, + .mCSB_scrollTools .mCSB_buttonRight:hover{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; } + + .mCSB_scrollTools .mCSB_buttonUp:active, + .mCSB_scrollTools .mCSB_buttonDown:active, + .mCSB_scrollTools .mCSB_buttonLeft:active, + .mCSB_scrollTools .mCSB_buttonRight:active{ opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; } + + + /* theme: "dark" */ + + .mCS-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } + + .mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.85); } + + .mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.9); } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; } + + /* ---------------------------------------- */ + + + + /* theme: "light-2", "dark-2" */ + + .mCS-light-2.mCSB_scrollTools .mCSB_draggerRail, + .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{ + width: 4px; + background-color: #fff; background-color: rgba(255,255,255,0.1); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 4px; + background-color: #fff; background-color: rgba(255,255,255,0.75); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 4px; + margin: 6px auto; + } + + .mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } + + .mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px 0; } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -20px; } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -40px; } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -56px; } + + + /* theme: "dark-2" */ + + .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.1); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.75); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px 0; } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -20px; } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -40px; } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -56px; } + + /* ---------------------------------------- */ + + + + /* theme: "light-thick", "dark-thick" */ + + .mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail, + .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{ + width: 4px; + background-color: #fff; background-color: rgba(255,255,255,0.1); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 6px; + background-color: #fff; background-color: rgba(255,255,255,0.75); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 4px; + margin: 6px 0; + } + + .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 6px; + margin: 5px auto; + } + + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } + + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px 0; } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -20px; } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -40px; } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -56px; } + + + /* theme: "dark-thick" */ + + .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.1); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.75); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px 0; } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -20px; } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -40px; } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -56px; } + + /* ---------------------------------------- */ + + + + /* theme: "light-thin", "dark-thin" */ + + .mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.1); } + + .mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 2px; } + + .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{ width: 100%; } + + .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 2px; + margin: 7px auto; + } + + + /* theme "dark-thin" */ + + .mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; } + + /* ---------------------------------------- */ + + + + /* theme "rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark" */ + + .mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.15); } + + .mCS-rounded.mCSB_scrollTools .mCSB_dragger, + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger, + .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger{ height: 14px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 14px; + margin: 0 1px; + } + + .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 14px; } + + .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + height: 14px; + margin: 1px 0; + } + + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ + width: 16px; /* auto-expanded scrollbar */ + height: 16px; + margin: -1px 0; + } + + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 4px; /* auto-expanded scrollbar */ } + + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ + height: 16px; /* auto-expanded scrollbar */ + width: 16px; + margin: 0 -1px; + } + + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + height: 4px; /* auto-expanded scrollbar */ + margin: 6px 0; + } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{ background-position: 0 -72px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{ background-position: 0 -92px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{ background-position: 0 -112px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{ background-position: 0 -128px; } + + + /* theme "rounded-dark", "rounded-dots-dark" */ + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px -72px; } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -92px; } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -112px; } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -128px; } + + + /* theme "rounded-dots", "rounded-dots-dark" */ + + .mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail{ width: 4px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + background-color: transparent; + background-position: center; + } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg=="); + background-repeat: repeat-y; + opacity: 0.3; + filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; + } + + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + height: 4px; + margin: 6px 0; + background-repeat: repeat-x; + } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px -72px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -92px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -112px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -128px; } + + + /* theme "rounded-dots-dark" */ + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII="); + } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px -72px; } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -92px; } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -112px; } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -128px; } + + /* ---------------------------------------- */ + + + + /* theme "3d", "3d-dark", "3d-thick", "3d-thick-dark" */ + + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-repeat: repeat-y; + background-image: -moz-linear-gradient(left, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); + background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0))); + background-image: -webkit-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -o-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -ms-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + background-repeat: repeat-x; + background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0))); + background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -o-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + } + + + /* theme "3d", "3d-dark" */ + + .mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger, + .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 70px; } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 70px; } + + .mCS-3d.mCSB_scrollTools, + .mCS-3d-dark.mCSB_scrollTools{ + opacity: 1; + filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; + } + + .mCS-3d.mCSB_scrollTools .mCSB_draggerRail, + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; } + + .mCS-3d.mCSB_scrollTools .mCSB_draggerRail, + .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{ + width: 8px; + background-color: #000; background-color: rgba(0,0,0,0.2); + box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2); + } + + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; } + + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 8px; } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 8px; + margin: 4px 0; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2); + } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 8px; + margin: 4px auto; + } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme "3d-dark" */ + + .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.1); + box-shadow: inset 1px 0 1px rgba(0,0,0,0.1); + } + + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + /* ---------------------------------------- */ + + + + /* theme: "3d-thick", "3d-thick-dark" */ + + .mCS-3d-thick.mCSB_scrollTools, + .mCS-3d-thick-dark.mCSB_scrollTools{ + opacity: 1; + filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; + } + + .mCS-3d-thick.mCSB_scrollTools, + .mCS-3d-thick-dark.mCSB_scrollTools, + .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } + + .mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical, + .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ right: 1px; } + + .mCS-3d-thick.mCSB_scrollTools_vertical, + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); } + + .mCS-3d-thick.mCSB_scrollTools_horizontal, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ + bottom: 1px; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); + } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + box-shadow: inset 1px 0 0 rgba(255,255,255,0.4); + width: 12px; + margin: 2px; + position: absolute; + height: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; } + + .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + height: 12px; + width: auto; + } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{ + background-color: #000; background-color: rgba(0,0,0,0.05); + box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); + } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme: "3d-thick-dark" */ + + .mCS-3d-thick-dark.mCSB_scrollTools{ box-shadow: inset 0 0 14px rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #777; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ + background-color: #fff; background-color: rgba(0,0,0,0.05); + box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); + } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + /* ---------------------------------------- */ + + + + /* theme: "minimal", "minimal-dark" */ + + .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, + .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{ + right: 0; + margin: 12px 0; + } + + .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ + bottom: 0; + margin: 0 12px; + } + + /* RTL direction/left-side scrollbar */ + .mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, + .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{ + left: 0; + right: auto; + } + + .mCS-minimal.mCSB_scrollTools .mCSB_draggerRail, + .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } + + .mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger, + .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 50px; } + + .mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 50px; } + + .mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.2); + filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)"; + } + + .mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.5); + filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)"; + } + + + /* theme: "minimal-dark" */ + + .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.2); + filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)"; + } + + .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.5); + filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)"; + } + + /* ---------------------------------------- */ + + + + /* theme "light-3", "dark-3" */ + + .mCS-light-3.mCSB_scrollTools .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ + width: 6px; + background-color: #000; background-color: rgba(0,0,0,0.2); + } + + .mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 6px; } + + .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 6px; + margin: 5px 0; + } + + .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + width: 12px; + } + + .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + height: 12px; + margin: 2px 0; + } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme "dark-3" */ + + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + /* ---------------------------------------- */ + + + + /* theme "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark" */ + + .mCS-inset.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ + width: 12px; + background-color: #000; background-color: rgba(0,0,0,0.2); + } + + .mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 6px; + margin: 3px 5px; + position: absolute; + height: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + height: 6px; + margin: 5px 3px; + position: absolute; + width: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 12px; + margin: 2px 0; + } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme "inset-dark", "inset-2-dark", "inset-3-dark" */ + + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + + /* theme "inset-2", "inset-2-dark" */ + + .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-color: transparent; + border-width: 1px; + border-style: solid; + border-color: #fff; + border-color: rgba(255,255,255,0.2); + -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; + } + + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ border-color: #000; border-color: rgba(0,0,0,0.2); } + + + /* theme "inset-3", "inset-3-dark" */ + + .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.6); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.6); } + + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.75); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } + + /* ---------------------------------------- */ diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js index 4c9a0b2e52..ff7a7263f8 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js @@ -1,2458 +1,2458 @@ -/* -== malihu jquery custom scrollbar plugin == -Version: 3.1.5 -Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller -Author: malihu -Author URI: http://manos.malihu.gr -License: MIT License (MIT) -*/ - -/* -Copyright Manos Malihutsakis (email: manos@malihu.gr) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* -The code below is fairly long, fully commented and should be normally used in development. -For production, use either the minified jquery.mCustomScrollbar.min.js script or -the production-ready jquery.mCustomScrollbar.concat.min.js which contains the plugin -and dependencies (minified). -*/ - -(function(factory){ - if(typeof define==="function" && define.amd){ - define(["jquery"],factory); - }else if(typeof module!=="undefined" && module.exports){ - module.exports=factory; - }else{ - factory(jQuery,window,document); - } -}(function($){ -(function(init){ - var _rjs=typeof define==="function" && define.amd, /* RequireJS */ - _njs=typeof module !== "undefined" && module.exports, /* NodeJS */ - _dlp=("https:"==document.location.protocol) ? "https:" : "http:", /* location protocol */ - _url="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"; - if(!_rjs){ - if(_njs){ - require("jquery-mousewheel")($); - }else{ - /* load jquery-mousewheel plugin (via CDN) if it's not present or not loaded via RequireJS - (works when mCustomScrollbar fn is called on window load) */ - $.event.special.mousewheel || $("head").append(decodeURI("%3Cscript src="+_dlp+"//"+_url+"%3E%3C/script%3E")); - } - } - init(); -}(function(){ - - /* - ---------------------------------------- - PLUGIN NAMESPACE, PREFIX, DEFAULT SELECTOR(S) - ---------------------------------------- - */ - - var pluginNS="mCustomScrollbar", - pluginPfx="mCS", - defaultSelector=".mCustomScrollbar", - - - - - - /* - ---------------------------------------- - DEFAULT OPTIONS - ---------------------------------------- - */ - - defaults={ - /* - set element/content width/height programmatically - values: boolean, pixels, percentage - option default - ------------------------------------- - setWidth false - setHeight false - */ - /* - set the initial css top property of content - values: string (e.g. "-100px", "10%" etc.) - */ - setTop:0, - /* - set the initial css left property of content - values: string (e.g. "-100px", "10%" etc.) - */ - setLeft:0, - /* - scrollbar axis (vertical and/or horizontal scrollbars) - values (string): "y", "x", "yx" - */ - axis:"y", - /* - position of scrollbar relative to content - values (string): "inside", "outside" ("outside" requires elements with position:relative) - */ - scrollbarPosition:"inside", - /* - scrolling inertia - values: integer (milliseconds) - */ - scrollInertia:950, - /* - auto-adjust scrollbar dragger length - values: boolean - */ - autoDraggerLength:true, - /* - auto-hide scrollbar when idle - values: boolean - option default - ------------------------------------- - autoHideScrollbar false - */ - /* - auto-expands scrollbar on mouse-over and dragging - values: boolean - option default - ------------------------------------- - autoExpandScrollbar false - */ - /* - always show scrollbar, even when there's nothing to scroll - values: integer (0=disable, 1=always show dragger rail and buttons, 2=always show dragger rail, dragger and buttons), boolean - */ - alwaysShowScrollbar:0, - /* - scrolling always snaps to a multiple of this number in pixels - values: integer, array ([y,x]) - option default - ------------------------------------- - snapAmount null - */ - /* - when snapping, snap with this number in pixels as an offset - values: integer - */ - snapOffset:0, - /* - mouse-wheel scrolling - */ - mouseWheel:{ - /* - enable mouse-wheel scrolling - values: boolean - */ - enable:true, - /* - scrolling amount in pixels - values: "auto", integer - */ - scrollAmount:"auto", - /* - mouse-wheel scrolling axis - the default scrolling direction when both vertical and horizontal scrollbars are present - values (string): "y", "x" - */ - axis:"y", - /* - prevent the default behaviour which automatically scrolls the parent element(s) when end of scrolling is reached - values: boolean - option default - ------------------------------------- - preventDefault null - */ - /* - the reported mouse-wheel delta value. The number of lines (translated to pixels) one wheel notch scrolls. - values: "auto", integer - "auto" uses the default OS/browser value - */ - deltaFactor:"auto", - /* - normalize mouse-wheel delta to -1 or 1 (disables mouse-wheel acceleration) - values: boolean - option default - ------------------------------------- - normalizeDelta null - */ - /* - invert mouse-wheel scrolling direction - values: boolean - option default - ------------------------------------- - invert null - */ - /* - the tags that disable mouse-wheel when cursor is over them - */ - disableOver:["select","option","keygen","datalist","textarea"] - }, - /* - scrollbar buttons - */ - scrollButtons:{ - /* - enable scrollbar buttons - values: boolean - option default - ------------------------------------- - enable null - */ - /* - scrollbar buttons scrolling type - values (string): "stepless", "stepped" - */ - scrollType:"stepless", - /* - scrolling amount in pixels - values: "auto", integer - */ - scrollAmount:"auto" - /* - tabindex of the scrollbar buttons - values: false, integer - option default - ------------------------------------- - tabindex null - */ - }, - /* - keyboard scrolling - */ - keyboard:{ - /* - enable scrolling via keyboard - values: boolean - */ - enable:true, - /* - keyboard scrolling type - values (string): "stepless", "stepped" - */ - scrollType:"stepless", - /* - scrolling amount in pixels - values: "auto", integer - */ - scrollAmount:"auto" - }, - /* - enable content touch-swipe scrolling - values: boolean, integer, string (number) - integer values define the axis-specific minimum amount required for scrolling momentum - */ - contentTouchScroll:25, - /* - enable/disable document (default) touch-swipe scrolling - */ - documentTouchScroll:true, - /* - advanced option parameters - */ - advanced:{ - /* - auto-expand content horizontally (for "x" or "yx" axis) - values: boolean, integer (the value 2 forces the non scrollHeight/scrollWidth method, the value 3 forces the scrollHeight/scrollWidth method) - option default - ------------------------------------- - autoExpandHorizontalScroll null - */ - /* - auto-scroll to elements with focus - */ - autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']", - /* - auto-update scrollbars on content, element or viewport resize - should be true for fluid layouts/elements, adding/removing content dynamically, hiding/showing elements, content with images etc. - values: boolean - */ - updateOnContentResize:true, - /* - auto-update scrollbars each time each image inside the element is fully loaded - values: "auto", boolean - */ - updateOnImageLoad:"auto", - /* - auto-update scrollbars based on the amount and size changes of specific selectors - useful when you need to update the scrollbar(s) automatically, each time a type of element is added, removed or changes its size - values: boolean, string (e.g. "ul li" will auto-update scrollbars each time list-items inside the element are changed) - a value of true (boolean) will auto-update scrollbars each time any element is changed - option default - ------------------------------------- - updateOnSelectorChange null - */ - /* - extra selectors that'll allow scrollbar dragging upon mousemove/up, pointermove/up, touchend etc. (e.g. "selector-1, selector-2") - option default - ------------------------------------- - extraDraggableSelectors null - */ - /* - extra selectors that'll release scrollbar dragging upon mouseup, pointerup, touchend etc. (e.g. "selector-1, selector-2") - option default - ------------------------------------- - releaseDraggableSelectors null - */ - /* - auto-update timeout - values: integer (milliseconds) - */ - autoUpdateTimeout:60 - }, - /* - scrollbar theme - values: string (see CSS/plugin URI for a list of ready-to-use themes) - */ - theme:"light", - /* - user defined callback functions - */ - callbacks:{ - /* - Available callbacks: - callback default - ------------------------------------- - onCreate null - onInit null - onScrollStart null - onScroll null - onTotalScroll null - onTotalScrollBack null - whileScrolling null - onOverflowY null - onOverflowX null - onOverflowYNone null - onOverflowXNone null - onImageLoad null - onSelectorChange null - onBeforeUpdate null - onUpdate null - */ - onTotalScrollOffset:0, - onTotalScrollBackOffset:0, - alwaysTriggerOffsets:true - } - /* - add scrollbar(s) on all elements matching the current selector, now and in the future - values: boolean, string - string values: "on" (enable), "once" (disable after first invocation), "off" (disable) - liveSelector values: string (selector) - option default - ------------------------------------- - live false - liveSelector null - */ - }, - - - - - - /* - ---------------------------------------- - VARS, CONSTANTS - ---------------------------------------- - */ - - totalInstances=0, /* plugin instances amount */ - liveTimers={}, /* live option timers */ - oldIE=(window.attachEvent && !window.addEventListener) ? 1 : 0, /* detect IE < 9 */ - touchActive=false,touchable, /* global touch vars (for touch and pointer events) */ - /* general plugin classes */ - classes=[ - "mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar", - "mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer", - "mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight" - ], - - - - - - /* - ---------------------------------------- - METHODS - ---------------------------------------- - */ - - methods={ - - /* - plugin initialization method - creates the scrollbar(s), plugin data object and options - ---------------------------------------- - */ - - init:function(options){ - - var options=$.extend(true,{},defaults,options), - selector=_selector.call(this); /* validate selector */ - - /* - if live option is enabled, monitor for elements matching the current selector and - apply scrollbar(s) when found (now and in the future) - */ - if(options.live){ - var liveSelector=options.liveSelector || this.selector || defaultSelector, /* live selector(s) */ - $liveSelector=$(liveSelector); /* live selector(s) as jquery object */ - if(options.live==="off"){ - /* - disable live if requested - usage: $(selector).mCustomScrollbar({live:"off"}); - */ - removeLiveTimers(liveSelector); - return; - } - liveTimers[liveSelector]=setTimeout(function(){ - /* call mCustomScrollbar fn on live selector(s) every half-second */ - $liveSelector.mCustomScrollbar(options); - if(options.live==="once" && $liveSelector.length){ - /* disable live after first invocation */ - removeLiveTimers(liveSelector); - } - },500); - }else{ - removeLiveTimers(liveSelector); - } - - /* options backward compatibility (for versions < 3.0.0) and normalization */ - options.setWidth=(options.set_width) ? options.set_width : options.setWidth; - options.setHeight=(options.set_height) ? options.set_height : options.setHeight; - options.axis=(options.horizontalScroll) ? "x" : _findAxis(options.axis); - options.scrollInertia=options.scrollInertia>0 && options.scrollInertia<17 ? 17 : options.scrollInertia; - if(typeof options.mouseWheel!=="object" && options.mouseWheel==true){ /* old school mouseWheel option (non-object) */ - options.mouseWheel={enable:true,scrollAmount:"auto",axis:"y",preventDefault:false,deltaFactor:"auto",normalizeDelta:false,invert:false} - } - options.mouseWheel.scrollAmount=!options.mouseWheelPixels ? options.mouseWheel.scrollAmount : options.mouseWheelPixels; - options.mouseWheel.normalizeDelta=!options.advanced.normalizeMouseWheelDelta ? options.mouseWheel.normalizeDelta : options.advanced.normalizeMouseWheelDelta; - options.scrollButtons.scrollType=_findScrollButtonsType(options.scrollButtons.scrollType); - - _theme(options); /* theme-specific options */ - - /* plugin constructor */ - return $(selector).each(function(){ - - var $this=$(this); - - if(!$this.data(pluginPfx)){ /* prevent multiple instantiations */ - - /* store options and create objects in jquery data */ - $this.data(pluginPfx,{ - idx:++totalInstances, /* instance index */ - opt:options, /* options */ - scrollRatio:{y:null,x:null}, /* scrollbar to content ratio */ - overflowed:null, /* overflowed axis */ - contentReset:{y:null,x:null}, /* object to check when content resets */ - bindEvents:false, /* object to check if events are bound */ - tweenRunning:false, /* object to check if tween is running */ - sequential:{}, /* sequential scrolling object */ - langDir:$this.css("direction"), /* detect/store direction (ltr or rtl) */ - cbOffsets:null, /* object to check whether callback offsets always trigger */ - /* - object to check how scrolling events where last triggered - "internal" (default - triggered by this script), "external" (triggered by other scripts, e.g. via scrollTo method) - usage: object.data("mCS").trigger - */ - trigger:null, - /* - object to check for changes in elements in order to call the update method automatically - */ - poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}} - }); - - var d=$this.data(pluginPfx),o=d.opt, - /* HTML data attributes */ - htmlDataAxis=$this.data("mcs-axis"),htmlDataSbPos=$this.data("mcs-scrollbar-position"),htmlDataTheme=$this.data("mcs-theme"); - - if(htmlDataAxis){o.axis=htmlDataAxis;} /* usage example: data-mcs-axis="y" */ - if(htmlDataSbPos){o.scrollbarPosition=htmlDataSbPos;} /* usage example: data-mcs-scrollbar-position="outside" */ - if(htmlDataTheme){ /* usage example: data-mcs-theme="minimal" */ - o.theme=htmlDataTheme; - _theme(o); /* theme-specific options */ - } - - _pluginMarkup.call(this); /* add plugin markup */ - - if(d && o.callbacks.onCreate && typeof o.callbacks.onCreate==="function"){o.callbacks.onCreate.call(this);} /* callbacks: onCreate */ - - $("#mCSB_"+d.idx+"_container img:not(."+classes[2]+")").addClass(classes[2]); /* flag loaded images */ - - methods.update.call(null,$this); /* call the update method */ - - } - - }); - - }, - /* ---------------------------------------- */ - - - - /* - plugin update method - updates content and scrollbar(s) values, events and status - ---------------------------------------- - usage: $(selector).mCustomScrollbar("update"); - */ - - update:function(el,cb){ - - var selector=el || _selector.call(this); /* validate selector */ - - return $(selector).each(function(){ - - var $this=$(this); - - if($this.data(pluginPfx)){ /* check if plugin has initialized */ - - var d=$this.data(pluginPfx),o=d.opt, - mCSB_container=$("#mCSB_"+d.idx+"_container"), - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; - - if(!mCSB_container.length){return;} - - if(d.tweenRunning){_stop($this);} /* stop any running tweens while updating */ - - if(cb && d && o.callbacks.onBeforeUpdate && typeof o.callbacks.onBeforeUpdate==="function"){o.callbacks.onBeforeUpdate.call(this);} /* callbacks: onBeforeUpdate */ - - /* if element was disabled or destroyed, remove class(es) */ - if($this.hasClass(classes[3])){$this.removeClass(classes[3]);} - if($this.hasClass(classes[4])){$this.removeClass(classes[4]);} - - /* css flexbox fix, detect/set max-height */ - mCustomScrollBox.css("max-height","none"); - if(mCustomScrollBox.height()!==$this.height()){mCustomScrollBox.css("max-height",$this.height());} - - _expandContentHorizontally.call(this); /* expand content horizontally */ - - if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){ - mCSB_container.css("width",_contentWidth(mCSB_container)); - } - - d.overflowed=_overflowed.call(this); /* determine if scrolling is required */ - - _scrollbarVisibility.call(this); /* show/hide scrollbar(s) */ - - /* auto-adjust scrollbar dragger length analogous to content */ - if(o.autoDraggerLength){_setDraggerLength.call(this);} - - _scrollRatio.call(this); /* calculate and store scrollbar to content ratio */ - - _bindEvents.call(this); /* bind scrollbar events */ - - /* reset scrolling position and/or events */ - var to=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)]; - if(o.axis!=="x"){ /* y/yx axis */ - if(!d.overflowed[0]){ /* y scrolling is not required */ - _resetContentPosition.call(this); /* reset content position */ - if(o.axis==="y"){ - _unbindEvents.call(this); - }else if(o.axis==="yx" && d.overflowed[1]){ - _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"}); - } - }else if(mCSB_dragger[0].height()>mCSB_dragger[0].parent().height()){ - _resetContentPosition.call(this); /* reset content position */ - }else{ /* y scrolling is required */ - _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"}); - d.contentReset.y=null; - } - } - if(o.axis!=="y"){ /* x/yx axis */ - if(!d.overflowed[1]){ /* x scrolling is not required */ - _resetContentPosition.call(this); /* reset content position */ - if(o.axis==="x"){ - _unbindEvents.call(this); - }else if(o.axis==="yx" && d.overflowed[0]){ - _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"}); - } - }else if(mCSB_dragger[1].width()>mCSB_dragger[1].parent().width()){ - _resetContentPosition.call(this); /* reset content position */ - }else{ /* x scrolling is required */ - _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"}); - d.contentReset.x=null; - } - } - - /* callbacks: onImageLoad, onSelectorChange, onUpdate */ - if(cb && d){ - if(cb===2 && o.callbacks.onImageLoad && typeof o.callbacks.onImageLoad==="function"){ - o.callbacks.onImageLoad.call(this); - }else if(cb===3 && o.callbacks.onSelectorChange && typeof o.callbacks.onSelectorChange==="function"){ - o.callbacks.onSelectorChange.call(this); - }else if(o.callbacks.onUpdate && typeof o.callbacks.onUpdate==="function"){ - o.callbacks.onUpdate.call(this); - } - } - - _autoUpdate.call(this); /* initialize automatic updating (for dynamic content, fluid layouts etc.) */ - - } - - }); - - }, - /* ---------------------------------------- */ - - - - /* - plugin scrollTo method - triggers a scrolling event to a specific value - ---------------------------------------- - usage: $(selector).mCustomScrollbar("scrollTo",value,options); - */ - - scrollTo:function(val,options){ - - /* prevent silly things like $(selector).mCustomScrollbar("scrollTo",undefined); */ - if(typeof val=="undefined" || val==null){return;} - - var selector=_selector.call(this); /* validate selector */ - - return $(selector).each(function(){ - - var $this=$(this); - - if($this.data(pluginPfx)){ /* check if plugin has initialized */ - - var d=$this.data(pluginPfx),o=d.opt, - /* method default options */ - methodDefaults={ - trigger:"external", /* method is by default triggered externally (e.g. from other scripts) */ - scrollInertia:o.scrollInertia, /* scrolling inertia (animation duration) */ - scrollEasing:"mcsEaseInOut", /* animation easing */ - moveDragger:false, /* move dragger instead of content */ - timeout:60, /* scroll-to delay */ - callbacks:true, /* enable/disable callbacks */ - onStart:true, - onUpdate:true, - onComplete:true - }, - methodOptions=$.extend(true,{},methodDefaults,options), - to=_arr.call(this,val),dur=methodOptions.scrollInertia>0 && methodOptions.scrollInertia<17 ? 17 : methodOptions.scrollInertia; - - /* translate yx values to actual scroll-to positions */ - to[0]=_to.call(this,to[0],"y"); - to[1]=_to.call(this,to[1],"x"); - - /* - check if scroll-to value moves the dragger instead of content. - Only pixel values apply on dragger (e.g. 100, "100px", "-=100" etc.) - */ - if(methodOptions.moveDragger){ - to[0]*=d.scrollRatio.y; - to[1]*=d.scrollRatio.x; - } - - methodOptions.dur=_isTabHidden() ? 0 : dur; //skip animations if browser tab is hidden - - setTimeout(function(){ - /* do the scrolling */ - if(to[0]!==null && typeof to[0]!=="undefined" && o.axis!=="x" && d.overflowed[0]){ /* scroll y */ - methodOptions.dir="y"; - methodOptions.overwrite="all"; - _scrollTo($this,to[0].toString(),methodOptions); - } - if(to[1]!==null && typeof to[1]!=="undefined" && o.axis!=="y" && d.overflowed[1]){ /* scroll x */ - methodOptions.dir="x"; - methodOptions.overwrite="none"; - _scrollTo($this,to[1].toString(),methodOptions); - } - },methodOptions.timeout); - - } - - }); - - }, - /* ---------------------------------------- */ - - - - /* - plugin stop method - stops scrolling animation - ---------------------------------------- - usage: $(selector).mCustomScrollbar("stop"); - */ - stop:function(){ - - var selector=_selector.call(this); /* validate selector */ - - return $(selector).each(function(){ - - var $this=$(this); - - if($this.data(pluginPfx)){ /* check if plugin has initialized */ - - _stop($this); - - } - - }); - - }, - /* ---------------------------------------- */ - - - - /* - plugin disable method - temporarily disables the scrollbar(s) - ---------------------------------------- - usage: $(selector).mCustomScrollbar("disable",reset); - reset (boolean): resets content position to 0 - */ - disable:function(r){ - - var selector=_selector.call(this); /* validate selector */ - - return $(selector).each(function(){ - - var $this=$(this); - - if($this.data(pluginPfx)){ /* check if plugin has initialized */ - - var d=$this.data(pluginPfx); - - _autoUpdate.call(this,"remove"); /* remove automatic updating */ - - _unbindEvents.call(this); /* unbind events */ - - if(r){_resetContentPosition.call(this);} /* reset content position */ - - _scrollbarVisibility.call(this,true); /* show/hide scrollbar(s) */ - - $this.addClass(classes[3]); /* add disable class */ - - } - - }); - - }, - /* ---------------------------------------- */ - - - - /* - plugin destroy method - completely removes the scrollbar(s) and returns the element to its original state - ---------------------------------------- - usage: $(selector).mCustomScrollbar("destroy"); - */ - destroy:function(){ - - var selector=_selector.call(this); /* validate selector */ - - return $(selector).each(function(){ - - var $this=$(this); - - if($this.data(pluginPfx)){ /* check if plugin has initialized */ - - var d=$this.data(pluginPfx),o=d.opt, - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_container=$("#mCSB_"+d.idx+"_container"), - scrollbar=$(".mCSB_"+d.idx+"_scrollbar"); - - if(o.live){removeLiveTimers(o.liveSelector || $(selector).selector);} /* remove live timers */ - - _autoUpdate.call(this,"remove"); /* remove automatic updating */ - - _unbindEvents.call(this); /* unbind events */ - - _resetContentPosition.call(this); /* reset content position */ - - $this.removeData(pluginPfx); /* remove plugin data object */ - - _delete(this,"mcs"); /* delete callbacks object */ - - /* remove plugin markup */ - scrollbar.remove(); /* remove scrollbar(s) first (those can be either inside or outside plugin's inner wrapper) */ - mCSB_container.find("img."+classes[2]).removeClass(classes[2]); /* remove loaded images flag */ - mCustomScrollBox.replaceWith(mCSB_container.contents()); /* replace plugin's inner wrapper with the original content */ - /* remove plugin classes from the element and add destroy class */ - $this.removeClass(pluginNS+" _"+pluginPfx+"_"+d.idx+" "+classes[6]+" "+classes[7]+" "+classes[5]+" "+classes[3]).addClass(classes[4]); - - } - - }); - - } - /* ---------------------------------------- */ - - }, - - - - - - /* - ---------------------------------------- - FUNCTIONS - ---------------------------------------- - */ - - /* validates selector (if selector is invalid or undefined uses the default one) */ - _selector=function(){ - return (typeof $(this)!=="object" || $(this).length<1) ? defaultSelector : this; - }, - /* -------------------- */ - - - /* changes options according to theme */ - _theme=function(obj){ - var fixedSizeScrollbarThemes=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"], - nonExpandedScrollbarThemes=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"], - disabledScrollButtonsThemes=["minimal","minimal-dark"], - enabledAutoHideScrollbarThemes=["minimal","minimal-dark"], - scrollbarPositionOutsideThemes=["minimal","minimal-dark"]; - obj.autoDraggerLength=$.inArray(obj.theme,fixedSizeScrollbarThemes) > -1 ? false : obj.autoDraggerLength; - obj.autoExpandScrollbar=$.inArray(obj.theme,nonExpandedScrollbarThemes) > -1 ? false : obj.autoExpandScrollbar; - obj.scrollButtons.enable=$.inArray(obj.theme,disabledScrollButtonsThemes) > -1 ? false : obj.scrollButtons.enable; - obj.autoHideScrollbar=$.inArray(obj.theme,enabledAutoHideScrollbarThemes) > -1 ? true : obj.autoHideScrollbar; - obj.scrollbarPosition=$.inArray(obj.theme,scrollbarPositionOutsideThemes) > -1 ? "outside" : obj.scrollbarPosition; - }, - /* -------------------- */ - - - /* live option timers removal */ - removeLiveTimers=function(selector){ - if(liveTimers[selector]){ - clearTimeout(liveTimers[selector]); - _delete(liveTimers,selector); - } - }, - /* -------------------- */ - - - /* normalizes axis option to valid values: "y", "x", "yx" */ - _findAxis=function(val){ - return (val==="yx" || val==="xy" || val==="auto") ? "yx" : (val==="x" || val==="horizontal") ? "x" : "y"; - }, - /* -------------------- */ - - - /* normalizes scrollButtons.scrollType option to valid values: "stepless", "stepped" */ - _findScrollButtonsType=function(val){ - return (val==="stepped" || val==="pixels" || val==="step" || val==="click") ? "stepped" : "stepless"; - }, - /* -------------------- */ - - - /* generates plugin markup */ - _pluginMarkup=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - expandClass=o.autoExpandScrollbar ? " "+classes[1]+"_expand" : "", - scrollbar=["
","
"], - wrapperClass=o.axis==="yx" ? "mCSB_vertical_horizontal" : o.axis==="x" ? "mCSB_horizontal" : "mCSB_vertical", - scrollbars=o.axis==="yx" ? scrollbar[0]+scrollbar[1] : o.axis==="x" ? scrollbar[1] : scrollbar[0], - contentWrapper=o.axis==="yx" ? "
" : "", - autoHideClass=o.autoHideScrollbar ? " "+classes[6] : "", - scrollbarDirClass=(o.axis!=="x" && d.langDir==="rtl") ? " "+classes[7] : ""; - if(o.setWidth){$this.css("width",o.setWidth);} /* set element width */ - if(o.setHeight){$this.css("height",o.setHeight);} /* set element height */ - o.setLeft=(o.axis!=="y" && d.langDir==="rtl") ? "989999px" : o.setLeft; /* adjust left position for rtl direction */ - $this.addClass(pluginNS+" _"+pluginPfx+"_"+d.idx+autoHideClass+scrollbarDirClass).wrapInner("
"); - var mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_container=$("#mCSB_"+d.idx+"_container"); - if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){ - mCSB_container.css("width",_contentWidth(mCSB_container)); - } - if(o.scrollbarPosition==="outside"){ - if($this.css("position")==="static"){ /* requires elements with non-static position */ - $this.css("position","relative"); - } - $this.css("overflow","visible"); - mCustomScrollBox.addClass("mCSB_outside").after(scrollbars); - }else{ - mCustomScrollBox.addClass("mCSB_inside").append(scrollbars); - mCSB_container.wrap(contentWrapper); - } - _scrollButtons.call(this); /* add scrollbar buttons */ - /* minimum dragger length */ - var mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; - mCSB_dragger[0].css("min-height",mCSB_dragger[0].height()); - mCSB_dragger[1].css("min-width",mCSB_dragger[1].width()); - }, - /* -------------------- */ - - - /* calculates content width */ - _contentWidth=function(el){ - var val=[el[0].scrollWidth,Math.max.apply(Math,el.children().map(function(){return $(this).outerWidth(true);}).get())],w=el.parent().width(); - return val[0]>w ? val[0] : val[1]>w ? val[1] : "100%"; - }, - /* -------------------- */ - - - /* expands content horizontally */ - _expandContentHorizontally=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - mCSB_container=$("#mCSB_"+d.idx+"_container"); - if(o.advanced.autoExpandHorizontalScroll && o.axis!=="y"){ - /* calculate scrollWidth */ - mCSB_container.css({"width":"auto","min-width":0,"overflow-x":"scroll"}); - var w=Math.ceil(mCSB_container[0].scrollWidth); - if(o.advanced.autoExpandHorizontalScroll===3 || (o.advanced.autoExpandHorizontalScroll!==2 && w>mCSB_container.parent().width())){ - mCSB_container.css({"width":w,"min-width":"100%","overflow-x":"inherit"}); - }else{ - /* - wrap content with an infinite width div and set its position to absolute and width to auto. - Setting width to auto before calculating the actual width is important! - We must let the browser set the width as browser zoom values are impossible to calculate. - */ - mCSB_container.css({"overflow-x":"inherit","position":"absolute"}) - .wrap("
") - .css({ /* set actual width, original position and un-wrap */ - /* - get the exact width (with decimals) and then round-up. - Using jquery outerWidth() will round the width value which will mess up with inner elements that have non-integer width - */ - "width":(Math.ceil(mCSB_container[0].getBoundingClientRect().right+0.4)-Math.floor(mCSB_container[0].getBoundingClientRect().left)), - "min-width":"100%", - "position":"relative" - }).unwrap(); - } - } - }, - /* -------------------- */ - - - /* adds scrollbar buttons */ - _scrollButtons=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - mCSB_scrollTools=$(".mCSB_"+d.idx+"_scrollbar:first"), - tabindex=!_isNumeric(o.scrollButtons.tabindex) ? "" : "tabindex='"+o.scrollButtons.tabindex+"'", - btnHTML=[ - "", - "", - "", - "" - ], - btn=[(o.axis==="x" ? btnHTML[2] : btnHTML[0]),(o.axis==="x" ? btnHTML[3] : btnHTML[1]),btnHTML[2],btnHTML[3]]; - if(o.scrollButtons.enable){ - mCSB_scrollTools.prepend(btn[0]).append(btn[1]).next(".mCSB_scrollTools").prepend(btn[2]).append(btn[3]); - } - }, - /* -------------------- */ - - - /* auto-adjusts scrollbar dragger length */ - _setDraggerLength=function(){ - var $this=$(this),d=$this.data(pluginPfx), - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_container=$("#mCSB_"+d.idx+"_container"), - mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], - ratio=[mCustomScrollBox.height()/mCSB_container.outerHeight(false),mCustomScrollBox.width()/mCSB_container.outerWidth(false)], - l=[ - parseInt(mCSB_dragger[0].css("min-height")),Math.round(ratio[0]*mCSB_dragger[0].parent().height()), - parseInt(mCSB_dragger[1].css("min-width")),Math.round(ratio[1]*mCSB_dragger[1].parent().width()) - ], - h=oldIE && (l[1]contentHeight){contentHeight=h;} - if(w>contentWidth){contentWidth=w;} - return [contentHeight>mCustomScrollBox.height(),contentWidth>mCustomScrollBox.width()]; - }, - /* -------------------- */ - - - /* resets content position to 0 */ - _resetContentPosition=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_container=$("#mCSB_"+d.idx+"_container"), - mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; - _stop($this); /* stop any current scrolling before resetting */ - if((o.axis!=="x" && !d.overflowed[0]) || (o.axis==="y" && d.overflowed[0])){ /* reset y */ - mCSB_dragger[0].add(mCSB_container).css("top",0); - _scrollTo($this,"_resetY"); - } - if((o.axis!=="y" && !d.overflowed[1]) || (o.axis==="x" && d.overflowed[1])){ /* reset x */ - var cx=dx=0; - if(d.langDir==="rtl"){ /* adjust left position for rtl direction */ - cx=mCustomScrollBox.width()-mCSB_container.outerWidth(false); - dx=Math.abs(cx/d.scrollRatio.x); - } - mCSB_container.css("left",cx); - mCSB_dragger[1].css("left",dx); - _scrollTo($this,"_resetX"); - } - }, - /* -------------------- */ - - - /* binds scrollbar events */ - _bindEvents=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt; - if(!d.bindEvents){ /* check if events are already bound */ - _draggable.call(this); - if(o.contentTouchScroll){_contentDraggable.call(this);} - _selectable.call(this); - if(o.mouseWheel.enable){ /* bind mousewheel fn when plugin is available */ - function _mwt(){ - mousewheelTimeout=setTimeout(function(){ - if(!$.event.special.mousewheel){ - _mwt(); - }else{ - clearTimeout(mousewheelTimeout); - _mousewheel.call($this[0]); - } - },100); - } - var mousewheelTimeout; - _mwt(); - } - _draggerRail.call(this); - _wrapperScroll.call(this); - if(o.advanced.autoScrollOnFocus){_focus.call(this);} - if(o.scrollButtons.enable){_buttons.call(this);} - if(o.keyboard.enable){_keyboard.call(this);} - d.bindEvents=true; - } - }, - /* -------------------- */ - - - /* unbinds scrollbar events */ - _unbindEvents=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - namespace=pluginPfx+"_"+d.idx, - sb=".mCSB_"+d.idx+"_scrollbar", - sel=$("#mCSB_"+d.idx+",#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,"+sb+" ."+classes[12]+",#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal,"+sb+">a"), - mCSB_container=$("#mCSB_"+d.idx+"_container"); - if(o.advanced.releaseDraggableSelectors){sel.add($(o.advanced.releaseDraggableSelectors));} - if(o.advanced.extraDraggableSelectors){sel.add($(o.advanced.extraDraggableSelectors));} - if(d.bindEvents){ /* check if events are bound */ - /* unbind namespaced events from document/selectors */ - $(document).add($(!_canAccessIFrame() || top.document)).unbind("."+namespace); - sel.each(function(){ - $(this).unbind("."+namespace); - }); - /* clear and delete timeouts/objects */ - clearTimeout($this[0]._focusTimeout); _delete($this[0],"_focusTimeout"); - clearTimeout(d.sequential.step); _delete(d.sequential,"step"); - clearTimeout(mCSB_container[0].onCompleteTimeout); _delete(mCSB_container[0],"onCompleteTimeout"); - d.bindEvents=false; - } - }, - /* -------------------- */ - - - /* toggles scrollbar visibility */ - _scrollbarVisibility=function(disabled){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - contentWrapper=$("#mCSB_"+d.idx+"_container_wrapper"), - content=contentWrapper.length ? contentWrapper : $("#mCSB_"+d.idx+"_container"), - scrollbar=[$("#mCSB_"+d.idx+"_scrollbar_vertical"),$("#mCSB_"+d.idx+"_scrollbar_horizontal")], - mCSB_dragger=[scrollbar[0].find(".mCSB_dragger"),scrollbar[1].find(".mCSB_dragger")]; - if(o.axis!=="x"){ - if(d.overflowed[0] && !disabled){ - scrollbar[0].add(mCSB_dragger[0]).add(scrollbar[0].children("a")).css("display","block"); - content.removeClass(classes[8]+" "+classes[10]); - }else{ - if(o.alwaysShowScrollbar){ - if(o.alwaysShowScrollbar!==2){mCSB_dragger[0].css("display","none");} - content.removeClass(classes[10]); - }else{ - scrollbar[0].css("display","none"); - content.addClass(classes[10]); - } - content.addClass(classes[8]); - } - } - if(o.axis!=="y"){ - if(d.overflowed[1] && !disabled){ - scrollbar[1].add(mCSB_dragger[1]).add(scrollbar[1].children("a")).css("display","block"); - content.removeClass(classes[9]+" "+classes[11]); - }else{ - if(o.alwaysShowScrollbar){ - if(o.alwaysShowScrollbar!==2){mCSB_dragger[1].css("display","none");} - content.removeClass(classes[11]); - }else{ - scrollbar[1].css("display","none"); - content.addClass(classes[11]); - } - content.addClass(classes[9]); - } - } - if(!d.overflowed[0] && !d.overflowed[1]){ - $this.addClass(classes[5]); - }else{ - $this.removeClass(classes[5]); - } - }, - /* -------------------- */ - - - /* returns input coordinates of pointer, touch and mouse events (relative to document) */ - _coordinates=function(e){ - var t=e.type,o=e.target.ownerDocument!==document && frameElement!==null ? [$(frameElement).offset().top,$(frameElement).offset().left] : null, - io=_canAccessIFrame() && e.target.ownerDocument!==top.document && frameElement!==null ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left] : [0,0]; - switch(t){ - case "pointerdown": case "MSPointerDown": case "pointermove": case "MSPointerMove": case "pointerup": case "MSPointerUp": - return o ? [e.originalEvent.pageY-o[0]+io[0],e.originalEvent.pageX-o[1]+io[1],false] : [e.originalEvent.pageY,e.originalEvent.pageX,false]; - break; - case "touchstart": case "touchmove": case "touchend": - var touch=e.originalEvent.touches[0] || e.originalEvent.changedTouches[0], - touches=e.originalEvent.touches.length || e.originalEvent.changedTouches.length; - return e.target.ownerDocument!==document ? [touch.screenY,touch.screenX,touches>1] : [touch.pageY,touch.pageX,touches>1]; - break; - default: - return o ? [e.pageY-o[0]+io[0],e.pageX-o[1]+io[1],false] : [e.pageY,e.pageX,false]; - } - }, - /* -------------------- */ - - - /* - SCROLLBAR DRAG EVENTS - scrolls content via scrollbar dragging - */ - _draggable=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - namespace=pluginPfx+"_"+d.idx, - draggerId=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"], - mCSB_container=$("#mCSB_"+d.idx+"_container"), - mCSB_dragger=$("#"+draggerId[0]+",#"+draggerId[1]), - draggable,dragY,dragX, - rds=o.advanced.releaseDraggableSelectors ? mCSB_dragger.add($(o.advanced.releaseDraggableSelectors)) : mCSB_dragger, - eds=o.advanced.extraDraggableSelectors ? $(!_canAccessIFrame() || top.document).add($(o.advanced.extraDraggableSelectors)) : $(!_canAccessIFrame() || top.document); - mCSB_dragger.bind("contextmenu."+namespace,function(e){ - e.preventDefault(); //prevent right click - }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){ - e.stopImmediatePropagation(); - e.preventDefault(); - if(!_mouseBtnLeft(e)){return;} /* left mouse button only */ - touchActive=true; - if(oldIE){document.onselectstart=function(){return false;}} /* disable text selection for IE < 9 */ - _iframe.call(mCSB_container,false); /* enable scrollbar dragging over iframes by disabling their events */ - _stop($this); - draggable=$(this); - var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left, - h=draggable.height()+offset.top,w=draggable.width()+offset.left; - if(y0 && x0){ - dragY=y; - dragX=x; - } - _onDragClasses(draggable,"active",o.autoExpandScrollbar); - }).bind("touchmove."+namespace,function(e){ - e.stopImmediatePropagation(); - e.preventDefault(); - var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left; - _drag(dragY,dragX,y,x); - }); - $(document).add(eds).bind("mousemove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace,function(e){ - if(draggable){ - var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left; - if(dragY===y && dragX===x){return;} /* has it really moved? */ - _drag(dragY,dragX,y,x); - } - }).add(rds).bind("mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){ - if(draggable){ - _onDragClasses(draggable,"active",o.autoExpandScrollbar); - draggable=null; - } - touchActive=false; - if(oldIE){document.onselectstart=null;} /* enable text selection for IE < 9 */ - _iframe.call(mCSB_container,true); /* enable iframes events */ - }); - function _drag(dragY,dragX,y,x){ - mCSB_container[0].idleTimer=o.scrollInertia<233 ? 250 : 0; - if(draggable.attr("id")===draggerId[1]){ - var dir="x",to=((draggable[0].offsetLeft-dragX)+x)*d.scrollRatio.x; - }else{ - var dir="y",to=((draggable[0].offsetTop-dragY)+y)*d.scrollRatio.y; - } - _scrollTo($this,to.toString(),{dir:dir,drag:true}); - } - }, - /* -------------------- */ - - - /* - TOUCH SWIPE EVENTS - scrolls content via touch swipe - Emulates the native touch-swipe scrolling with momentum found in iOS, Android and WP devices - */ - _contentDraggable=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - namespace=pluginPfx+"_"+d.idx, - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_container=$("#mCSB_"+d.idx+"_container"), - mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], - draggable,dragY,dragX,touchStartY,touchStartX,touchMoveY=[],touchMoveX=[],startTime,runningTime,endTime,distance,speed,amount, - durA=0,durB,overwrite=o.axis==="yx" ? "none" : "all",touchIntent=[],touchDrag,docDrag, - iframe=mCSB_container.find("iframe"), - events=[ - "touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace, //start - "touchmove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace, //move - "touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace //end - ], - touchAction=document.body.style.touchAction!==undefined && document.body.style.touchAction!==""; - mCSB_container.bind(events[0],function(e){ - _onTouchstart(e); - }).bind(events[1],function(e){ - _onTouchmove(e); - }); - mCustomScrollBox.bind(events[0],function(e){ - _onTouchstart2(e); - }).bind(events[2],function(e){ - _onTouchend(e); - }); - if(iframe.length){ - iframe.each(function(){ - $(this).bind("load",function(){ - /* bind events on accessible iframes */ - if(_canAccessIFrame(this)){ - $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){ - _onTouchstart(e); - _onTouchstart2(e); - }).bind(events[1],function(e){ - _onTouchmove(e); - }).bind(events[2],function(e){ - _onTouchend(e); - }); - } - }); - }); - } - function _onTouchstart(e){ - if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){touchable=0; return;} - touchable=1; touchDrag=0; docDrag=0; draggable=1; - $this.removeClass("mCS_touch_action"); - var offset=mCSB_container.offset(); - dragY=_coordinates(e)[0]-offset.top; - dragX=_coordinates(e)[1]-offset.left; - touchIntent=[_coordinates(e)[0],_coordinates(e)[1]]; - } - function _onTouchmove(e){ - if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){return;} - if(!o.documentTouchScroll){e.preventDefault();} - e.stopImmediatePropagation(); - if(docDrag && !touchDrag){return;} - if(draggable){ - runningTime=_getTime(); - var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left, - easing="mcsLinearOut"; - touchMoveY.push(y); - touchMoveX.push(x); - touchIntent[2]=Math.abs(_coordinates(e)[0]-touchIntent[0]); touchIntent[3]=Math.abs(_coordinates(e)[1]-touchIntent[1]); - if(d.overflowed[0]){ - var limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(), - prevent=((dragY-y)>0 && (y-dragY)>-(limit*d.scrollRatio.y) && (touchIntent[3]*20 && (x-dragX)>-(limitX*d.scrollRatio.x) && (touchIntent[2]*230){return;} - speed=1000/(endTime-startTime); - var easing="mcsEaseOut",slow=speed<2.5, - diff=slow ? [touchMoveY[touchMoveY.length-2],touchMoveX[touchMoveX.length-2]] : [0,0]; - distance=slow ? [(y-diff[0]),(x-diff[1])] : [y-touchStartY,x-touchStartX]; - var absDistance=[Math.abs(distance[0]),Math.abs(distance[1])]; - speed=slow ? [Math.abs(distance[0]/4),Math.abs(distance[1]/4)] : [speed,speed]; - var a=[ - Math.abs(mCSB_container[0].offsetTop)-(distance[0]*_m((absDistance[0]/speed[0]),speed[0])), - Math.abs(mCSB_container[0].offsetLeft)-(distance[1]*_m((absDistance[1]/speed[1]),speed[1])) - ]; - amount=o.axis==="yx" ? [a[0],a[1]] : o.axis==="x" ? [null,a[1]] : [a[0],null]; - durB=[(absDistance[0]*4)+o.scrollInertia,(absDistance[1]*4)+o.scrollInertia]; - var md=parseInt(o.contentTouchScroll) || 0; /* absolute minimum distance required */ - amount[0]=absDistance[0]>md ? amount[0] : 0; - amount[1]=absDistance[1]>md ? amount[1] : 0; - if(d.overflowed[0]){_drag(amount[0],durB[0],easing,"y",overwrite,false);} - if(d.overflowed[1]){_drag(amount[1],durB[1],easing,"x",overwrite,false);} - } - function _m(ds,s){ - var r=[s*1.5,s*2,s/1.5,s/2]; - if(ds>90){ - return s>4 ? r[0] : r[3]; - }else if(ds>60){ - return s>3 ? r[3] : r[2]; - }else if(ds>30){ - return s>8 ? r[1] : s>6 ? r[0] : s>4 ? s : r[2]; - }else{ - return s>8 ? s : r[3]; - } - } - function _drag(amount,dur,easing,dir,overwrite,drag){ - if(!amount){return;} - _scrollTo($this,amount.toString(),{dur:dur,scrollEasing:easing,dir:dir,overwrite:overwrite,drag:drag}); - } - }, - /* -------------------- */ - - - /* - SELECT TEXT EVENTS - scrolls content when text is selected - */ - _selectable=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential, - namespace=pluginPfx+"_"+d.idx, - mCSB_container=$("#mCSB_"+d.idx+"_container"), - wrapper=mCSB_container.parent(), - action; - mCSB_container.bind("mousedown."+namespace,function(e){ - if(touchable){return;} - if(!action){action=1; touchActive=true;} - }).add(document).bind("mousemove."+namespace,function(e){ - if(!touchable && action && _sel()){ - var offset=mCSB_container.offset(), - y=_coordinates(e)[0]-offset.top+mCSB_container[0].offsetTop,x=_coordinates(e)[1]-offset.left+mCSB_container[0].offsetLeft; - if(y>0 && y0 && xwrapper.height()){ - _seq("on",40); - } - } - if(o.axis!=="y" && d.overflowed[1]){ - if(x<0){ - _seq("on",37); - }else if(x>wrapper.width()){ - _seq("on",39); - } - } - } - } - }).bind("mouseup."+namespace+" dragend."+namespace,function(e){ - if(touchable){return;} - if(action){action=0; _seq("off",null);} - touchActive=false; - }); - function _sel(){ - return window.getSelection ? window.getSelection().toString() : - document.selection && document.selection.type!="Control" ? document.selection.createRange().text : 0; - } - function _seq(a,c,s){ - seq.type=s && action ? "stepped" : "stepless"; - seq.scrollAmount=10; - _sequentialScroll($this,a,c,"mcsLinearOut",s ? 60 : null); - } - }, - /* -------------------- */ - - - /* - MOUSE WHEEL EVENT - scrolls content via mouse-wheel - via mouse-wheel plugin (https://github.com/brandonaaron/jquery-mousewheel) - */ - _mousewheel=function(){ - if(!$(this).data(pluginPfx)){return;} /* Check if the scrollbar is ready to use mousewheel events (issue: #185) */ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - namespace=pluginPfx+"_"+d.idx, - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], - iframe=$("#mCSB_"+d.idx+"_container").find("iframe"); - if(iframe.length){ - iframe.each(function(){ - $(this).bind("load",function(){ - /* bind events on accessible iframes */ - if(_canAccessIFrame(this)){ - $(this.contentDocument || this.contentWindow.document).bind("mousewheel."+namespace,function(e,delta){ - _onMousewheel(e,delta); - }); - } - }); - }); - } - mCustomScrollBox.bind("mousewheel."+namespace,function(e,delta){ - _onMousewheel(e,delta); - }); - function _onMousewheel(e,delta){ - _stop($this); - if(_disableMousewheel($this,e.target)){return;} /* disables mouse-wheel when hovering specific elements */ - var deltaFactor=o.mouseWheel.deltaFactor!=="auto" ? parseInt(o.mouseWheel.deltaFactor) : (oldIE && e.deltaFactor<100) ? 100 : e.deltaFactor || 100, - dur=o.scrollInertia; - if(o.axis==="x" || o.mouseWheel.axis==="x"){ - var dir="x", - px=[Math.round(deltaFactor*d.scrollRatio.x),parseInt(o.mouseWheel.scrollAmount)], - amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.width() ? mCustomScrollBox.width()*0.9 : px[0], - contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetLeft), - draggerPos=mCSB_dragger[1][0].offsetLeft, - limit=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(), - dlt=o.mouseWheel.axis==="y" ? (e.deltaY || delta) : e.deltaX; - }else{ - var dir="y", - px=[Math.round(deltaFactor*d.scrollRatio.y),parseInt(o.mouseWheel.scrollAmount)], - amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.height() ? mCustomScrollBox.height()*0.9 : px[0], - contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetTop), - draggerPos=mCSB_dragger[0][0].offsetTop, - limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(), - dlt=e.deltaY || delta; - } - if((dir==="y" && !d.overflowed[0]) || (dir==="x" && !d.overflowed[1])){return;} - if(o.mouseWheel.invert || e.webkitDirectionInvertedFromDevice){dlt=-dlt;} - if(o.mouseWheel.normalizeDelta){dlt=dlt<0 ? -1 : 1;} - if((dlt>0 && draggerPos!==0) || (dlt<0 && draggerPos!==limit) || o.mouseWheel.preventDefault){ - e.stopImmediatePropagation(); - e.preventDefault(); - } - if(e.deltaFactor<5 && !o.mouseWheel.normalizeDelta){ - //very low deltaFactor values mean some kind of delta acceleration (e.g. osx trackpad), so adjusting scrolling accordingly - amount=e.deltaFactor; dur=17; - } - _scrollTo($this,(contentPos-(dlt*amount)).toString(),{dir:dir,dur:dur}); - } - }, - /* -------------------- */ - - - /* checks if iframe can be accessed */ - _canAccessIFrameCache=new Object(), - _canAccessIFrame=function(iframe){ - var result=false,cacheKey=false,html=null; - if(iframe===undefined){ - cacheKey="#empty"; - }else if($(iframe).attr("id")!==undefined){ - cacheKey=$(iframe).attr("id"); - } - if(cacheKey!==false && _canAccessIFrameCache[cacheKey]!==undefined){ - return _canAccessIFrameCache[cacheKey]; - } - if(!iframe){ - try{ - var doc=top.document; - html=doc.body.innerHTML; - }catch(err){/* do nothing */} - result=(html!==null); - }else{ - try{ - var doc=iframe.contentDocument || iframe.contentWindow.document; - html=doc.body.innerHTML; - }catch(err){/* do nothing */} - result=(html!==null); - } - if(cacheKey!==false){_canAccessIFrameCache[cacheKey]=result;} - return result; - }, - /* -------------------- */ - - - /* switches iframe's pointer-events property (drag, mousewheel etc. over cross-domain iframes) */ - _iframe=function(evt){ - var el=this.find("iframe"); - if(!el.length){return;} /* check if content contains iframes */ - var val=!evt ? "none" : "auto"; - el.css("pointer-events",val); /* for IE11, iframe's display property should not be "block" */ - }, - /* -------------------- */ - - - /* disables mouse-wheel when hovering specific elements like select, datalist etc. */ - _disableMousewheel=function(el,target){ - var tag=target.nodeName.toLowerCase(), - tags=el.data(pluginPfx).opt.mouseWheel.disableOver, - /* elements that require focus */ - focusTags=["select","textarea"]; - return $.inArray(tag,tags) > -1 && !($.inArray(tag,focusTags) > -1 && !$(target).is(":focus")); - }, - /* -------------------- */ - - - /* - DRAGGER RAIL CLICK EVENT - scrolls content via dragger rail - */ - _draggerRail=function(){ - var $this=$(this),d=$this.data(pluginPfx), - namespace=pluginPfx+"_"+d.idx, - mCSB_container=$("#mCSB_"+d.idx+"_container"), - wrapper=mCSB_container.parent(), - mCSB_draggerContainer=$(".mCSB_"+d.idx+"_scrollbar ."+classes[12]), - clickable; - mCSB_draggerContainer.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){ - touchActive=true; - if(!$(e.target).hasClass("mCSB_dragger")){clickable=1;} - }).bind("touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){ - touchActive=false; - }).bind("click."+namespace,function(e){ - if(!clickable){return;} - clickable=0; - if($(e.target).hasClass(classes[12]) || $(e.target).hasClass("mCSB_draggerRail")){ - _stop($this); - var el=$(this),mCSB_dragger=el.find(".mCSB_dragger"); - if(el.parent(".mCSB_scrollTools_horizontal").length>0){ - if(!d.overflowed[1]){return;} - var dir="x", - clickDir=e.pageX>mCSB_dragger.offset().left ? -1 : 1, - to=Math.abs(mCSB_container[0].offsetLeft)-(clickDir*(wrapper.width()*0.9)); - }else{ - if(!d.overflowed[0]){return;} - var dir="y", - clickDir=e.pageY>mCSB_dragger.offset().top ? -1 : 1, - to=Math.abs(mCSB_container[0].offsetTop)-(clickDir*(wrapper.height()*0.9)); - } - _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); - } - }); - }, - /* -------------------- */ - - - /* - FOCUS EVENT - scrolls content via element focus (e.g. clicking an input, pressing TAB key etc.) - */ - _focus=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - namespace=pluginPfx+"_"+d.idx, - mCSB_container=$("#mCSB_"+d.idx+"_container"), - wrapper=mCSB_container.parent(); - mCSB_container.bind("focusin."+namespace,function(e){ - var el=$(document.activeElement), - nested=mCSB_container.find(".mCustomScrollBox").length, - dur=0; - if(!el.is(o.advanced.autoScrollOnFocus)){return;} - _stop($this); - clearTimeout($this[0]._focusTimeout); - $this[0]._focusTimer=nested ? (dur+17)*nested : 0; - $this[0]._focusTimeout=setTimeout(function(){ - var to=[_childPos(el)[0],_childPos(el)[1]], - contentPos=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], - isVisible=[ - (contentPos[0]+to[0]>=0 && contentPos[0]+to[0]=0 && contentPos[0]+to[1]a"); - btn.bind("contextmenu."+namespace,function(e){ - e.preventDefault(); //prevent right click - }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){ - e.preventDefault(); - if(!_mouseBtnLeft(e)){return;} /* left mouse button only */ - var btnClass=$(this).attr("class"); - seq.type=o.scrollButtons.scrollType; - switch(e.type){ - case "mousedown": case "touchstart": case "pointerdown": case "MSPointerDown": - if(seq.type==="stepped"){return;} - touchActive=true; - d.tweenRunning=false; - _seq("on",btnClass); - break; - case "mouseup": case "touchend": case "pointerup": case "MSPointerUp": - case "mouseout": case "pointerout": case "MSPointerOut": - if(seq.type==="stepped"){return;} - touchActive=false; - if(seq.dir){_seq("off",btnClass);} - break; - case "click": - if(seq.type!=="stepped" || d.tweenRunning){return;} - _seq("on",btnClass); - break; - } - function _seq(a,c){ - seq.scrollAmount=o.scrollButtons.scrollAmount; - _sequentialScroll($this,a,c); - } - }); - }, - /* -------------------- */ - - - /* - KEYBOARD EVENTS - scrolls content via keyboard - Keys: up arrow, down arrow, left arrow, right arrow, PgUp, PgDn, Home, End - */ - _keyboard=function(){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential, - namespace=pluginPfx+"_"+d.idx, - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_container=$("#mCSB_"+d.idx+"_container"), - wrapper=mCSB_container.parent(), - editables="input,textarea,select,datalist,keygen,[contenteditable='true']", - iframe=mCSB_container.find("iframe"), - events=["blur."+namespace+" keydown."+namespace+" keyup."+namespace]; - if(iframe.length){ - iframe.each(function(){ - $(this).bind("load",function(){ - /* bind events on accessible iframes */ - if(_canAccessIFrame(this)){ - $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){ - _onKeyboard(e); - }); - } - }); - }); - } - mCustomScrollBox.attr("tabindex","0").bind(events[0],function(e){ - _onKeyboard(e); - }); - function _onKeyboard(e){ - switch(e.type){ - case "blur": - if(d.tweenRunning && seq.dir){_seq("off",null);} - break; - case "keydown": case "keyup": - var code=e.keyCode ? e.keyCode : e.which,action="on"; - if((o.axis!=="x" && (code===38 || code===40)) || (o.axis!=="y" && (code===37 || code===39))){ - /* up (38), down (40), left (37), right (39) arrows */ - if(((code===38 || code===40) && !d.overflowed[0]) || ((code===37 || code===39) && !d.overflowed[1])){return;} - if(e.type==="keyup"){action="off";} - if(!$(document.activeElement).is(editables)){ - e.preventDefault(); - e.stopImmediatePropagation(); - _seq(action,code); - } - }else if(code===33 || code===34){ - /* PgUp (33), PgDn (34) */ - if(d.overflowed[0] || d.overflowed[1]){ - e.preventDefault(); - e.stopImmediatePropagation(); - } - if(e.type==="keyup"){ - _stop($this); - var keyboardDir=code===34 ? -1 : 1; - if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){ - var dir="x",to=Math.abs(mCSB_container[0].offsetLeft)-(keyboardDir*(wrapper.width()*0.9)); - }else{ - var dir="y",to=Math.abs(mCSB_container[0].offsetTop)-(keyboardDir*(wrapper.height()*0.9)); - } - _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); - } - }else if(code===35 || code===36){ - /* End (35), Home (36) */ - if(!$(document.activeElement).is(editables)){ - if(d.overflowed[0] || d.overflowed[1]){ - e.preventDefault(); - e.stopImmediatePropagation(); - } - if(e.type==="keyup"){ - if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){ - var dir="x",to=code===35 ? Math.abs(wrapper.width()-mCSB_container.outerWidth(false)) : 0; - }else{ - var dir="y",to=code===35 ? Math.abs(wrapper.height()-mCSB_container.outerHeight(false)) : 0; - } - _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); - } - } - } - break; - } - function _seq(a,c){ - seq.type=o.keyboard.scrollType; - seq.scrollAmount=o.keyboard.scrollAmount; - if(seq.type==="stepped" && d.tweenRunning){return;} - _sequentialScroll($this,a,c); - } - } - }, - /* -------------------- */ - - - /* scrolls content sequentially (used when scrolling via buttons, keyboard arrows etc.) */ - _sequentialScroll=function(el,action,trigger,e,s){ - var d=el.data(pluginPfx),o=d.opt,seq=d.sequential, - mCSB_container=$("#mCSB_"+d.idx+"_container"), - once=seq.type==="stepped" ? true : false, - steplessSpeed=o.scrollInertia < 26 ? 26 : o.scrollInertia, /* 26/1.5=17 */ - steppedSpeed=o.scrollInertia < 1 ? 17 : o.scrollInertia; - switch(action){ - case "on": - seq.dir=[ - (trigger===classes[16] || trigger===classes[15] || trigger===39 || trigger===37 ? "x" : "y"), - (trigger===classes[13] || trigger===classes[15] || trigger===38 || trigger===37 ? -1 : 1) - ]; - _stop(el); - if(_isNumeric(trigger) && seq.type==="stepped"){return;} - _on(once); - break; - case "off": - _off(); - if(once || (d.tweenRunning && seq.dir)){ - _on(true); - } - break; - } - - /* starts sequence */ - function _on(once){ - if(o.snapAmount){seq.scrollAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : seq.dir[0]==="x" ? o.snapAmount[1] : o.snapAmount[0];} /* scrolling snapping */ - var c=seq.type!=="stepped", /* continuous scrolling */ - t=s ? s : !once ? 1000/60 : c ? steplessSpeed/1.5 : steppedSpeed, /* timer */ - m=!once ? 2.5 : c ? 7.5 : 40, /* multiplier */ - contentPos=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)], - ratio=[d.scrollRatio.y>10 ? 10 : d.scrollRatio.y,d.scrollRatio.x>10 ? 10 : d.scrollRatio.x], - amount=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*(ratio[1]*m)) : contentPos[0]+(seq.dir[1]*(ratio[0]*m)), - px=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*parseInt(seq.scrollAmount)) : contentPos[0]+(seq.dir[1]*parseInt(seq.scrollAmount)), - to=seq.scrollAmount!=="auto" ? px : amount, - easing=e ? e : !once ? "mcsLinear" : c ? "mcsLinearOut" : "mcsEaseInOut", - onComplete=!once ? false : true; - if(once && t<17){ - to=seq.dir[0]==="x" ? contentPos[1] : contentPos[0]; - } - _scrollTo(el,to.toString(),{dir:seq.dir[0],scrollEasing:easing,dur:t,onComplete:onComplete}); - if(once){ - seq.dir=false; - return; - } - clearTimeout(seq.step); - seq.step=setTimeout(function(){ - _on(); - },t); - } - /* stops sequence */ - function _off(){ - clearTimeout(seq.step); - _delete(seq,"step"); - _stop(el); - } - }, - /* -------------------- */ - - - /* returns a yx array from value */ - _arr=function(val){ - var o=$(this).data(pluginPfx).opt,vals=[]; - if(typeof val==="function"){val=val();} /* check if the value is a single anonymous function */ - /* check if value is object or array, its length and create an array with yx values */ - if(!(val instanceof Array)){ /* object value (e.g. {y:"100",x:"100"}, 100 etc.) */ - vals[0]=val.y ? val.y : val.x || o.axis==="x" ? null : val; - vals[1]=val.x ? val.x : val.y || o.axis==="y" ? null : val; - }else{ /* array value (e.g. [100,100]) */ - vals=val.length>1 ? [val[0],val[1]] : o.axis==="x" ? [null,val[0]] : [val[0],null]; - } - /* check if array values are anonymous functions */ - if(typeof vals[0]==="function"){vals[0]=vals[0]();} - if(typeof vals[1]==="function"){vals[1]=vals[1]();} - return vals; - }, - /* -------------------- */ - - - /* translates values (e.g. "top", 100, "100px", "#id") to actual scroll-to positions */ - _to=function(val,dir){ - if(val==null || typeof val=="undefined"){return;} - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - mCSB_container=$("#mCSB_"+d.idx+"_container"), - wrapper=mCSB_container.parent(), - t=typeof val; - if(!dir){dir=o.axis==="x" ? "x" : "y";} - var contentLength=dir==="x" ? mCSB_container.outerWidth(false)-wrapper.width() : mCSB_container.outerHeight(false)-wrapper.height(), - contentPos=dir==="x" ? mCSB_container[0].offsetLeft : mCSB_container[0].offsetTop, - cssProp=dir==="x" ? "left" : "top"; - switch(t){ - case "function": /* this currently is not used. Consider removing it */ - return val(); - break; - case "object": /* js/jquery object */ - var obj=val.jquery ? val : $(val); - if(!obj.length){return;} - return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0]; - break; - case "string": case "number": - if(_isNumeric(val)){ /* numeric value */ - return Math.abs(val); - }else if(val.indexOf("%")!==-1){ /* percentage value */ - return Math.abs(contentLength*parseInt(val)/100); - }else if(val.indexOf("-=")!==-1){ /* decrease value */ - return Math.abs(contentPos-parseInt(val.split("-=")[1])); - }else if(val.indexOf("+=")!==-1){ /* inrease value */ - var p=(contentPos+parseInt(val.split("+=")[1])); - return p>=0 ? 0 : Math.abs(p); - }else if(val.indexOf("px")!==-1 && _isNumeric(val.split("px")[0])){ /* pixels string value (e.g. "100px") */ - return Math.abs(val.split("px")[0]); - }else{ - if(val==="top" || val==="left"){ /* special strings */ - return 0; - }else if(val==="bottom"){ - return Math.abs(wrapper.height()-mCSB_container.outerHeight(false)); - }else if(val==="right"){ - return Math.abs(wrapper.width()-mCSB_container.outerWidth(false)); - }else if(val==="first" || val==="last"){ - var obj=mCSB_container.find(":"+val); - return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0]; - }else{ - if($(val).length){ /* jquery selector */ - return dir==="x" ? _childPos($(val))[1] : _childPos($(val))[0]; - }else{ /* other values (e.g. "100em") */ - mCSB_container.css(cssProp,val); - methods.update.call(null,$this[0]); - return; - } - } - } - break; - } - }, - /* -------------------- */ - - - /* calls the update method automatically */ - _autoUpdate=function(rem){ - var $this=$(this),d=$this.data(pluginPfx),o=d.opt, - mCSB_container=$("#mCSB_"+d.idx+"_container"); - if(rem){ - /* - removes autoUpdate timer - usage: _autoUpdate.call(this,"remove"); - */ - clearTimeout(mCSB_container[0].autoUpdate); - _delete(mCSB_container[0],"autoUpdate"); - return; - } - upd(); - function upd(){ - clearTimeout(mCSB_container[0].autoUpdate); - if($this.parents("html").length===0){ - /* check element in dom tree */ - $this=null; - return; - } - mCSB_container[0].autoUpdate=setTimeout(function(){ - /* update on specific selector(s) length and size change */ - if(o.advanced.updateOnSelectorChange){ - d.poll.change.n=sizesSum(); - if(d.poll.change.n!==d.poll.change.o){ - d.poll.change.o=d.poll.change.n; - doUpd(3); - return; - } - } - /* update on main element and scrollbar size changes */ - if(o.advanced.updateOnContentResize){ - d.poll.size.n=$this[0].scrollHeight+$this[0].scrollWidth+mCSB_container[0].offsetHeight+$this[0].offsetHeight+$this[0].offsetWidth; - if(d.poll.size.n!==d.poll.size.o){ - d.poll.size.o=d.poll.size.n; - doUpd(1); - return; - } - } - /* update on image load */ - if(o.advanced.updateOnImageLoad){ - if(!(o.advanced.updateOnImageLoad==="auto" && o.axis==="y")){ //by default, it doesn't run on vertical content - d.poll.img.n=mCSB_container.find("img").length; - if(d.poll.img.n!==d.poll.img.o){ - d.poll.img.o=d.poll.img.n; - mCSB_container.find("img").each(function(){ - imgLoader(this); - }); - return; - } - } - } - if(o.advanced.updateOnSelectorChange || o.advanced.updateOnContentResize || o.advanced.updateOnImageLoad){upd();} - },o.advanced.autoUpdateTimeout); - } - /* a tiny image loader */ - function imgLoader(el){ - if($(el).hasClass(classes[2])){doUpd(); return;} - var img=new Image(); - function createDelegate(contextObject,delegateMethod){ - return function(){return delegateMethod.apply(contextObject,arguments);} - } - function imgOnLoad(){ - this.onload=null; - $(el).addClass(classes[2]); - doUpd(2); - } - img.onload=createDelegate(img,imgOnLoad); - img.src=el.src; - } - /* returns the total height and width sum of all elements matching the selector */ - function sizesSum(){ - if(o.advanced.updateOnSelectorChange===true){o.advanced.updateOnSelectorChange="*";} - var total=0,sel=mCSB_container.find(o.advanced.updateOnSelectorChange); - if(o.advanced.updateOnSelectorChange && sel.length>0){sel.each(function(){total+=this.offsetHeight+this.offsetWidth;});} - return total; - } - /* calls the update method */ - function doUpd(cb){ - clearTimeout(mCSB_container[0].autoUpdate); - methods.update.call(null,$this[0],cb); - } - }, - /* -------------------- */ - - - /* snaps scrolling to a multiple of a pixels number */ - _snapAmount=function(to,amount,offset){ - return (Math.round(to/amount)*amount-offset); - }, - /* -------------------- */ - - - /* stops content and scrollbar animations */ - _stop=function(el){ - var d=el.data(pluginPfx), - sel=$("#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal"); - sel.each(function(){ - _stopTween.call(this); - }); - }, - /* -------------------- */ - - - /* - ANIMATES CONTENT - This is where the actual scrolling happens - */ - _scrollTo=function(el,to,options){ - var d=el.data(pluginPfx),o=d.opt, - defaults={ - trigger:"internal", - dir:"y", - scrollEasing:"mcsEaseOut", - drag:false, - dur:o.scrollInertia, - overwrite:"all", - callbacks:true, - onStart:true, - onUpdate:true, - onComplete:true - }, - options=$.extend(defaults,options), - dur=[options.dur,(options.drag ? 0 : options.dur)], - mCustomScrollBox=$("#mCSB_"+d.idx), - mCSB_container=$("#mCSB_"+d.idx+"_container"), - wrapper=mCSB_container.parent(), - totalScrollOffsets=o.callbacks.onTotalScrollOffset ? _arr.call(el,o.callbacks.onTotalScrollOffset) : [0,0], - totalScrollBackOffsets=o.callbacks.onTotalScrollBackOffset ? _arr.call(el,o.callbacks.onTotalScrollBackOffset) : [0,0]; - d.trigger=options.trigger; - if(wrapper.scrollTop()!==0 || wrapper.scrollLeft()!==0){ /* always reset scrollTop/Left */ - $(".mCSB_"+d.idx+"_scrollbar").css("visibility","visible"); - wrapper.scrollTop(0).scrollLeft(0); - } - if(to==="_resetY" && !d.contentReset.y){ - /* callbacks: onOverflowYNone */ - if(_cb("onOverflowYNone")){o.callbacks.onOverflowYNone.call(el[0]);} - d.contentReset.y=1; - } - if(to==="_resetX" && !d.contentReset.x){ - /* callbacks: onOverflowXNone */ - if(_cb("onOverflowXNone")){o.callbacks.onOverflowXNone.call(el[0]);} - d.contentReset.x=1; - } - if(to==="_resetY" || to==="_resetX"){return;} - if((d.contentReset.y || !el[0].mcs) && d.overflowed[0]){ - /* callbacks: onOverflowY */ - if(_cb("onOverflowY")){o.callbacks.onOverflowY.call(el[0]);} - d.contentReset.x=null; - } - if((d.contentReset.x || !el[0].mcs) && d.overflowed[1]){ - /* callbacks: onOverflowX */ - if(_cb("onOverflowX")){o.callbacks.onOverflowX.call(el[0]);} - d.contentReset.x=null; - } - if(o.snapAmount){ /* scrolling snapping */ - var snapAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : options.dir==="x" ? o.snapAmount[1] : o.snapAmount[0]; - to=_snapAmount(to,snapAmount,o.snapOffset); - } - switch(options.dir){ - case "x": - var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_horizontal"), - property="left", - contentPos=mCSB_container[0].offsetLeft, - limit=[ - mCustomScrollBox.width()-mCSB_container.outerWidth(false), - mCSB_dragger.parent().width()-mCSB_dragger.width() - ], - scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.x)], - tso=totalScrollOffsets[1], - tsbo=totalScrollBackOffsets[1], - totalScrollOffset=tso>0 ? tso/d.scrollRatio.x : 0, - totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.x : 0; - break; - case "y": - var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_vertical"), - property="top", - contentPos=mCSB_container[0].offsetTop, - limit=[ - mCustomScrollBox.height()-mCSB_container.outerHeight(false), - mCSB_dragger.parent().height()-mCSB_dragger.height() - ], - scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.y)], - tso=totalScrollOffsets[0], - tsbo=totalScrollBackOffsets[0], - totalScrollOffset=tso>0 ? tso/d.scrollRatio.y : 0, - totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.y : 0; - break; - } - if(scrollTo[1]<0 || (scrollTo[0]===0 && scrollTo[1]===0)){ - scrollTo=[0,0]; - }else if(scrollTo[1]>=limit[1]){ - scrollTo=[limit[0],limit[1]]; - }else{ - scrollTo[0]=-scrollTo[0]; - } - if(!el[0].mcs){ - _mcs(); /* init mcs object (once) to make it available before callbacks */ - if(_cb("onInit")){o.callbacks.onInit.call(el[0]);} /* callbacks: onInit */ - } - clearTimeout(mCSB_container[0].onCompleteTimeout); - _tweenTo(mCSB_dragger[0],property,Math.round(scrollTo[1]),dur[1],options.scrollEasing); - if(!d.tweenRunning && ((contentPos===0 && scrollTo[0]>=0) || (contentPos===limit[0] && scrollTo[0]<=limit[0]))){return;} - _tweenTo(mCSB_container[0],property,Math.round(scrollTo[0]),dur[0],options.scrollEasing,options.overwrite,{ - onStart:function(){ - if(options.callbacks && options.onStart && !d.tweenRunning){ - /* callbacks: onScrollStart */ - if(_cb("onScrollStart")){_mcs(); o.callbacks.onScrollStart.call(el[0]);} - d.tweenRunning=true; - _onDragClasses(mCSB_dragger); - d.cbOffsets=_cbOffsets(); - } - },onUpdate:function(){ - if(options.callbacks && options.onUpdate){ - /* callbacks: whileScrolling */ - if(_cb("whileScrolling")){_mcs(); o.callbacks.whileScrolling.call(el[0]);} - } - },onComplete:function(){ - if(options.callbacks && options.onComplete){ - if(o.axis==="yx"){clearTimeout(mCSB_container[0].onCompleteTimeout);} - var t=mCSB_container[0].idleTimer || 0; - mCSB_container[0].onCompleteTimeout=setTimeout(function(){ - /* callbacks: onScroll, onTotalScroll, onTotalScrollBack */ - if(_cb("onScroll")){_mcs(); o.callbacks.onScroll.call(el[0]);} - if(_cb("onTotalScroll") && scrollTo[1]>=limit[1]-totalScrollOffset && d.cbOffsets[0]){_mcs(); o.callbacks.onTotalScroll.call(el[0]);} - if(_cb("onTotalScrollBack") && scrollTo[1]<=totalScrollBackOffset && d.cbOffsets[1]){_mcs(); o.callbacks.onTotalScrollBack.call(el[0]);} - d.tweenRunning=false; - mCSB_container[0].idleTimer=0; - _onDragClasses(mCSB_dragger,"hide"); - },t); - } - } - }); - /* checks if callback function exists */ - function _cb(cb){ - return d && o.callbacks[cb] && typeof o.callbacks[cb]==="function"; - } - /* checks whether callback offsets always trigger */ - function _cbOffsets(){ - return [o.callbacks.alwaysTriggerOffsets || contentPos>=limit[0]+tso,o.callbacks.alwaysTriggerOffsets || contentPos<=-tsbo]; - } - /* - populates object with useful values for the user - values: - content: this.mcs.content - content top position: this.mcs.top - content left position: this.mcs.left - dragger top position: this.mcs.draggerTop - dragger left position: this.mcs.draggerLeft - scrolling y percentage: this.mcs.topPct - scrolling x percentage: this.mcs.leftPct - scrolling direction: this.mcs.direction - */ - function _mcs(){ - var cp=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], /* content position */ - dp=[mCSB_dragger[0].offsetTop,mCSB_dragger[0].offsetLeft], /* dragger position */ - cl=[mCSB_container.outerHeight(false),mCSB_container.outerWidth(false)], /* content length */ - pl=[mCustomScrollBox.height(),mCustomScrollBox.width()]; /* content parent length */ - el[0].mcs={ - content:mCSB_container, /* original content wrapper as jquery object */ - top:cp[0],left:cp[1],draggerTop:dp[0],draggerLeft:dp[1], - topPct:Math.round((100*Math.abs(cp[0]))/(Math.abs(cl[0])-pl[0])),leftPct:Math.round((100*Math.abs(cp[1]))/(Math.abs(cl[1])-pl[1])), - direction:options.dir - }; - /* - this refers to the original element containing the scrollbar(s) - usage: this.mcs.top, this.mcs.leftPct etc. - */ - } - }, - /* -------------------- */ - - - /* - CUSTOM JAVASCRIPT ANIMATION TWEEN - Lighter and faster than jquery animate() and css transitions - Animates top/left properties and includes easings - */ - _tweenTo=function(el,prop,to,duration,easing,overwrite,callbacks){ - if(!el._mTween){el._mTween={top:{},left:{}};} - var callbacks=callbacks || {}, - onStart=callbacks.onStart || function(){},onUpdate=callbacks.onUpdate || function(){},onComplete=callbacks.onComplete || function(){}, - startTime=_getTime(),_delay,progress=0,from=el.offsetTop,elStyle=el.style,_request,tobj=el._mTween[prop]; - if(prop==="left"){from=el.offsetLeft;} - var diff=to-from; - tobj.stop=0; - if(overwrite!=="none"){_cancelTween();} - _startTween(); - function _step(){ - if(tobj.stop){return;} - if(!progress){onStart.call();} - progress=_getTime()-startTime; - _tween(); - if(progress>=tobj.time){ - tobj.time=(progress>tobj.time) ? progress+_delay-(progress-tobj.time) : progress+_delay-1; - if(tobj.time0){ - tobj.currVal=_ease(tobj.time,from,diff,duration,easing); - elStyle[prop]=Math.round(tobj.currVal)+"px"; - }else{ - elStyle[prop]=to+"px"; - } - onUpdate.call(); - } - function _startTween(){ - _delay=1000/60; - tobj.time=progress+_delay; - _request=(!window.requestAnimationFrame) ? function(f){_tween(); return setTimeout(f,0.01);} : window.requestAnimationFrame; - tobj.id=_request(_step); - } - function _cancelTween(){ - if(tobj.id==null){return;} - if(!window.requestAnimationFrame){clearTimeout(tobj.id); - }else{window.cancelAnimationFrame(tobj.id);} - tobj.id=null; - } - function _ease(t,b,c,d,type){ - switch(type){ - case "linear": case "mcsLinear": - return c*t/d + b; - break; - case "mcsLinearOut": - t/=d; t--; return c * Math.sqrt(1 - t*t) + b; - break; - case "easeInOutSmooth": - t/=d/2; - if(t<1) return c/2*t*t + b; - t--; - return -c/2 * (t*(t-2) - 1) + b; - break; - case "easeInOutStrong": - t/=d/2; - if(t<1) return c/2 * Math.pow( 2, 10 * (t - 1) ) + b; - t--; - return c/2 * ( -Math.pow( 2, -10 * t) + 2 ) + b; - break; - case "easeInOut": case "mcsEaseInOut": - t/=d/2; - if(t<1) return c/2*t*t*t + b; - t-=2; - return c/2*(t*t*t + 2) + b; - break; - case "easeOutSmooth": - t/=d; t--; - return -c * (t*t*t*t - 1) + b; - break; - case "easeOutStrong": - return c * ( -Math.pow( 2, -10 * t/d ) + 1 ) + b; - break; - case "easeOut": case "mcsEaseOut": default: - var ts=(t/=d)*t,tc=ts*t; - return b+c*(0.499999999999997*tc*ts + -2.5*ts*ts + 5.5*tc + -6.5*ts + 4*t); - } - } - }, - /* -------------------- */ - - - /* returns current time */ - _getTime=function(){ - if(window.performance && window.performance.now){ - return window.performance.now(); - }else{ - if(window.performance && window.performance.webkitNow){ - return window.performance.webkitNow(); - }else{ - if(Date.now){return Date.now();}else{return new Date().getTime();} - } - } - }, - /* -------------------- */ - - - /* stops a tween */ - _stopTween=function(){ - var el=this; - if(!el._mTween){el._mTween={top:{},left:{}};} - var props=["top","left"]; - for(var i=0; i
","
"], + wrapperClass=o.axis==="yx" ? "mCSB_vertical_horizontal" : o.axis==="x" ? "mCSB_horizontal" : "mCSB_vertical", + scrollbars=o.axis==="yx" ? scrollbar[0]+scrollbar[1] : o.axis==="x" ? scrollbar[1] : scrollbar[0], + contentWrapper=o.axis==="yx" ? "
" : "", + autoHideClass=o.autoHideScrollbar ? " "+classes[6] : "", + scrollbarDirClass=(o.axis!=="x" && d.langDir==="rtl") ? " "+classes[7] : ""; + if(o.setWidth){$this.css("width",o.setWidth);} /* set element width */ + if(o.setHeight){$this.css("height",o.setHeight);} /* set element height */ + o.setLeft=(o.axis!=="y" && d.langDir==="rtl") ? "989999px" : o.setLeft; /* adjust left position for rtl direction */ + $this.addClass(pluginNS+" _"+pluginPfx+"_"+d.idx+autoHideClass+scrollbarDirClass).wrapInner("
"); + var mCustomScrollBox=$("#mCSB_"+d.idx), + mCSB_container=$("#mCSB_"+d.idx+"_container"); + if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){ + mCSB_container.css("width",_contentWidth(mCSB_container)); + } + if(o.scrollbarPosition==="outside"){ + if($this.css("position")==="static"){ /* requires elements with non-static position */ + $this.css("position","relative"); + } + $this.css("overflow","visible"); + mCustomScrollBox.addClass("mCSB_outside").after(scrollbars); + }else{ + mCustomScrollBox.addClass("mCSB_inside").append(scrollbars); + mCSB_container.wrap(contentWrapper); + } + _scrollButtons.call(this); /* add scrollbar buttons */ + /* minimum dragger length */ + var mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; + mCSB_dragger[0].css("min-height",mCSB_dragger[0].height()); + mCSB_dragger[1].css("min-width",mCSB_dragger[1].width()); + }, + /* -------------------- */ + + + /* calculates content width */ + _contentWidth=function(el){ + var val=[el[0].scrollWidth,Math.max.apply(Math,el.children().map(function(){return $(this).outerWidth(true);}).get())],w=el.parent().width(); + return val[0]>w ? val[0] : val[1]>w ? val[1] : "100%"; + }, + /* -------------------- */ + + + /* expands content horizontally */ + _expandContentHorizontally=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + mCSB_container=$("#mCSB_"+d.idx+"_container"); + if(o.advanced.autoExpandHorizontalScroll && o.axis!=="y"){ + /* calculate scrollWidth */ + mCSB_container.css({"width":"auto","min-width":0,"overflow-x":"scroll"}); + var w=Math.ceil(mCSB_container[0].scrollWidth); + if(o.advanced.autoExpandHorizontalScroll===3 || (o.advanced.autoExpandHorizontalScroll!==2 && w>mCSB_container.parent().width())){ + mCSB_container.css({"width":w,"min-width":"100%","overflow-x":"inherit"}); + }else{ + /* + wrap content with an infinite width div and set its position to absolute and width to auto. + Setting width to auto before calculating the actual width is important! + We must let the browser set the width as browser zoom values are impossible to calculate. + */ + mCSB_container.css({"overflow-x":"inherit","position":"absolute"}) + .wrap("
") + .css({ /* set actual width, original position and un-wrap */ + /* + get the exact width (with decimals) and then round-up. + Using jquery outerWidth() will round the width value which will mess up with inner elements that have non-integer width + */ + "width":(Math.ceil(mCSB_container[0].getBoundingClientRect().right+0.4)-Math.floor(mCSB_container[0].getBoundingClientRect().left)), + "min-width":"100%", + "position":"relative" + }).unwrap(); + } + } + }, + /* -------------------- */ + + + /* adds scrollbar buttons */ + _scrollButtons=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + mCSB_scrollTools=$(".mCSB_"+d.idx+"_scrollbar:first"), + tabindex=!_isNumeric(o.scrollButtons.tabindex) ? "" : "tabindex='"+o.scrollButtons.tabindex+"'", + btnHTML=[ + "", + "", + "", + "" + ], + btn=[(o.axis==="x" ? btnHTML[2] : btnHTML[0]),(o.axis==="x" ? btnHTML[3] : btnHTML[1]),btnHTML[2],btnHTML[3]]; + if(o.scrollButtons.enable){ + mCSB_scrollTools.prepend(btn[0]).append(btn[1]).next(".mCSB_scrollTools").prepend(btn[2]).append(btn[3]); + } + }, + /* -------------------- */ + + + /* auto-adjusts scrollbar dragger length */ + _setDraggerLength=function(){ + var $this=$(this),d=$this.data(pluginPfx), + mCustomScrollBox=$("#mCSB_"+d.idx), + mCSB_container=$("#mCSB_"+d.idx+"_container"), + mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], + ratio=[mCustomScrollBox.height()/mCSB_container.outerHeight(false),mCustomScrollBox.width()/mCSB_container.outerWidth(false)], + l=[ + parseInt(mCSB_dragger[0].css("min-height")),Math.round(ratio[0]*mCSB_dragger[0].parent().height()), + parseInt(mCSB_dragger[1].css("min-width")),Math.round(ratio[1]*mCSB_dragger[1].parent().width()) + ], + h=oldIE && (l[1]contentHeight){contentHeight=h;} + if(w>contentWidth){contentWidth=w;} + return [contentHeight>mCustomScrollBox.height(),contentWidth>mCustomScrollBox.width()]; + }, + /* -------------------- */ + + + /* resets content position to 0 */ + _resetContentPosition=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + mCustomScrollBox=$("#mCSB_"+d.idx), + mCSB_container=$("#mCSB_"+d.idx+"_container"), + mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; + _stop($this); /* stop any current scrolling before resetting */ + if((o.axis!=="x" && !d.overflowed[0]) || (o.axis==="y" && d.overflowed[0])){ /* reset y */ + mCSB_dragger[0].add(mCSB_container).css("top",0); + _scrollTo($this,"_resetY"); + } + if((o.axis!=="y" && !d.overflowed[1]) || (o.axis==="x" && d.overflowed[1])){ /* reset x */ + var cx=dx=0; + if(d.langDir==="rtl"){ /* adjust left position for rtl direction */ + cx=mCustomScrollBox.width()-mCSB_container.outerWidth(false); + dx=Math.abs(cx/d.scrollRatio.x); + } + mCSB_container.css("left",cx); + mCSB_dragger[1].css("left",dx); + _scrollTo($this,"_resetX"); + } + }, + /* -------------------- */ + + + /* binds scrollbar events */ + _bindEvents=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt; + if(!d.bindEvents){ /* check if events are already bound */ + _draggable.call(this); + if(o.contentTouchScroll){_contentDraggable.call(this);} + _selectable.call(this); + if(o.mouseWheel.enable){ /* bind mousewheel fn when plugin is available */ + function _mwt(){ + mousewheelTimeout=setTimeout(function(){ + if(!$.event.special.mousewheel){ + _mwt(); + }else{ + clearTimeout(mousewheelTimeout); + _mousewheel.call($this[0]); + } + },100); + } + var mousewheelTimeout; + _mwt(); + } + _draggerRail.call(this); + _wrapperScroll.call(this); + if(o.advanced.autoScrollOnFocus){_focus.call(this);} + if(o.scrollButtons.enable){_buttons.call(this);} + if(o.keyboard.enable){_keyboard.call(this);} + d.bindEvents=true; + } + }, + /* -------------------- */ + + + /* unbinds scrollbar events */ + _unbindEvents=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + namespace=pluginPfx+"_"+d.idx, + sb=".mCSB_"+d.idx+"_scrollbar", + sel=$("#mCSB_"+d.idx+",#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,"+sb+" ."+classes[12]+",#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal,"+sb+">a"), + mCSB_container=$("#mCSB_"+d.idx+"_container"); + if(o.advanced.releaseDraggableSelectors){sel.add($(o.advanced.releaseDraggableSelectors));} + if(o.advanced.extraDraggableSelectors){sel.add($(o.advanced.extraDraggableSelectors));} + if(d.bindEvents){ /* check if events are bound */ + /* unbind namespaced events from document/selectors */ + $(document).add($(!_canAccessIFrame() || top.document)).unbind("."+namespace); + sel.each(function(){ + $(this).unbind("."+namespace); + }); + /* clear and delete timeouts/objects */ + clearTimeout($this[0]._focusTimeout); _delete($this[0],"_focusTimeout"); + clearTimeout(d.sequential.step); _delete(d.sequential,"step"); + clearTimeout(mCSB_container[0].onCompleteTimeout); _delete(mCSB_container[0],"onCompleteTimeout"); + d.bindEvents=false; + } + }, + /* -------------------- */ + + + /* toggles scrollbar visibility */ + _scrollbarVisibility=function(disabled){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + contentWrapper=$("#mCSB_"+d.idx+"_container_wrapper"), + content=contentWrapper.length ? contentWrapper : $("#mCSB_"+d.idx+"_container"), + scrollbar=[$("#mCSB_"+d.idx+"_scrollbar_vertical"),$("#mCSB_"+d.idx+"_scrollbar_horizontal")], + mCSB_dragger=[scrollbar[0].find(".mCSB_dragger"),scrollbar[1].find(".mCSB_dragger")]; + if(o.axis!=="x"){ + if(d.overflowed[0] && !disabled){ + scrollbar[0].add(mCSB_dragger[0]).add(scrollbar[0].children("a")).css("display","block"); + content.removeClass(classes[8]+" "+classes[10]); + }else{ + if(o.alwaysShowScrollbar){ + if(o.alwaysShowScrollbar!==2){mCSB_dragger[0].css("display","none");} + content.removeClass(classes[10]); + }else{ + scrollbar[0].css("display","none"); + content.addClass(classes[10]); + } + content.addClass(classes[8]); + } + } + if(o.axis!=="y"){ + if(d.overflowed[1] && !disabled){ + scrollbar[1].add(mCSB_dragger[1]).add(scrollbar[1].children("a")).css("display","block"); + content.removeClass(classes[9]+" "+classes[11]); + }else{ + if(o.alwaysShowScrollbar){ + if(o.alwaysShowScrollbar!==2){mCSB_dragger[1].css("display","none");} + content.removeClass(classes[11]); + }else{ + scrollbar[1].css("display","none"); + content.addClass(classes[11]); + } + content.addClass(classes[9]); + } + } + if(!d.overflowed[0] && !d.overflowed[1]){ + $this.addClass(classes[5]); + }else{ + $this.removeClass(classes[5]); + } + }, + /* -------------------- */ + + + /* returns input coordinates of pointer, touch and mouse events (relative to document) */ + _coordinates=function(e){ + var t=e.type,o=e.target.ownerDocument!==document && frameElement!==null ? [$(frameElement).offset().top,$(frameElement).offset().left] : null, + io=_canAccessIFrame() && e.target.ownerDocument!==top.document && frameElement!==null ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left] : [0,0]; + switch(t){ + case "pointerdown": case "MSPointerDown": case "pointermove": case "MSPointerMove": case "pointerup": case "MSPointerUp": + return o ? [e.originalEvent.pageY-o[0]+io[0],e.originalEvent.pageX-o[1]+io[1],false] : [e.originalEvent.pageY,e.originalEvent.pageX,false]; + break; + case "touchstart": case "touchmove": case "touchend": + var touch=e.originalEvent.touches[0] || e.originalEvent.changedTouches[0], + touches=e.originalEvent.touches.length || e.originalEvent.changedTouches.length; + return e.target.ownerDocument!==document ? [touch.screenY,touch.screenX,touches>1] : [touch.pageY,touch.pageX,touches>1]; + break; + default: + return o ? [e.pageY-o[0]+io[0],e.pageX-o[1]+io[1],false] : [e.pageY,e.pageX,false]; + } + }, + /* -------------------- */ + + + /* + SCROLLBAR DRAG EVENTS + scrolls content via scrollbar dragging + */ + _draggable=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + namespace=pluginPfx+"_"+d.idx, + draggerId=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"], + mCSB_container=$("#mCSB_"+d.idx+"_container"), + mCSB_dragger=$("#"+draggerId[0]+",#"+draggerId[1]), + draggable,dragY,dragX, + rds=o.advanced.releaseDraggableSelectors ? mCSB_dragger.add($(o.advanced.releaseDraggableSelectors)) : mCSB_dragger, + eds=o.advanced.extraDraggableSelectors ? $(!_canAccessIFrame() || top.document).add($(o.advanced.extraDraggableSelectors)) : $(!_canAccessIFrame() || top.document); + mCSB_dragger.bind("contextmenu."+namespace,function(e){ + e.preventDefault(); //prevent right click + }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){ + e.stopImmediatePropagation(); + e.preventDefault(); + if(!_mouseBtnLeft(e)){return;} /* left mouse button only */ + touchActive=true; + if(oldIE){document.onselectstart=function(){return false;}} /* disable text selection for IE < 9 */ + _iframe.call(mCSB_container,false); /* enable scrollbar dragging over iframes by disabling their events */ + _stop($this); + draggable=$(this); + var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left, + h=draggable.height()+offset.top,w=draggable.width()+offset.left; + if(y0 && x0){ + dragY=y; + dragX=x; + } + _onDragClasses(draggable,"active",o.autoExpandScrollbar); + }).bind("touchmove."+namespace,function(e){ + e.stopImmediatePropagation(); + e.preventDefault(); + var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left; + _drag(dragY,dragX,y,x); + }); + $(document).add(eds).bind("mousemove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace,function(e){ + if(draggable){ + var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left; + if(dragY===y && dragX===x){return;} /* has it really moved? */ + _drag(dragY,dragX,y,x); + } + }).add(rds).bind("mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){ + if(draggable){ + _onDragClasses(draggable,"active",o.autoExpandScrollbar); + draggable=null; + } + touchActive=false; + if(oldIE){document.onselectstart=null;} /* enable text selection for IE < 9 */ + _iframe.call(mCSB_container,true); /* enable iframes events */ + }); + function _drag(dragY,dragX,y,x){ + mCSB_container[0].idleTimer=o.scrollInertia<233 ? 250 : 0; + if(draggable.attr("id")===draggerId[1]){ + var dir="x",to=((draggable[0].offsetLeft-dragX)+x)*d.scrollRatio.x; + }else{ + var dir="y",to=((draggable[0].offsetTop-dragY)+y)*d.scrollRatio.y; + } + _scrollTo($this,to.toString(),{dir:dir,drag:true}); + } + }, + /* -------------------- */ + + + /* + TOUCH SWIPE EVENTS + scrolls content via touch swipe + Emulates the native touch-swipe scrolling with momentum found in iOS, Android and WP devices + */ + _contentDraggable=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + namespace=pluginPfx+"_"+d.idx, + mCustomScrollBox=$("#mCSB_"+d.idx), + mCSB_container=$("#mCSB_"+d.idx+"_container"), + mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], + draggable,dragY,dragX,touchStartY,touchStartX,touchMoveY=[],touchMoveX=[],startTime,runningTime,endTime,distance,speed,amount, + durA=0,durB,overwrite=o.axis==="yx" ? "none" : "all",touchIntent=[],touchDrag,docDrag, + iframe=mCSB_container.find("iframe"), + events=[ + "touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace, //start + "touchmove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace, //move + "touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace //end + ], + touchAction=document.body.style.touchAction!==undefined && document.body.style.touchAction!==""; + mCSB_container.bind(events[0],function(e){ + _onTouchstart(e); + }).bind(events[1],function(e){ + _onTouchmove(e); + }); + mCustomScrollBox.bind(events[0],function(e){ + _onTouchstart2(e); + }).bind(events[2],function(e){ + _onTouchend(e); + }); + if(iframe.length){ + iframe.each(function(){ + $(this).bind("load",function(){ + /* bind events on accessible iframes */ + if(_canAccessIFrame(this)){ + $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){ + _onTouchstart(e); + _onTouchstart2(e); + }).bind(events[1],function(e){ + _onTouchmove(e); + }).bind(events[2],function(e){ + _onTouchend(e); + }); + } + }); + }); + } + function _onTouchstart(e){ + if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){touchable=0; return;} + touchable=1; touchDrag=0; docDrag=0; draggable=1; + $this.removeClass("mCS_touch_action"); + var offset=mCSB_container.offset(); + dragY=_coordinates(e)[0]-offset.top; + dragX=_coordinates(e)[1]-offset.left; + touchIntent=[_coordinates(e)[0],_coordinates(e)[1]]; + } + function _onTouchmove(e){ + if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){return;} + if(!o.documentTouchScroll){e.preventDefault();} + e.stopImmediatePropagation(); + if(docDrag && !touchDrag){return;} + if(draggable){ + runningTime=_getTime(); + var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left, + easing="mcsLinearOut"; + touchMoveY.push(y); + touchMoveX.push(x); + touchIntent[2]=Math.abs(_coordinates(e)[0]-touchIntent[0]); touchIntent[3]=Math.abs(_coordinates(e)[1]-touchIntent[1]); + if(d.overflowed[0]){ + var limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(), + prevent=((dragY-y)>0 && (y-dragY)>-(limit*d.scrollRatio.y) && (touchIntent[3]*20 && (x-dragX)>-(limitX*d.scrollRatio.x) && (touchIntent[2]*230){return;} + speed=1000/(endTime-startTime); + var easing="mcsEaseOut",slow=speed<2.5, + diff=slow ? [touchMoveY[touchMoveY.length-2],touchMoveX[touchMoveX.length-2]] : [0,0]; + distance=slow ? [(y-diff[0]),(x-diff[1])] : [y-touchStartY,x-touchStartX]; + var absDistance=[Math.abs(distance[0]),Math.abs(distance[1])]; + speed=slow ? [Math.abs(distance[0]/4),Math.abs(distance[1]/4)] : [speed,speed]; + var a=[ + Math.abs(mCSB_container[0].offsetTop)-(distance[0]*_m((absDistance[0]/speed[0]),speed[0])), + Math.abs(mCSB_container[0].offsetLeft)-(distance[1]*_m((absDistance[1]/speed[1]),speed[1])) + ]; + amount=o.axis==="yx" ? [a[0],a[1]] : o.axis==="x" ? [null,a[1]] : [a[0],null]; + durB=[(absDistance[0]*4)+o.scrollInertia,(absDistance[1]*4)+o.scrollInertia]; + var md=parseInt(o.contentTouchScroll) || 0; /* absolute minimum distance required */ + amount[0]=absDistance[0]>md ? amount[0] : 0; + amount[1]=absDistance[1]>md ? amount[1] : 0; + if(d.overflowed[0]){_drag(amount[0],durB[0],easing,"y",overwrite,false);} + if(d.overflowed[1]){_drag(amount[1],durB[1],easing,"x",overwrite,false);} + } + function _m(ds,s){ + var r=[s*1.5,s*2,s/1.5,s/2]; + if(ds>90){ + return s>4 ? r[0] : r[3]; + }else if(ds>60){ + return s>3 ? r[3] : r[2]; + }else if(ds>30){ + return s>8 ? r[1] : s>6 ? r[0] : s>4 ? s : r[2]; + }else{ + return s>8 ? s : r[3]; + } + } + function _drag(amount,dur,easing,dir,overwrite,drag){ + if(!amount){return;} + _scrollTo($this,amount.toString(),{dur:dur,scrollEasing:easing,dir:dir,overwrite:overwrite,drag:drag}); + } + }, + /* -------------------- */ + + + /* + SELECT TEXT EVENTS + scrolls content when text is selected + */ + _selectable=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential, + namespace=pluginPfx+"_"+d.idx, + mCSB_container=$("#mCSB_"+d.idx+"_container"), + wrapper=mCSB_container.parent(), + action; + mCSB_container.bind("mousedown."+namespace,function(e){ + if(touchable){return;} + if(!action){action=1; touchActive=true;} + }).add(document).bind("mousemove."+namespace,function(e){ + if(!touchable && action && _sel()){ + var offset=mCSB_container.offset(), + y=_coordinates(e)[0]-offset.top+mCSB_container[0].offsetTop,x=_coordinates(e)[1]-offset.left+mCSB_container[0].offsetLeft; + if(y>0 && y0 && xwrapper.height()){ + _seq("on",40); + } + } + if(o.axis!=="y" && d.overflowed[1]){ + if(x<0){ + _seq("on",37); + }else if(x>wrapper.width()){ + _seq("on",39); + } + } + } + } + }).bind("mouseup."+namespace+" dragend."+namespace,function(e){ + if(touchable){return;} + if(action){action=0; _seq("off",null);} + touchActive=false; + }); + function _sel(){ + return window.getSelection ? window.getSelection().toString() : + document.selection && document.selection.type!="Control" ? document.selection.createRange().text : 0; + } + function _seq(a,c,s){ + seq.type=s && action ? "stepped" : "stepless"; + seq.scrollAmount=10; + _sequentialScroll($this,a,c,"mcsLinearOut",s ? 60 : null); + } + }, + /* -------------------- */ + + + /* + MOUSE WHEEL EVENT + scrolls content via mouse-wheel + via mouse-wheel plugin (https://github.com/brandonaaron/jquery-mousewheel) + */ + _mousewheel=function(){ + if(!$(this).data(pluginPfx)){return;} /* Check if the scrollbar is ready to use mousewheel events (issue: #185) */ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + namespace=pluginPfx+"_"+d.idx, + mCustomScrollBox=$("#mCSB_"+d.idx), + mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], + iframe=$("#mCSB_"+d.idx+"_container").find("iframe"); + if(iframe.length){ + iframe.each(function(){ + $(this).bind("load",function(){ + /* bind events on accessible iframes */ + if(_canAccessIFrame(this)){ + $(this.contentDocument || this.contentWindow.document).bind("mousewheel."+namespace,function(e,delta){ + _onMousewheel(e,delta); + }); + } + }); + }); + } + mCustomScrollBox.bind("mousewheel."+namespace,function(e,delta){ + _onMousewheel(e,delta); + }); + function _onMousewheel(e,delta){ + _stop($this); + if(_disableMousewheel($this,e.target)){return;} /* disables mouse-wheel when hovering specific elements */ + var deltaFactor=o.mouseWheel.deltaFactor!=="auto" ? parseInt(o.mouseWheel.deltaFactor) : (oldIE && e.deltaFactor<100) ? 100 : e.deltaFactor || 100, + dur=o.scrollInertia; + if(o.axis==="x" || o.mouseWheel.axis==="x"){ + var dir="x", + px=[Math.round(deltaFactor*d.scrollRatio.x),parseInt(o.mouseWheel.scrollAmount)], + amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.width() ? mCustomScrollBox.width()*0.9 : px[0], + contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetLeft), + draggerPos=mCSB_dragger[1][0].offsetLeft, + limit=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(), + dlt=o.mouseWheel.axis==="y" ? (e.deltaY || delta) : e.deltaX; + }else{ + var dir="y", + px=[Math.round(deltaFactor*d.scrollRatio.y),parseInt(o.mouseWheel.scrollAmount)], + amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.height() ? mCustomScrollBox.height()*0.9 : px[0], + contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetTop), + draggerPos=mCSB_dragger[0][0].offsetTop, + limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(), + dlt=e.deltaY || delta; + } + if((dir==="y" && !d.overflowed[0]) || (dir==="x" && !d.overflowed[1])){return;} + if(o.mouseWheel.invert || e.webkitDirectionInvertedFromDevice){dlt=-dlt;} + if(o.mouseWheel.normalizeDelta){dlt=dlt<0 ? -1 : 1;} + if((dlt>0 && draggerPos!==0) || (dlt<0 && draggerPos!==limit) || o.mouseWheel.preventDefault){ + e.stopImmediatePropagation(); + e.preventDefault(); + } + if(e.deltaFactor<5 && !o.mouseWheel.normalizeDelta){ + //very low deltaFactor values mean some kind of delta acceleration (e.g. osx trackpad), so adjusting scrolling accordingly + amount=e.deltaFactor; dur=17; + } + _scrollTo($this,(contentPos-(dlt*amount)).toString(),{dir:dir,dur:dur}); + } + }, + /* -------------------- */ + + + /* checks if iframe can be accessed */ + _canAccessIFrameCache=new Object(), + _canAccessIFrame=function(iframe){ + var result=false,cacheKey=false,html=null; + if(iframe===undefined){ + cacheKey="#empty"; + }else if($(iframe).attr("id")!==undefined){ + cacheKey=$(iframe).attr("id"); + } + if(cacheKey!==false && _canAccessIFrameCache[cacheKey]!==undefined){ + return _canAccessIFrameCache[cacheKey]; + } + if(!iframe){ + try{ + var doc=top.document; + html=doc.body.innerHTML; + }catch(err){/* do nothing */} + result=(html!==null); + }else{ + try{ + var doc=iframe.contentDocument || iframe.contentWindow.document; + html=doc.body.innerHTML; + }catch(err){/* do nothing */} + result=(html!==null); + } + if(cacheKey!==false){_canAccessIFrameCache[cacheKey]=result;} + return result; + }, + /* -------------------- */ + + + /* switches iframe's pointer-events property (drag, mousewheel etc. over cross-domain iframes) */ + _iframe=function(evt){ + var el=this.find("iframe"); + if(!el.length){return;} /* check if content contains iframes */ + var val=!evt ? "none" : "auto"; + el.css("pointer-events",val); /* for IE11, iframe's display property should not be "block" */ + }, + /* -------------------- */ + + + /* disables mouse-wheel when hovering specific elements like select, datalist etc. */ + _disableMousewheel=function(el,target){ + var tag=target.nodeName.toLowerCase(), + tags=el.data(pluginPfx).opt.mouseWheel.disableOver, + /* elements that require focus */ + focusTags=["select","textarea"]; + return $.inArray(tag,tags) > -1 && !($.inArray(tag,focusTags) > -1 && !$(target).is(":focus")); + }, + /* -------------------- */ + + + /* + DRAGGER RAIL CLICK EVENT + scrolls content via dragger rail + */ + _draggerRail=function(){ + var $this=$(this),d=$this.data(pluginPfx), + namespace=pluginPfx+"_"+d.idx, + mCSB_container=$("#mCSB_"+d.idx+"_container"), + wrapper=mCSB_container.parent(), + mCSB_draggerContainer=$(".mCSB_"+d.idx+"_scrollbar ."+classes[12]), + clickable; + mCSB_draggerContainer.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){ + touchActive=true; + if(!$(e.target).hasClass("mCSB_dragger")){clickable=1;} + }).bind("touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){ + touchActive=false; + }).bind("click."+namespace,function(e){ + if(!clickable){return;} + clickable=0; + if($(e.target).hasClass(classes[12]) || $(e.target).hasClass("mCSB_draggerRail")){ + _stop($this); + var el=$(this),mCSB_dragger=el.find(".mCSB_dragger"); + if(el.parent(".mCSB_scrollTools_horizontal").length>0){ + if(!d.overflowed[1]){return;} + var dir="x", + clickDir=e.pageX>mCSB_dragger.offset().left ? -1 : 1, + to=Math.abs(mCSB_container[0].offsetLeft)-(clickDir*(wrapper.width()*0.9)); + }else{ + if(!d.overflowed[0]){return;} + var dir="y", + clickDir=e.pageY>mCSB_dragger.offset().top ? -1 : 1, + to=Math.abs(mCSB_container[0].offsetTop)-(clickDir*(wrapper.height()*0.9)); + } + _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); + } + }); + }, + /* -------------------- */ + + + /* + FOCUS EVENT + scrolls content via element focus (e.g. clicking an input, pressing TAB key etc.) + */ + _focus=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + namespace=pluginPfx+"_"+d.idx, + mCSB_container=$("#mCSB_"+d.idx+"_container"), + wrapper=mCSB_container.parent(); + mCSB_container.bind("focusin."+namespace,function(e){ + var el=$(document.activeElement), + nested=mCSB_container.find(".mCustomScrollBox").length, + dur=0; + if(!el.is(o.advanced.autoScrollOnFocus)){return;} + _stop($this); + clearTimeout($this[0]._focusTimeout); + $this[0]._focusTimer=nested ? (dur+17)*nested : 0; + $this[0]._focusTimeout=setTimeout(function(){ + var to=[_childPos(el)[0],_childPos(el)[1]], + contentPos=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], + isVisible=[ + (contentPos[0]+to[0]>=0 && contentPos[0]+to[0]=0 && contentPos[0]+to[1]a"); + btn.bind("contextmenu."+namespace,function(e){ + e.preventDefault(); //prevent right click + }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){ + e.preventDefault(); + if(!_mouseBtnLeft(e)){return;} /* left mouse button only */ + var btnClass=$(this).attr("class"); + seq.type=o.scrollButtons.scrollType; + switch(e.type){ + case "mousedown": case "touchstart": case "pointerdown": case "MSPointerDown": + if(seq.type==="stepped"){return;} + touchActive=true; + d.tweenRunning=false; + _seq("on",btnClass); + break; + case "mouseup": case "touchend": case "pointerup": case "MSPointerUp": + case "mouseout": case "pointerout": case "MSPointerOut": + if(seq.type==="stepped"){return;} + touchActive=false; + if(seq.dir){_seq("off",btnClass);} + break; + case "click": + if(seq.type!=="stepped" || d.tweenRunning){return;} + _seq("on",btnClass); + break; + } + function _seq(a,c){ + seq.scrollAmount=o.scrollButtons.scrollAmount; + _sequentialScroll($this,a,c); + } + }); + }, + /* -------------------- */ + + + /* + KEYBOARD EVENTS + scrolls content via keyboard + Keys: up arrow, down arrow, left arrow, right arrow, PgUp, PgDn, Home, End + */ + _keyboard=function(){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential, + namespace=pluginPfx+"_"+d.idx, + mCustomScrollBox=$("#mCSB_"+d.idx), + mCSB_container=$("#mCSB_"+d.idx+"_container"), + wrapper=mCSB_container.parent(), + editables="input,textarea,select,datalist,keygen,[contenteditable='true']", + iframe=mCSB_container.find("iframe"), + events=["blur."+namespace+" keydown."+namespace+" keyup."+namespace]; + if(iframe.length){ + iframe.each(function(){ + $(this).bind("load",function(){ + /* bind events on accessible iframes */ + if(_canAccessIFrame(this)){ + $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){ + _onKeyboard(e); + }); + } + }); + }); + } + mCustomScrollBox.attr("tabindex","0").bind(events[0],function(e){ + _onKeyboard(e); + }); + function _onKeyboard(e){ + switch(e.type){ + case "blur": + if(d.tweenRunning && seq.dir){_seq("off",null);} + break; + case "keydown": case "keyup": + var code=e.keyCode ? e.keyCode : e.which,action="on"; + if((o.axis!=="x" && (code===38 || code===40)) || (o.axis!=="y" && (code===37 || code===39))){ + /* up (38), down (40), left (37), right (39) arrows */ + if(((code===38 || code===40) && !d.overflowed[0]) || ((code===37 || code===39) && !d.overflowed[1])){return;} + if(e.type==="keyup"){action="off";} + if(!$(document.activeElement).is(editables)){ + e.preventDefault(); + e.stopImmediatePropagation(); + _seq(action,code); + } + }else if(code===33 || code===34){ + /* PgUp (33), PgDn (34) */ + if(d.overflowed[0] || d.overflowed[1]){ + e.preventDefault(); + e.stopImmediatePropagation(); + } + if(e.type==="keyup"){ + _stop($this); + var keyboardDir=code===34 ? -1 : 1; + if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){ + var dir="x",to=Math.abs(mCSB_container[0].offsetLeft)-(keyboardDir*(wrapper.width()*0.9)); + }else{ + var dir="y",to=Math.abs(mCSB_container[0].offsetTop)-(keyboardDir*(wrapper.height()*0.9)); + } + _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); + } + }else if(code===35 || code===36){ + /* End (35), Home (36) */ + if(!$(document.activeElement).is(editables)){ + if(d.overflowed[0] || d.overflowed[1]){ + e.preventDefault(); + e.stopImmediatePropagation(); + } + if(e.type==="keyup"){ + if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){ + var dir="x",to=code===35 ? Math.abs(wrapper.width()-mCSB_container.outerWidth(false)) : 0; + }else{ + var dir="y",to=code===35 ? Math.abs(wrapper.height()-mCSB_container.outerHeight(false)) : 0; + } + _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); + } + } + } + break; + } + function _seq(a,c){ + seq.type=o.keyboard.scrollType; + seq.scrollAmount=o.keyboard.scrollAmount; + if(seq.type==="stepped" && d.tweenRunning){return;} + _sequentialScroll($this,a,c); + } + } + }, + /* -------------------- */ + + + /* scrolls content sequentially (used when scrolling via buttons, keyboard arrows etc.) */ + _sequentialScroll=function(el,action,trigger,e,s){ + var d=el.data(pluginPfx),o=d.opt,seq=d.sequential, + mCSB_container=$("#mCSB_"+d.idx+"_container"), + once=seq.type==="stepped" ? true : false, + steplessSpeed=o.scrollInertia < 26 ? 26 : o.scrollInertia, /* 26/1.5=17 */ + steppedSpeed=o.scrollInertia < 1 ? 17 : o.scrollInertia; + switch(action){ + case "on": + seq.dir=[ + (trigger===classes[16] || trigger===classes[15] || trigger===39 || trigger===37 ? "x" : "y"), + (trigger===classes[13] || trigger===classes[15] || trigger===38 || trigger===37 ? -1 : 1) + ]; + _stop(el); + if(_isNumeric(trigger) && seq.type==="stepped"){return;} + _on(once); + break; + case "off": + _off(); + if(once || (d.tweenRunning && seq.dir)){ + _on(true); + } + break; + } + + /* starts sequence */ + function _on(once){ + if(o.snapAmount){seq.scrollAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : seq.dir[0]==="x" ? o.snapAmount[1] : o.snapAmount[0];} /* scrolling snapping */ + var c=seq.type!=="stepped", /* continuous scrolling */ + t=s ? s : !once ? 1000/60 : c ? steplessSpeed/1.5 : steppedSpeed, /* timer */ + m=!once ? 2.5 : c ? 7.5 : 40, /* multiplier */ + contentPos=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)], + ratio=[d.scrollRatio.y>10 ? 10 : d.scrollRatio.y,d.scrollRatio.x>10 ? 10 : d.scrollRatio.x], + amount=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*(ratio[1]*m)) : contentPos[0]+(seq.dir[1]*(ratio[0]*m)), + px=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*parseInt(seq.scrollAmount)) : contentPos[0]+(seq.dir[1]*parseInt(seq.scrollAmount)), + to=seq.scrollAmount!=="auto" ? px : amount, + easing=e ? e : !once ? "mcsLinear" : c ? "mcsLinearOut" : "mcsEaseInOut", + onComplete=!once ? false : true; + if(once && t<17){ + to=seq.dir[0]==="x" ? contentPos[1] : contentPos[0]; + } + _scrollTo(el,to.toString(),{dir:seq.dir[0],scrollEasing:easing,dur:t,onComplete:onComplete}); + if(once){ + seq.dir=false; + return; + } + clearTimeout(seq.step); + seq.step=setTimeout(function(){ + _on(); + },t); + } + /* stops sequence */ + function _off(){ + clearTimeout(seq.step); + _delete(seq,"step"); + _stop(el); + } + }, + /* -------------------- */ + + + /* returns a yx array from value */ + _arr=function(val){ + var o=$(this).data(pluginPfx).opt,vals=[]; + if(typeof val==="function"){val=val();} /* check if the value is a single anonymous function */ + /* check if value is object or array, its length and create an array with yx values */ + if(!(val instanceof Array)){ /* object value (e.g. {y:"100",x:"100"}, 100 etc.) */ + vals[0]=val.y ? val.y : val.x || o.axis==="x" ? null : val; + vals[1]=val.x ? val.x : val.y || o.axis==="y" ? null : val; + }else{ /* array value (e.g. [100,100]) */ + vals=val.length>1 ? [val[0],val[1]] : o.axis==="x" ? [null,val[0]] : [val[0],null]; + } + /* check if array values are anonymous functions */ + if(typeof vals[0]==="function"){vals[0]=vals[0]();} + if(typeof vals[1]==="function"){vals[1]=vals[1]();} + return vals; + }, + /* -------------------- */ + + + /* translates values (e.g. "top", 100, "100px", "#id") to actual scroll-to positions */ + _to=function(val,dir){ + if(val==null || typeof val=="undefined"){return;} + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + mCSB_container=$("#mCSB_"+d.idx+"_container"), + wrapper=mCSB_container.parent(), + t=typeof val; + if(!dir){dir=o.axis==="x" ? "x" : "y";} + var contentLength=dir==="x" ? mCSB_container.outerWidth(false)-wrapper.width() : mCSB_container.outerHeight(false)-wrapper.height(), + contentPos=dir==="x" ? mCSB_container[0].offsetLeft : mCSB_container[0].offsetTop, + cssProp=dir==="x" ? "left" : "top"; + switch(t){ + case "function": /* this currently is not used. Consider removing it */ + return val(); + break; + case "object": /* js/jquery object */ + var obj=val.jquery ? val : $(val); + if(!obj.length){return;} + return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0]; + break; + case "string": case "number": + if(_isNumeric(val)){ /* numeric value */ + return Math.abs(val); + }else if(val.indexOf("%")!==-1){ /* percentage value */ + return Math.abs(contentLength*parseInt(val)/100); + }else if(val.indexOf("-=")!==-1){ /* decrease value */ + return Math.abs(contentPos-parseInt(val.split("-=")[1])); + }else if(val.indexOf("+=")!==-1){ /* inrease value */ + var p=(contentPos+parseInt(val.split("+=")[1])); + return p>=0 ? 0 : Math.abs(p); + }else if(val.indexOf("px")!==-1 && _isNumeric(val.split("px")[0])){ /* pixels string value (e.g. "100px") */ + return Math.abs(val.split("px")[0]); + }else{ + if(val==="top" || val==="left"){ /* special strings */ + return 0; + }else if(val==="bottom"){ + return Math.abs(wrapper.height()-mCSB_container.outerHeight(false)); + }else if(val==="right"){ + return Math.abs(wrapper.width()-mCSB_container.outerWidth(false)); + }else if(val==="first" || val==="last"){ + var obj=mCSB_container.find(":"+val); + return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0]; + }else{ + if($(val).length){ /* jquery selector */ + return dir==="x" ? _childPos($(val))[1] : _childPos($(val))[0]; + }else{ /* other values (e.g. "100em") */ + mCSB_container.css(cssProp,val); + methods.update.call(null,$this[0]); + return; + } + } + } + break; + } + }, + /* -------------------- */ + + + /* calls the update method automatically */ + _autoUpdate=function(rem){ + var $this=$(this),d=$this.data(pluginPfx),o=d.opt, + mCSB_container=$("#mCSB_"+d.idx+"_container"); + if(rem){ + /* + removes autoUpdate timer + usage: _autoUpdate.call(this,"remove"); + */ + clearTimeout(mCSB_container[0].autoUpdate); + _delete(mCSB_container[0],"autoUpdate"); + return; + } + upd(); + function upd(){ + clearTimeout(mCSB_container[0].autoUpdate); + if($this.parents("html").length===0){ + /* check element in dom tree */ + $this=null; + return; + } + mCSB_container[0].autoUpdate=setTimeout(function(){ + /* update on specific selector(s) length and size change */ + if(o.advanced.updateOnSelectorChange){ + d.poll.change.n=sizesSum(); + if(d.poll.change.n!==d.poll.change.o){ + d.poll.change.o=d.poll.change.n; + doUpd(3); + return; + } + } + /* update on main element and scrollbar size changes */ + if(o.advanced.updateOnContentResize){ + d.poll.size.n=$this[0].scrollHeight+$this[0].scrollWidth+mCSB_container[0].offsetHeight+$this[0].offsetHeight+$this[0].offsetWidth; + if(d.poll.size.n!==d.poll.size.o){ + d.poll.size.o=d.poll.size.n; + doUpd(1); + return; + } + } + /* update on image load */ + if(o.advanced.updateOnImageLoad){ + if(!(o.advanced.updateOnImageLoad==="auto" && o.axis==="y")){ //by default, it doesn't run on vertical content + d.poll.img.n=mCSB_container.find("img").length; + if(d.poll.img.n!==d.poll.img.o){ + d.poll.img.o=d.poll.img.n; + mCSB_container.find("img").each(function(){ + imgLoader(this); + }); + return; + } + } + } + if(o.advanced.updateOnSelectorChange || o.advanced.updateOnContentResize || o.advanced.updateOnImageLoad){upd();} + },o.advanced.autoUpdateTimeout); + } + /* a tiny image loader */ + function imgLoader(el){ + if($(el).hasClass(classes[2])){doUpd(); return;} + var img=new Image(); + function createDelegate(contextObject,delegateMethod){ + return function(){return delegateMethod.apply(contextObject,arguments);} + } + function imgOnLoad(){ + this.onload=null; + $(el).addClass(classes[2]); + doUpd(2); + } + img.onload=createDelegate(img,imgOnLoad); + img.src=el.src; + } + /* returns the total height and width sum of all elements matching the selector */ + function sizesSum(){ + if(o.advanced.updateOnSelectorChange===true){o.advanced.updateOnSelectorChange="*";} + var total=0,sel=mCSB_container.find(o.advanced.updateOnSelectorChange); + if(o.advanced.updateOnSelectorChange && sel.length>0){sel.each(function(){total+=this.offsetHeight+this.offsetWidth;});} + return total; + } + /* calls the update method */ + function doUpd(cb){ + clearTimeout(mCSB_container[0].autoUpdate); + methods.update.call(null,$this[0],cb); + } + }, + /* -------------------- */ + + + /* snaps scrolling to a multiple of a pixels number */ + _snapAmount=function(to,amount,offset){ + return (Math.round(to/amount)*amount-offset); + }, + /* -------------------- */ + + + /* stops content and scrollbar animations */ + _stop=function(el){ + var d=el.data(pluginPfx), + sel=$("#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal"); + sel.each(function(){ + _stopTween.call(this); + }); + }, + /* -------------------- */ + + + /* + ANIMATES CONTENT + This is where the actual scrolling happens + */ + _scrollTo=function(el,to,options){ + var d=el.data(pluginPfx),o=d.opt, + defaults={ + trigger:"internal", + dir:"y", + scrollEasing:"mcsEaseOut", + drag:false, + dur:o.scrollInertia, + overwrite:"all", + callbacks:true, + onStart:true, + onUpdate:true, + onComplete:true + }, + options=$.extend(defaults,options), + dur=[options.dur,(options.drag ? 0 : options.dur)], + mCustomScrollBox=$("#mCSB_"+d.idx), + mCSB_container=$("#mCSB_"+d.idx+"_container"), + wrapper=mCSB_container.parent(), + totalScrollOffsets=o.callbacks.onTotalScrollOffset ? _arr.call(el,o.callbacks.onTotalScrollOffset) : [0,0], + totalScrollBackOffsets=o.callbacks.onTotalScrollBackOffset ? _arr.call(el,o.callbacks.onTotalScrollBackOffset) : [0,0]; + d.trigger=options.trigger; + if(wrapper.scrollTop()!==0 || wrapper.scrollLeft()!==0){ /* always reset scrollTop/Left */ + $(".mCSB_"+d.idx+"_scrollbar").css("visibility","visible"); + wrapper.scrollTop(0).scrollLeft(0); + } + if(to==="_resetY" && !d.contentReset.y){ + /* callbacks: onOverflowYNone */ + if(_cb("onOverflowYNone")){o.callbacks.onOverflowYNone.call(el[0]);} + d.contentReset.y=1; + } + if(to==="_resetX" && !d.contentReset.x){ + /* callbacks: onOverflowXNone */ + if(_cb("onOverflowXNone")){o.callbacks.onOverflowXNone.call(el[0]);} + d.contentReset.x=1; + } + if(to==="_resetY" || to==="_resetX"){return;} + if((d.contentReset.y || !el[0].mcs) && d.overflowed[0]){ + /* callbacks: onOverflowY */ + if(_cb("onOverflowY")){o.callbacks.onOverflowY.call(el[0]);} + d.contentReset.x=null; + } + if((d.contentReset.x || !el[0].mcs) && d.overflowed[1]){ + /* callbacks: onOverflowX */ + if(_cb("onOverflowX")){o.callbacks.onOverflowX.call(el[0]);} + d.contentReset.x=null; + } + if(o.snapAmount){ /* scrolling snapping */ + var snapAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : options.dir==="x" ? o.snapAmount[1] : o.snapAmount[0]; + to=_snapAmount(to,snapAmount,o.snapOffset); + } + switch(options.dir){ + case "x": + var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_horizontal"), + property="left", + contentPos=mCSB_container[0].offsetLeft, + limit=[ + mCustomScrollBox.width()-mCSB_container.outerWidth(false), + mCSB_dragger.parent().width()-mCSB_dragger.width() + ], + scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.x)], + tso=totalScrollOffsets[1], + tsbo=totalScrollBackOffsets[1], + totalScrollOffset=tso>0 ? tso/d.scrollRatio.x : 0, + totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.x : 0; + break; + case "y": + var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_vertical"), + property="top", + contentPos=mCSB_container[0].offsetTop, + limit=[ + mCustomScrollBox.height()-mCSB_container.outerHeight(false), + mCSB_dragger.parent().height()-mCSB_dragger.height() + ], + scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.y)], + tso=totalScrollOffsets[0], + tsbo=totalScrollBackOffsets[0], + totalScrollOffset=tso>0 ? tso/d.scrollRatio.y : 0, + totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.y : 0; + break; + } + if(scrollTo[1]<0 || (scrollTo[0]===0 && scrollTo[1]===0)){ + scrollTo=[0,0]; + }else if(scrollTo[1]>=limit[1]){ + scrollTo=[limit[0],limit[1]]; + }else{ + scrollTo[0]=-scrollTo[0]; + } + if(!el[0].mcs){ + _mcs(); /* init mcs object (once) to make it available before callbacks */ + if(_cb("onInit")){o.callbacks.onInit.call(el[0]);} /* callbacks: onInit */ + } + clearTimeout(mCSB_container[0].onCompleteTimeout); + _tweenTo(mCSB_dragger[0],property,Math.round(scrollTo[1]),dur[1],options.scrollEasing); + if(!d.tweenRunning && ((contentPos===0 && scrollTo[0]>=0) || (contentPos===limit[0] && scrollTo[0]<=limit[0]))){return;} + _tweenTo(mCSB_container[0],property,Math.round(scrollTo[0]),dur[0],options.scrollEasing,options.overwrite,{ + onStart:function(){ + if(options.callbacks && options.onStart && !d.tweenRunning){ + /* callbacks: onScrollStart */ + if(_cb("onScrollStart")){_mcs(); o.callbacks.onScrollStart.call(el[0]);} + d.tweenRunning=true; + _onDragClasses(mCSB_dragger); + d.cbOffsets=_cbOffsets(); + } + },onUpdate:function(){ + if(options.callbacks && options.onUpdate){ + /* callbacks: whileScrolling */ + if(_cb("whileScrolling")){_mcs(); o.callbacks.whileScrolling.call(el[0]);} + } + },onComplete:function(){ + if(options.callbacks && options.onComplete){ + if(o.axis==="yx"){clearTimeout(mCSB_container[0].onCompleteTimeout);} + var t=mCSB_container[0].idleTimer || 0; + mCSB_container[0].onCompleteTimeout=setTimeout(function(){ + /* callbacks: onScroll, onTotalScroll, onTotalScrollBack */ + if(_cb("onScroll")){_mcs(); o.callbacks.onScroll.call(el[0]);} + if(_cb("onTotalScroll") && scrollTo[1]>=limit[1]-totalScrollOffset && d.cbOffsets[0]){_mcs(); o.callbacks.onTotalScroll.call(el[0]);} + if(_cb("onTotalScrollBack") && scrollTo[1]<=totalScrollBackOffset && d.cbOffsets[1]){_mcs(); o.callbacks.onTotalScrollBack.call(el[0]);} + d.tweenRunning=false; + mCSB_container[0].idleTimer=0; + _onDragClasses(mCSB_dragger,"hide"); + },t); + } + } + }); + /* checks if callback function exists */ + function _cb(cb){ + return d && o.callbacks[cb] && typeof o.callbacks[cb]==="function"; + } + /* checks whether callback offsets always trigger */ + function _cbOffsets(){ + return [o.callbacks.alwaysTriggerOffsets || contentPos>=limit[0]+tso,o.callbacks.alwaysTriggerOffsets || contentPos<=-tsbo]; + } + /* + populates object with useful values for the user + values: + content: this.mcs.content + content top position: this.mcs.top + content left position: this.mcs.left + dragger top position: this.mcs.draggerTop + dragger left position: this.mcs.draggerLeft + scrolling y percentage: this.mcs.topPct + scrolling x percentage: this.mcs.leftPct + scrolling direction: this.mcs.direction + */ + function _mcs(){ + var cp=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], /* content position */ + dp=[mCSB_dragger[0].offsetTop,mCSB_dragger[0].offsetLeft], /* dragger position */ + cl=[mCSB_container.outerHeight(false),mCSB_container.outerWidth(false)], /* content length */ + pl=[mCustomScrollBox.height(),mCustomScrollBox.width()]; /* content parent length */ + el[0].mcs={ + content:mCSB_container, /* original content wrapper as jquery object */ + top:cp[0],left:cp[1],draggerTop:dp[0],draggerLeft:dp[1], + topPct:Math.round((100*Math.abs(cp[0]))/(Math.abs(cl[0])-pl[0])),leftPct:Math.round((100*Math.abs(cp[1]))/(Math.abs(cl[1])-pl[1])), + direction:options.dir + }; + /* + this refers to the original element containing the scrollbar(s) + usage: this.mcs.top, this.mcs.leftPct etc. + */ + } + }, + /* -------------------- */ + + + /* + CUSTOM JAVASCRIPT ANIMATION TWEEN + Lighter and faster than jquery animate() and css transitions + Animates top/left properties and includes easings + */ + _tweenTo=function(el,prop,to,duration,easing,overwrite,callbacks){ + if(!el._mTween){el._mTween={top:{},left:{}};} + var callbacks=callbacks || {}, + onStart=callbacks.onStart || function(){},onUpdate=callbacks.onUpdate || function(){},onComplete=callbacks.onComplete || function(){}, + startTime=_getTime(),_delay,progress=0,from=el.offsetTop,elStyle=el.style,_request,tobj=el._mTween[prop]; + if(prop==="left"){from=el.offsetLeft;} + var diff=to-from; + tobj.stop=0; + if(overwrite!=="none"){_cancelTween();} + _startTween(); + function _step(){ + if(tobj.stop){return;} + if(!progress){onStart.call();} + progress=_getTime()-startTime; + _tween(); + if(progress>=tobj.time){ + tobj.time=(progress>tobj.time) ? progress+_delay-(progress-tobj.time) : progress+_delay-1; + if(tobj.time0){ + tobj.currVal=_ease(tobj.time,from,diff,duration,easing); + elStyle[prop]=Math.round(tobj.currVal)+"px"; + }else{ + elStyle[prop]=to+"px"; + } + onUpdate.call(); + } + function _startTween(){ + _delay=1000/60; + tobj.time=progress+_delay; + _request=(!window.requestAnimationFrame) ? function(f){_tween(); return setTimeout(f,0.01);} : window.requestAnimationFrame; + tobj.id=_request(_step); + } + function _cancelTween(){ + if(tobj.id==null){return;} + if(!window.requestAnimationFrame){clearTimeout(tobj.id); + }else{window.cancelAnimationFrame(tobj.id);} + tobj.id=null; + } + function _ease(t,b,c,d,type){ + switch(type){ + case "linear": case "mcsLinear": + return c*t/d + b; + break; + case "mcsLinearOut": + t/=d; t--; return c * Math.sqrt(1 - t*t) + b; + break; + case "easeInOutSmooth": + t/=d/2; + if(t<1) return c/2*t*t + b; + t--; + return -c/2 * (t*(t-2) - 1) + b; + break; + case "easeInOutStrong": + t/=d/2; + if(t<1) return c/2 * Math.pow( 2, 10 * (t - 1) ) + b; + t--; + return c/2 * ( -Math.pow( 2, -10 * t) + 2 ) + b; + break; + case "easeInOut": case "mcsEaseInOut": + t/=d/2; + if(t<1) return c/2*t*t*t + b; + t-=2; + return c/2*(t*t*t + 2) + b; + break; + case "easeOutSmooth": + t/=d; t--; + return -c * (t*t*t*t - 1) + b; + break; + case "easeOutStrong": + return c * ( -Math.pow( 2, -10 * t/d ) + 1 ) + b; + break; + case "easeOut": case "mcsEaseOut": default: + var ts=(t/=d)*t,tc=ts*t; + return b+c*(0.499999999999997*tc*ts + -2.5*ts*ts + 5.5*tc + -6.5*ts + 4*t); + } + } + }, + /* -------------------- */ + + + /* returns current time */ + _getTime=function(){ + if(window.performance && window.performance.now){ + return window.performance.now(); + }else{ + if(window.performance && window.performance.webkitNow){ + return window.performance.webkitNow(); + }else{ + if(Date.now){return Date.now();}else{return new Date().getTime();} + } + } + }, + /* -------------------- */ + + + /* stops a tween */ + _stopTween=function(){ + var el=this; + if(!el._mTween){el._mTween={top:{},left:{}};} + var props=["top","left"]; + for(var i=0; i1ftil|!aaopk-n`7wNK~-ZC)R?J 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 AIsgCw literal 33396 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 z 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 Uf7jd@#=?9wRCJWfm26-C4|#WZ6951J literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-edit-modal.png b/docs/en/Tutorials/images/bookstore-edit-modal.png deleted file mode 100644 index c9114037920257aa32ed6a52f0a8558df97e305c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33178 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 Bz7_xg diff --git a/docs/en/Tutorials/images/bookstore-new-book-button.png b/docs/en/Tutorials/images/bookstore-new-book-button.png index dfd4b5d8aadadc0c484a11f818fccc9f66fab73d..8112fe13524e414ad349cd29448628af8e9dabb1 100644 GIT binary patch literal 80262 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�)o-@Rd(s5r>{_tu9~pZ8WanW1g(! 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 m3D{_I^Aq=9Vxum2B1C@Q1? literal 34614 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/Angular/images/bookstore-swagger-api.png b/docs/en/Tutorials/images/bookstore-swagger-api.png similarity index 100% rename from docs/en/Tutorials/Angular/images/bookstore-swagger-api.png rename to docs/en/Tutorials/images/bookstore-swagger-api.png diff --git a/docs/en/Tutorials/images/bookstore-swagger-book-dto-properties.png b/docs/en/Tutorials/images/bookstore-swagger-book-dto-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..66d630bb56c1b468d460f29d87b7a8562ffa330b GIT binary patch literal 44547 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 I(e%?l0IBfJKL7v# literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-swagger.png b/docs/en/Tutorials/images/bookstore-swagger.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce36a11bc0c58c3ba8191f938ebc6e86f30b856 GIT binary patch literal 829976 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 DJrEH@ literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/Angular/images/bookstore-test-explorer.png b/docs/en/Tutorials/images/bookstore-test-explorer.png similarity index 100% rename from docs/en/Tutorials/Angular/images/bookstore-test-explorer.png rename to docs/en/Tutorials/images/bookstore-test-explorer.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-test-js-proxy-getlist-network.png b/docs/en/Tutorials/images/bookstore-test-js-proxy-getlist-network.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-test-js-proxy-getlist-network.png rename to docs/en/Tutorials/images/bookstore-test-js-proxy-getlist-network.png diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-test-js-proxy-getlist.png b/docs/en/Tutorials/images/bookstore-test-js-proxy-getlist.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-test-js-proxy-getlist.png rename to docs/en/Tutorials/images/bookstore-test-js-proxy-getlist.png diff --git a/docs/en/Tutorials/images/bookstore-test-projects-angular.png b/docs/en/Tutorials/images/bookstore-test-projects-angular.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8947238e164144a0b490d67af28d319cbf2d98 GIT binary patch literal 13218 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-test-projects-v2.png b/docs/en/Tutorials/images/bookstore-test-projects-mvc.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-test-projects-v2.png rename to docs/en/Tutorials/images/bookstore-test-projects-mvc.png diff --git a/docs/en/Tutorials/images/bookstore-test-projects-v2.png b/docs/en/Tutorials/images/bookstore-test-projects-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..8701164d7514d15b27b6f83dfde1536bc38f5c58 GIT binary patch literal 6864 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-user-management.png b/docs/en/Tutorials/images/bookstore-user-management.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-user-management.png rename to docs/en/Tutorials/images/bookstore-user-management.png diff --git a/docs/en/Tutorials/images/bookstore-visual-studio-solution-v3.png b/docs/en/Tutorials/images/bookstore-visual-studio-solution-v3.png new file mode 100644 index 0000000000000000000000000000000000000000..307e3516a5414173016efaedd22e53983fa25f1c GIT binary patch literal 12919 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/mozilla-self-signed-cert-error.png b/docs/en/Tutorials/images/mozilla-self-signed-cert-error.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e2fc0e65da4aabdfaeeccaeee512191ac72eaf GIT binary patch literal 42949 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 _bookRepository; + private readonly IGuidGenerator _guidGenerator; + + public BookStoreTestDataSeedContributor( + IRepository bookRepository, + IGuidGenerator guidGenerator) + { + _bookRepository = bookRepository; + _guidGenerator = guidGenerator; + } + + public async Task SeedAsync(DataSeedContext context) + { + await _bookRepository.InsertAsync( + new Book(id: _guidGenerator.Create(), + name: "Test book 1", + type: BookType.Fantastic, + publishDate: new DateTime(2015, 05, 24), + price: 21 + ) + ); + + await _bookRepository.InsertAsync( + new Book(id: _guidGenerator.Create(), + name: "Test book 2", + type: BookType.Science, + publishDate: new DateTime(2014, 02, 11), + price: 15 + ) + ); + } + } +} +```` + +* `IRepository` is injected and used it in the `SeedAsync` to create two book entities as the test data. + +### Testing the application service BookAppService +* `IGuidGenerator` is injected to create GUIDs. While `Guid.NewGuid()` would perfectly work for testing, `IGuidGenerator` has additional features especially important while using real databases. Further information, see the [Guid generation document](https://docs.abp.io/{{Document_Language_Code}}/abp/{{Document_Version}}/Guid-Generation). + +Create a test class named `BookAppService_Tests` in the `Acme.BookStore.Application.Tests` project: + +````csharp +using System; +using System.Linq; +using System.Threading.Tasks; +using Xunit; +using Shouldly; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Validation; +using Microsoft.EntityFrameworkCore.Internal; + +namespace Acme.BookStore +{ + public class BookAppService_Tests : BookStoreApplicationTestBase + { + private readonly IBookAppService _bookAppService; + + public BookAppService_Tests() + { + _bookAppService = GetRequiredService(); + } + + [Fact] + public async Task Should_Get_List_Of_Books() + { + //Act + var result = await _bookAppService.GetListAsync( + new PagedAndSortedResultRequestDto() + ); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(b => b.Name == "Test book 1"); + } + } +} +```` + +* `Should_Get_List_Of_Books` test simply uses `BookAppService.GetListAsync` method to get and check the list of users. + +Add a new test that creates a valid new book: + +````csharp +[Fact] +public async Task Should_Create_A_Valid_Book() +{ + //Act + var result = await _bookAppService.CreateAsync( + new CreateUpdateBookDto + { + Name = "New test book 42", + Price = 10, + PublishDate = System.DateTime.Now, + Type = BookType.ScienceFiction + } + ); + + //Assert + result.Id.ShouldNotBe(Guid.Empty); + result.Name.ShouldBe("New test book 42"); +} +```` + +Add a new test that tries to create an invalid book and fails: + +````csharp +[Fact] +public async Task Should_Not_Create_A_Book_Without_Name() +{ + var exception = await Assert.ThrowsAsync(async () => + { + await _bookAppService.CreateAsync( + new CreateUpdateBookDto + { + Name = "", + Price = 10, + PublishDate = DateTime.Now, + Type = BookType.ScienceFiction + } + ); + }); + + exception.ValidationErrors + .ShouldContain(err => err.MemberNames.Any(mem => mem == "Name")); +} +```` + +* Since the `Name` is empty, ABP will throw an `AbpValidationException`. + +Open the **Test Explorer Window** (use Test -> Windows -> Test Explorer menu if it is not visible) and **Run All** tests: + +![bookstore-appservice-tests](./images/bookstore-appservice-tests.png) + +Congratulations, the green icons show, the tests have been successfully passed! + diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 0de3be1651..3d8ece312f 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -33,18 +33,21 @@ }, { "text": "Tutorials", - "path": "Tutorials/Index.md", "items": [ { "text": "Application Development", "items": [ { - "text": "With ASP.NET Core MVC UI", - "path": "Tutorials/AspNetCore-Mvc/Part-I.md" + "text": "Part-1: Creating a new solution and listing items", + "path": "Tutorials/Part-1.md" }, { - "text": "With Angular UI", - "path": "Tutorials/Angular/Part-I.md" + "text": "Part-2: CRUD operations", + "path": "Tutorials/Part-2.md" + }, + { + "text": "Part-3: Integration tests", + "path": "Tutorials/Part-3.md" } ] } @@ -242,7 +245,7 @@ "items": [ { "text": "API", - "items": [ + "items": [ { "text": "Auto API Controllers", "path": "AspNetCore/Auto-API-Controllers.md" @@ -389,4 +392,4 @@ "path": "Contribution/Index.md" } ] -} \ No newline at end of file +} diff --git a/docs/en/docs-params.json b/docs/en/docs-params.json new file mode 100644 index 0000000000..23d079f9bb --- /dev/null +++ b/docs/en/docs-params.json @@ -0,0 +1,28 @@ +{ + "parameters": [ + { + "name": "UI", + "displayName": "UI", + "values": { + "MVC": "MVC / Razor Pages", + "NG": "Angular" + } + }, + { + "name": "DB", + "displayName": "Database", + "values": { + "EF": "Entity Framework Core", + "Mongo": "MongoDB" + } + }, + { + "name": "Tiered", + "displayName": "Tiered", + "values": { + "No": "Not Tiered", + "Yes": "Tiered" + } + } + ] +} \ No newline at end of file From 74fa9d320fc5da9dbfa3fc63d229b32efd27702e Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 28 Feb 2020 17:01:14 +0300 Subject: [PATCH 09/60] chore: update the bookstore angular mondb sample project --- .../2019-08-16 v0_19_Release/Post.md | 2 +- .../angular/README.md | 2 +- .../angular/angular.json | 48 +- .../angular/e2e/src/app.e2e-spec.ts | 2 +- .../angular/karma.conf.js | 2 +- .../angular/package.json | 41 +- .../angular/src/app/app-routing.module.ts | 66 +- .../angular/src/app/app.component.spec.ts | 68 + .../angular/src/app/app.component.ts | 25 +- .../angular/src/app/app.module.ts | 29 +- .../books/book-list/book-list.component.html | 129 +- .../books/book-list/book-list.component.ts | 84 +- .../src/app/books/books-routing.module.ts | 17 +- .../angular/src/app/books/books.component.ts | 13 +- .../angular/src/app/books/books.module.ts | 16 +- .../src/app/books/shared/books.service.ts | 17 +- .../angular/src/app/home/home.component.html | 31 +- .../src/app/home/home.component.spec.ts | 51 + .../angular/src/app/home/home.component.ts | 2 +- .../setting-management-wrapper.module.ts | 7 + .../src/app/store/actions/books.actions.ts | 13 +- .../angular/src/app/store/models/books.ts | 2 +- .../src/app/store/states/books.state.ts | 32 +- .../src/environments/environment.hmr.ts | 4 +- .../src/environments/environment.prod.ts | 4 +- .../angular/src/environments/environment.ts | 4 +- .../angular/src/favicon.ico | Bin 5430 -> 102968 bytes .../angular/src/index.html | 2 +- .../angular/src/styles.scss | 1 - ...cme.BookStore.Application.Contracts.csproj | 10 +- .../BookDto.cs | 2 +- .../CreateUpdateBookDto.cs | 2 +- .../IBookAppService.cs | 4 +- .../Acme.BookStore.Application.csproj | 10 +- .../{BookAppService.cs => IBookAppService.cs} | 8 +- .../Acme.BookStore.DbMigrator.csproj | 2 +- .../Acme.BookStore.DbMigrator/Logs/logs.txt | 10 + .../appsettings.json | 2 +- .../src/Acme.BookStore.DbMigrator/tempkey.rsa | 1 + .../Acme.BookStore.Domain.Shared.csproj | 16 +- .../BookStoreDomainSharedModule.cs | 2 +- .../Acme.BookStore.Domain.Shared/BookType.cs | 2 +- .../Localization/BookStore/en.json | 16 +- .../Localization/BookStore/zh-Hant.json | 8 + .../Acme.BookStore.Domain.csproj | 19 +- .../src/Acme.BookStore.Domain/Book.cs | 16 +- .../BookStoreDataSeederContributor.cs | 52 + .../Data/BookStoreDbMigrationService.cs | 50 +- .../Acme.BookStore.HttpApi.Client.csproj | 10 +- .../Acme.BookStore.HttpApi.Host.csproj | 13 +- .../BookStoreHttpApiHostModule.cs | 6 +- .../Acme.BookStore.HttpApi.Host/Program.cs | 1 - .../Properties/launchSettings.json | 6 +- .../Acme.BookStore.HttpApi.Host/Startup.cs | 4 +- .../appsettings.json | 4 +- .../Acme.BookStore.HttpApi.Host/package.json | 2 +- .../wwwroot/libs/abp/core/abp.css | 112 +- .../wwwroot/libs/abp/core/abp.js | 1270 ++--- .../wwwroot/libs/abp/jquery/abp.jquery.js | 780 +-- .../libs/jquery-validation/jquery.validate.js | 40 +- .../wwwroot/libs/luxon/luxon.js | 2765 +++++----- .../wwwroot/libs/luxon/luxon.js.map | 2 +- .../wwwroot/libs/luxon/luxon.min.js | 2 +- .../wwwroot/libs/luxon/luxon.min.js.map | 2 +- .../jquery.mCustomScrollbar.concat.min.js | 8 +- .../jquery.mCustomScrollbar.css | 2534 ++++----- .../jquery.mCustomScrollbar.js | 4914 ++++++++--------- .../package.json | 72 +- .../malihu-custom-scrollbar-plugin/readme.md | 162 +- .../src/Acme.BookStore.HttpApi.Host/yarn.lock | 257 +- .../Acme.BookStore.HttpApi.csproj | 10 +- .../Acme.BookStore.MongoDB.csproj | 16 +- .../MongoDb/BookStoreMongoDbContext.cs | 3 +- ...Store.HttpApi.Client.ConsoleTestApp.csproj | 2 +- .../ConsoleTestAppHostedService.cs | 2 +- .../appsettings.json | 4 +- .../Acme.BookStore.TestBase.csproj | 6 +- .../BookStoreTestBase.cs | 2 +- 78 files changed, 7215 insertions(+), 6742 deletions(-) create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/app.component.spec.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.spec.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/setting-management-wrapper.module.ts rename samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/{BookAppService.cs => IBookAppService.cs} (75%) create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Logs/logs.txt create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/tempkey.rsa create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hant.json create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs diff --git a/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md b/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md index a9cdb9b2af..4cfc9d6832 100644 --- a/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md +++ b/docs/en/Blog-Posts/2019-08-16 v0_19_Release/Post.md @@ -16,7 +16,7 @@ Finally, ABP has a **SPA UI** option with the latest [Angular](https://angular.i We've created the template, document and infrastructure based on the latest Angular tools and trends: -* Uses [NgBootstrap](https://ng-bootstrap.github.io/) and [PrimeNG](https://www.primefaces.org/primeng/) as the UI component libraries. You can use your favorite library, no problem, but pre-built modules work with these libraries. +* Uses [NgBootstrap](https://ng-bootstrap.github.io/) as the UI component library. You can use your favorite library, no problem, but pre-built modules work with these libraries. * Uses [NGXS](https://ngxs.gitbook.io/ngxs/) as the state management library. Angular was the first SPA UI option, but it is not the last. After v1.0 release, we will start to work on a second UI option. Not decided yet, but candidates are Blazor, React and Vue.js. Waiting your feedback. You can thumb up using the following issues: diff --git a/samples/BookStore-Angular-MongoDb/angular/README.md b/samples/BookStore-Angular-MongoDb/angular/README.md index 03bc697584..4537f598bd 100644 --- a/samples/BookStore-Angular-MongoDb/angular/README.md +++ b/samples/BookStore-Angular-MongoDb/angular/README.md @@ -1,6 +1,6 @@ # BookStore -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.0.3. +This is a startup project based on the ABP framework. For more information, visit abp.io ## Development server diff --git a/samples/BookStore-Angular-MongoDb/angular/angular.json b/samples/BookStore-Angular-MongoDb/angular/angular.json index 6b5e7df965..22dfd49c6c 100644 --- a/samples/BookStore-Angular-MongoDb/angular/angular.json +++ b/samples/BookStore-Angular-MongoDb/angular/angular.json @@ -3,7 +3,7 @@ "version": 1, "newProjectRoot": "projects", "projects": { - "myProjectName": { + "bookStore": { "projectType": "application", "schematics": { "@schematics/angular:component": { @@ -17,20 +17,42 @@ "build": { "builder": "@angular-devkit/build-angular:browser", "options": { - "outputPath": "dist/myProjectName", + "outputPath": "dist/bookStore", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", "aot": false, + "extractCss": true, "assets": ["src/favicon.ico", "src/assets"], "styles": [ "src/styles.scss", "node_modules/bootstrap/dist/css/bootstrap.min.css", - "node_modules/font-awesome/css/font-awesome.min.css", - "node_modules/primeng/resources/themes/nova-light/theme.css", - "node_modules/primeicons/primeicons.css", - "node_modules/primeng/resources/primeng.min.css" + { + "input": "node_modules/@fortawesome/fontawesome-free/css/all.min.css", + "lazy": true, + "bundleName": "fontawesome-all.min" + }, + { + "input": "node_modules/@fortawesome/fontawesome-free/css/v4-shims.min.css", + "lazy": true, + "bundleName": "fontawesome-v4-shims.min" + }, + { + "input": "node_modules/primeng/resources/themes/nova-light/theme.css", + "lazy": true, + "bundleName": "primeng-nova-light-theme" + }, + { + "input": "node_modules/primeicons/primeicons.css", + "lazy": true, + "bundleName": "primeicons" + }, + { + "input": "node_modules/primeng/resources/primeng.min.css", + "lazy": true, + "bundleName": "primeng.min" + } ], "scripts": [] }, @@ -72,22 +94,22 @@ "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { - "browserTarget": "myProjectName:build" + "browserTarget": "bookStore:build" }, "configurations": { "production": { - "browserTarget": "myProjectName:build:production" + "browserTarget": "bookStore:build:production" }, "hmr": { "hmr": true, - "browserTarget": "myProjectName:build:hmr" + "browserTarget": "bookStore:build:hmr" } } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { - "browserTarget": "myProjectName:build" + "browserTarget": "bookStore:build" } }, "test": { @@ -120,16 +142,16 @@ "builder": "@angular-devkit/build-angular:protractor", "options": { "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "myProjectName:serve" + "devServerTarget": "bookStore:serve" }, "configurations": { "production": { - "devServerTarget": "myProjectName:serve:production" + "devServerTarget": "bookStore:serve:production" } } } } } }, - "defaultProject": "myProjectName" + "defaultProject": "bookStore" } diff --git a/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.e2e-spec.ts b/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.e2e-spec.ts index ddea6e46a7..d96ab8b1f5 100644 --- a/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.e2e-spec.ts +++ b/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.e2e-spec.ts @@ -10,7 +10,7 @@ describe('workspace-project App', () => { it('should display welcome message', () => { page.navigateTo(); - expect(page.getTitleText()).toEqual('Welcome to myProjectName!'); + expect(page.getTitleText()).toEqual('Welcome to bookStore!'); }); afterEach(async () => { diff --git a/samples/BookStore-Angular-MongoDb/angular/karma.conf.js b/samples/BookStore-Angular-MongoDb/angular/karma.conf.js index 4e919a630c..cc331775a5 100644 --- a/samples/BookStore-Angular-MongoDb/angular/karma.conf.js +++ b/samples/BookStore-Angular-MongoDb/angular/karma.conf.js @@ -16,7 +16,7 @@ module.exports = function (config) { clearContext: false // leave Jasmine Spec Runner output visible in browser }, coverageIstanbulReporter: { - dir: require('path').join(__dirname, './coverage/myProjectName'), + dir: require('path').join(__dirname, './coverage/bookStore'), reports: ['html', 'lcovonly', 'text-summary'], fixWebpackSourcePaths: true }, diff --git a/samples/BookStore-Angular-MongoDb/angular/package.json b/samples/BookStore-Angular-MongoDb/angular/package.json index 6fa7c6c020..18d8a6ca48 100644 --- a/samples/BookStore-Angular-MongoDb/angular/package.json +++ b/samples/BookStore-Angular-MongoDb/angular/package.json @@ -6,37 +6,38 @@ "start": "ng serve", "start:hmr": "ng serve --configuration hmr", "build": "ng build", - "build:prod": "ng build --configuration production", + "build:prod": "ng build --prod", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { - "@abp/ng.account": "^1.0.2", - "@abp/ng.identity": "^1.0.2", - "@abp/ng.tenant-management": "^1.0.2", - "@abp/ng.theme.basic": "^1.0.2", - "@angular/animations": "~8.2.2", - "@angular/common": "~8.2.2", - "@angular/compiler": "~8.2.2", - "@angular/core": "~8.2.2", - "@angular/forms": "~8.2.2", - "@angular/platform-browser": "~8.2.2", - "@angular/platform-browser-dynamic": "~8.2.2", - "@angular/router": "~8.2.2", - "@angularclass/hmr": "^2.1.3", - "@ngxs/devtools-plugin": "^3.5.0", - "@ngxs/hmr-plugin": "^3.5.0", + "@abp/ng.account": "^2.1.0", + "@abp/ng.identity": "^2.1.0", + "@abp/ng.setting-management": "^2.1.0", + "@abp/ng.tenant-management": "^2.1.0", + "@abp/ng.theme.basic": "^2.1.0", + "@angular/animations": "~8.2.14", + "@angular/common": "~8.2.14", + "@angular/compiler": "~8.2.14", + "@angular/core": "~8.2.14", + "@angular/forms": "~8.2.14", + "@angular/platform-browser": "~8.2.14", + "@angular/platform-browser-dynamic": "~8.2.14", + "@angular/router": "~8.2.14", "rxjs": "~6.4.0", "tslib": "^1.10.0", "zone.js": "~0.9.1" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.802.2", - "@angular/cli": "~8.2.2", - "@angular/compiler-cli": "~8.2.2", - "@angular/language-service": "~8.2.2", + "@angular-devkit/build-angular": "~0.803.20", + "@angular/cli": "~8.3.20", + "@angular/compiler-cli": "~8.2.14", + "@angular/language-service": "~8.2.14", + "@angularclass/hmr": "^2.1.3", + "@ngxs/hmr-plugin": "^3.5.1", + "@ngxs/logger-plugin": "^3.5.1", "@types/jasmine": "~3.3.8", "@types/jasminewd2": "~2.0.3", "@types/node": "~8.9.4", diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts index 3d09337cf4..856c8817be 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts @@ -1,51 +1,61 @@ -import { IDENTITY_ROUTES } from '@abp/ng.identity'; -import { ACCOUNT_ROUTES } from '@abp/ng.account'; -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { ABP } from '@abp/ng.core'; -import { TENANT_MANAGEMENT_ROUTES } from '@abp/ng.tenant-management'; -import { ApplicationLayoutComponent } from '@abp/ng.theme.basic'; +import { ABP } from "@abp/ng.core"; +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; +import { ApplicationLayoutComponent } from "@abp/ng.theme.basic"; const routes: Routes = [ { - path: '', - loadChildren: () => import('./home/home.module').then(m => m.HomeModule), + path: "", + loadChildren: () => import("./home/home.module").then(m => m.HomeModule), data: { routes: { - name: '::Menu:Home', - } as ABP.Route, - }, + name: "::Menu:Home" + } as ABP.Route + } }, { - path: 'account', - loadChildren: () => import('./lazy-libs/account-wrapper.module').then(m => m.AccountWrapperModule), - data: { routes: ACCOUNT_ROUTES }, + path: "account", + loadChildren: () => + import("./lazy-libs/account-wrapper.module").then( + m => m.AccountWrapperModule + ) + }, + { + path: "identity", + loadChildren: () => + import("./lazy-libs/identity-wrapper.module").then( + m => m.IdentityWrapperModule + ) }, { - path: 'identity', - loadChildren: () => import('./lazy-libs/identity-wrapper.module').then(m => m.IdentityWrapperModule), - data: { routes: IDENTITY_ROUTES }, + path: "tenant-management", + loadChildren: () => + import("./lazy-libs/tenant-management-wrapper.module").then( + m => m.TenantManagementWrapperModule + ) }, { - path: 'tenant-management', + path: "setting-management", loadChildren: () => - import('./lazy-libs/tenant-management-wrapper.module').then(m => m.TenantManagementWrapperModule), - data: { routes: TENANT_MANAGEMENT_ROUTES }, + import("./lazy-libs/setting-management-wrapper.module").then( + m => m.SettingManagementWrapperModule + ) }, { - path: 'books', + path: "books", component: ApplicationLayoutComponent, - loadChildren: () => import('./books/books.module').then(m => m.BooksModule), + loadChildren: () => import("./books/books.module").then(m => m.BooksModule), data: { routes: { - name: 'Books', - } as ABP.Route, - }, - }, + name: "::Menu:Books", + iconClass: "fas fa-book" + } as ABP.Route + } + } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], - exports: [RouterModule], + exports: [RouterModule] }) export class AppRoutingModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.spec.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.spec.ts new file mode 100644 index 0000000000..375c0b83f0 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.spec.ts @@ -0,0 +1,68 @@ +import { LazyLoadService } from '@abp/ng.core'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { NgxsModule } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { AppComponent } from './app.component'; +import { LoaderBarComponent } from '@abp/ng.theme.shared'; +import { Subject, Observable } from 'rxjs'; +import { Component } from '@angular/core'; +import { By } from '@angular/platform-browser'; + +@Component({ + template: '', + selector: 'abp-loader-bar', +}) +class DummyLoaderBarComponent {} + +describe('AppComponent', () => { + let component: AppComponent; + let fixture: ComponentFixture; + let mockLazyLoadService: { load: () => Observable }; + let loadResponse$: Subject; + let spy: jasmine.Spy<() => Observable>; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [AppComponent, DummyLoaderBarComponent], + providers: [{ provide: LazyLoadService, useValue: { load: () => loadResponse$ } }], + }); + loadResponse$ = new Subject(); + fixture = TestBed.createComponent(AppComponent); + component = fixture.componentInstance; + mockLazyLoadService = TestBed.get(LazyLoadService); + spy = spyOn(mockLazyLoadService, 'load'); + spy.and.returnValue(loadResponse$); + fixture.detectChanges(); + }); + + describe('LazyLoadService load method', () => { + it('should call', () => { + expect(spy).toHaveBeenCalledWith( + [ + 'primeng.min.css', + 'primeicons.css', + 'primeng-nova-light-theme.css', + 'fontawesome-all.min.css', + 'fontawesome-v4-shims.min.css', + ], + 'style', + null, + 'head', + ); + }); + }); + + describe('template', () => { + it('should have the abp-loader-bar', () => { + const abpLoader = fixture.debugElement.query(By.css('abp-loader-bar')); + expect(abpLoader).toBeTruthy(); + }); + + it('should have router-outlet', () => { + const abpLoader = fixture.debugElement.query(By.css('router-outlet')); + expect(abpLoader).toBeTruthy(); + }); + }); +}); diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts index bf2a27962a..f763d293b3 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts @@ -1,4 +1,5 @@ -import { Component } from '@angular/core'; +import { LazyLoadService } from '@abp/ng.core'; +import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-root', @@ -7,4 +8,24 @@ import { Component } from '@angular/core'; `, }) -export class AppComponent {} +export class AppComponent implements OnInit { + constructor(private lazyLoadService: LazyLoadService) {} + + ngOnInit() { + this.lazyLoadService + .load( + [ + 'primeng.min.css', + 'primeicons.css', + 'primeng-nova-light-theme.css', + 'fontawesome-all.min.css', + 'fontawesome-v4-shims.min.css', + ], + 'style', + null, + 'head', + 'afterbegin', + ) + .subscribe(); + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts index ce6e07e9b6..0c49802358 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts @@ -1,41 +1,44 @@ +import { AccountConfigModule } from '@abp/ng.account.config'; import { CoreModule } from '@abp/ng.core'; +import { IdentityConfigModule } from '@abp/ng.identity.config'; +import { SettingManagementConfigModule } from '@abp/ng.setting-management.config'; +import { TenantManagementConfigModule } from '@abp/ng.tenant-management.config'; import { LAYOUTS } from '@abp/ng.theme.basic'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgxsReduxDevtoolsPluginModule } from '@ngxs/devtools-plugin'; +import { NgxsLoggerPluginModule } from '@ngxs/logger-plugin'; import { NgxsModule } from '@ngxs/store'; -import { OAuthModule } from 'angular-oauth2-oidc'; import { environment } from '../environments/environment'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { SharedModule } from './shared/shared.module'; -import { ThemeSharedModule } from '@abp/ng.theme.shared'; -import { AccountProviders } from '@abp/ng.account'; -import { IdentityProviders } from '@abp/ng.identity'; -import { TenantManagementProviders } from '@abp/ng.tenant-management'; import { BooksState } from './store/states/books.state'; +const LOGGERS = [NgxsLoggerPluginModule.forRoot({ disabled: false })]; + @NgModule({ - declarations: [AppComponent], imports: [ - ThemeSharedModule.forRoot(), CoreModule.forRoot({ environment, requirements: { layouts: LAYOUTS, }, }), - OAuthModule.forRoot(), - NgxsModule.forRoot([]), + ThemeSharedModule.forRoot(), + AccountConfigModule.forRoot({ redirectUrl: '/' }), + IdentityConfigModule, + TenantManagementConfigModule, + SettingManagementConfigModule, + NgxsModule.forRoot([BooksState]), BrowserModule, BrowserAnimationsModule, AppRoutingModule, SharedModule, - NgxsModule.forRoot([BooksState, ]), - NgxsReduxDevtoolsPluginModule.forRoot({ disabled: environment.production }), + ...(environment.production ? [] : LOGGERS), ], - providers: [...AccountProviders({ redirectUrl: '/' }), ...IdentityProviders(), ...TenantManagementProviders()], + declarations: [AppComponent], bootstrap: [AppComponent], }) export class AppModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.html b/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.html index 0442051148..83e7e60708 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.html +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/book-list/book-list.component.html @@ -1,81 +1,115 @@ -

os{hU=ny?UwT$}4YIlz{7Eo?2O@0r`vdmu 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 literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-creating-books-module-terminal.png b/docs/en/Tutorials/images/bookstore-creating-books-module-terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9ef4c42f314797f382ca4810a509be6d570161 GIT binary patch literal 23145 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�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�BE}q7SnP&U+di(ayKSrsT)1J zq2gw%)E*eJxA-(K2sf4#p1nh~L1)lI1lk9vA9jDjDb&tN$A$=;zLUL|Y>kF>Dw zOhq@zveSEtZ}H2>R20iG(lcTy?c~xAXgyWkwR$~XV=5?9_{NO_kL3+XT(VYtvtw{h zv%cpvS-MC1WQRvQ0c^9`Z`DCRZaXv#!HAl+cMj!H&e@99=%`)H!|d57Kg zpZBbOVJYU5JtJgI217uxF1F#Ks`9KN4chZy#KhvHa$Wt6tn|U0m0s{NT)I2U8JZ&SNw=jjUZ7E9|8~8^ zBH?02gbkt1S3qdIQPrMz^cdQLm4_tL3CWu=V>sZhJgHNXMt7t4fntrYA5TsiP&_j* zg$FzGK4_Jj)ou@5+#@f`_|bu@pNEVgSa-n8F|A?vk-|LiEbLLvfCgGm^2--}gDieE z=P5gy^ZnK#PyabGS(0?Gk>w7keKoSMVD%m5txOpMmx!4orkZGLc{yUi1Fztbf*7PJ zn&`Ab_}xcOMiR8(wnU*uhtXu2^1%|^p3FUZwveqDK~_E~DcssuVqVZ><9FLR%@a!* zUkA=X#UgOG$Z&zcfHie8MDahr2O|ke_4=IMa9W7%Ecd|w;tw}4HNEe`%PiT~GipSJj?-oTA?{NpN+4eXwS*EN z*<9D^q$$zjpSYj)t-sS7!tKrvx>k(A8kFlgL#h9WOiJT=b$2vA&(gSxSh!hUD5ggm3jOm~`)sIQ6r$J_@ml70J&fSbn1tdyv?+1di zDTLsC8ilCbvdS8pCi%35LhyP8(IAD;kRmhy9{cv~TU&Y^RY&OwNbf#=18fsC3sESA e(8J-2muO$>yQUoiD6vq$A5}#yg|~8+VgDZiwGP1m literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-database-tables-mongodb.png b/docs/en/Tutorials/images/bookstore-database-tables-mongodb.png new file mode 100644 index 0000000000000000000000000000000000000000..8d78bd9a543ef97072b5212919ac9aadc2d7e647 GIT binary patch literal 42687 zcmZ^~1ym%>vNejkI}Fa??(XjH?(XjHKEU8K3^okz?moD?yE~2Z^PO|vz4zVszv`8p z*_p8;BCE1iSMG?4R#K2egu{aa0RcgjmJ(C>s$ag!6%5qZ_Zn~%69fc7+FDdpNm^8t zSjolF!rIOp1Vk!2O%qy6brdU4S4G+i6rw0>Q|tsH2~8xHm{=VpEeQfmCJI(~FoCXo zdsQ4`9#bDv*^NG^0@HnALA(|?7!p&*&}JffAP;wZO1s6o<$3w;dN>{^bGXS19;868 zNHZbn4oa1TF^Wbinz=VOn^_bI0!l>;&M35hbD-kk=Z6r);`LeD(FNC8py#6Q;?MhG zD6UAHdIu`BOEQTz@(hV`1rEY^AZsoTf}%a`z}hJFX8;%F+lWyJifkH}Wc*kvmu!5w zx_~q+ev~JOP|1x~9X?2dZho%z_*5|8>Jo`Z3d{f+h}#GX^o=+l=zuaxA{7;tn#nOV zetp;W=rgqCA_`?|5BatX06<4cUC1T$j;OjLIp^>KUv=nD=|9A`O#b0CCq2H?lHwZ6u{^m*!oO>h{M9-p3g!iD%NM zdNdU^rU?xQPNP;18hkCs0Mu>AfK?;1g+A%-0Mg3{2JGKAdlCy+^5g=W06H>VtmOQg zbgU8Rv%$aOCJq%)n%L1le$Bu4Hr;vud5b4;K$BS>4doMge#+?8f#|Doa=*}OSNc&= zhTTp}4<|o8evx)KZ2RV1$0Vp?-5jy3W{~qcGd7VS1YTt#aabyLH)Y;?H?y^a`R3H` z+5`ohix`0^7|aHX3ZhkLeRFOdJg`iX6a;xh2nhvDGv3@u;*X6OSaozh#2aif%1Gp4 z_#cVze4JH5B<%%F&7?{^dX0$@@I+z;kQrj44~^dz(h23!_lQDAzHN`@pYpybyy=gX^8Td+h{Y(Fsv`V1TfiFu7sh zQU;6bs$Fp5c}N1oN_Hz4X@@RIN;wH*phY}J;=b*a^k4!*oR__r;?5B(@#Q!Fu4aCg zOcua(9k&i8?n($#_fwHz3|Cv)@Y?z!*HZDmmPD zFd!tv_;H}l#IQxd(lt}0EqUffG#Rjm!7fU$KSR`w=$An_g6)kcm%+1og`E)I;3h-h zx8YhKmlUzRpnQ65rxS@`U<=3)1|Vw1&QY)jz>P_SrMS>SzY|+aQTzy%LV;vK&rDP! z9ZPN;ktia3#^nye7o8*~7(v`8oQ>}g+bqP95k*vTohKv+uT$c{i>D|+pTT#7(+T-m z5IbYjfV2_JQ7}ARe~j6H?jP}J3^Laj$3#1hX=;p5ha@{($BfJIt-R+?4NnECZTROs zc?J4e@8*tJPB5#pW=lljwOLN0Vz1?1>~-T4M+dB6uwmcTPUjOPSgw(T6Uh^LOV~{q zexI5McR@@|cn!b_O+a2hY)OoCChAz|K3vfhk2#$yv?Zz~p(WNUby?U?=$tHBisC!A z3NdxU02yZTUujz@UMWc_Y-#Y)tTaR1gTk%^{7eVoK6Um#> z0cD8PlT`B5iByfh-ZI$5fIpJ%`A{k;zgy?M=WT4r9=<7zd%ef; zx%6@Nf%J*JZ#v7J@%^PZ+q{IlgngWT;y5c<^%)e*Y=?sn1z-l$W;*|vF&AQUV%o;r z$5X>QXS3owW}oN0XOUyhvCuO08mXCsVXfob#XI;$&%A2tws8E;bZ2~S+-D3Q$&S>{ zbsm4?w1;9^;2eI#utz&|C7(gDL*Y#^CYL3DnXy|kS+XZrnpMTgZ@tR8ZsgVD^l=@t z;~TNXCOVNbfi`ZDVb8*AxoGKNOlZx(ZfF{?-Z9)aLOMXYWKuk69P1z(VV+dH>{5Jy zI#wztN|Bv8Rbi25^r(}mEv`*n!J*Tr`=HCKMX8&vb5+-6D%xngVzyS%U|oOG*w{c| z%RAT9`&dFSm|#v>r)%%|_cFdS)c?;r@Nwc%5kHQg1&JI95viHrB%wD!75@yMkry>r zOTk;=EQf)saB_2!^a$_hj^TG~V(hYcuIw;OA51su4^(%us@7S(m8!ui#44Z!UVI#` zHcy@R{+)7D;jAS6H+P$PN>0aSzvc;t=Jkh-;g4|{D~_u~fi3|SfCRw7PS+a7qvGcMsx?|gaC7~s`FUBTz zFX1CO8O4Vu9un(p6eC)M19j8N0tyvq{(`z9OBzI9;O-{H!vE#hHgk1PC+l-mUf;| zA>|-DBRwirrs$o5_p^^3P5lr+o>d;bw6Q2m#je zhss9>6R(}~m2TcA<VuV?`Bvvjm{nV$ywSRHn2E}aMDV?-4=?Z2$a zUCjsoYL-(}^Qa!EHyX3MH=4Lxy34tb;jOXDF8OKE>i8B@G+1a>YG3rNa-Kn)F;pRI zZ?*LLi5^4%1!Dp`x|m%|RdfCI7btd1cI6W}O6>$5(9cR==u32In*G*kR#sc-jn|@m zwq9N?EY{N5@)2VqE(vgX8O{;bR%VY^Tb$Eps{U>mHJbqE0IY#sZInKWYX*y(L;fDG zHbB-#O*Rtwxon?o@rhh|YkC6cA$%)aM5~R@u@S>2!Ui5K*OBY#AN}+F=8@0|srVdOBIg_e2syV8;Tu)XP}?G^^v!c zL~VZwXNc7KoBZ@X2lhsLFQYEu6)E{Hd?@@Ew^Tn$Hvx@P1c0ko+Wl(R&OP6DgAoIS z4!!&4(Jfs=?@pVu*sJ!}wr%&%?3iW>$L3DcPTmKBhxfgYG9oFWKY~2|cJCPPCyzqC zJwd6Idu2^vIBIOX--6P0cLYcfL53h(0yFXjj>;gE0rKiFZiPNS^;QuU$F}W!z?5SmFK1Kf#j512jO`DL%gT7C+6kq%Gv-L1@0(Fd&eiXdvKU zEzqwI2q+#1S4$mo34{~SqQ3j+riD)i{8PN?B7cMA3b8`uBI;5 zPHxtY4#fZHH8yc{cjG4|{m0OM9sl;z+{^mEEjhUUXIftqWc+7@k(q&s@&5*Mv$pvE zf&DY`Z`i-)^>1^0|0v^8cQtnrb+orPcW@K(`tF*qPY=gZkei|5v2;e1$|zq?{w|LdC0SRq17@uMvi^I_G>hqbjeQOLMip^qyyH+?QVu`F5K}xzF704<~WM&-VgH{+q8)8>bT0g$OY#^0Uf zxCZb7CU1ECH)RQqc&^$efyaQEv&{>?d!H}=6_0eTOo1=&4of~nz>g}A!p}#6L;p*I zE?>j)E1F67$AqUk-^loT!5fnGvXhJ?Fb6L+880iAau& zjB`q;*H-7fA^o*D0$wbWq3aRhhrsujhxSEx#TJZfcep2n!r0M4xl#tb{iFCTNc$h; z(s2XP=spQ4Cxk`60VA}UP7kN--{pV6%w*4bGkcHJqQh`I54Fjpv%rF}zN#+2Q8=k7 z9xNRrE-M2QWkI)o1t~JM_3w|Skc&r~gria_t;BcX##ncLZ#5I(u5F2!~XbhWQ zL$_gG4t_F0UPjNDpZ@iGuSa7o!8w>Z6L+N4sL+Dp#SM-*7~5{tlLQ*spxnE}7H8fFi+y=5EZF57|o>J6#`=0`!^c6tx)|9RXaG!jD z3YXC%oWuDg)f@)9tIM~WXyqr!=6=?Oab42m=ur-w(cLOGM;l0tG#mY~BQ{{2HDBw< z`a@Me#$dR=Pmv7rj6A7nuJ@H{v$1-s#i8W3Enc_Q6=-l? z8jBFX&4MP&c_{)07phgeYt*0M-#kn~k$$LO@6PyxLO$dh+i>%_z&5IonVq#mJaf~y zhewyYXA*2yjca-mr6)sJq@onq=!|h9``qO^sIW`?7F@)lHT3IYd zAlA)#&gir93a|YPYkjzXPot9(Ze6|5mTV$zgsMn3WtDA(k=3GLDc@1KRV+YE!l&W) z6Sr`PmsX1huYli~_iLw!Zsn&b)2zLQ@c42RE-gouUSgl* zI~1w+j@(k zusRHn^Y!ql2n5kzEwy%BvzN1ZsHIcJebkW_-*&IU=@!3qak9u}% ztyR8KHd^TfXzlVZ_n8{5Cn#Pk4W z=J>BvhI8pa|yZ}IBx_=|z`7Fd`0ep*x!#gdBK{o|RGVd|7<&yj zW$}-8|G1^~#Kip2TGN#f4a-ToVPI_ALafpFlXToQrNqOZH025_RJ}GgTuOz!o>lj6 zOsB8WP5Vt27d-n@+0aLfdOd&G&z$xLsQuV~3$nZFG_l6X1%MJ5cp>o%9*30BuV%(7 z=L-cC$)_U~6ckXn37jm!PGqz9J`n{BtV71$sJu3LJr`p;6Ca}}0Ju#-r8Vn6XVCZZ z+KJ%S(`FW;*zy8b=dErm9OK#o5E+{SH&;L0mbKKV)p6i893_s@bqf94n=-EV%o;9c zi4bWqm<^u;pbFYJ13Rs=uJK-1I?QS1uUvFC z5IL<+8FgFG1LC5Z?dRYIU7>#ozw@;8=IdleOci+4uHRQfXF^r!wqu!CQdeU`&dw4OXE_5+tg#KC+*I zfe5e?5=Kuz-t@)3^1O=A;dagc>``R)I>*?b%)p`)JWWLHkH}XJUDc}f;eYK2Uck^m z1o+`gWe`Anjt^gM_%iLcGgE1Q7Zkw1#x02>3dd4pm&jeLE_6QFZ4zyxsLT|~x;UE56V)2P#rT_xxp0Qj zJ7a3xG9;wc>(`nzvqe-OnfOcTkWG(PG0vuuNOHQ@2rd%BtIiHpFQ4M)No62(2+}Tw z|B+jnD$_O&ks`Y{SR@ib0eL;PpxiTLXE#oQDm1CpP+%-iqwO!ZXi}{X{-_ThJ9t7H zA#L#b48zXYMa6~PXS=v`M#&un{V0$G_np}^i#*4CU8Q;h(Yw8r*+j)uF4Qg}fw0;T zEee<_=4&ch>gK>duL-VNrI$qMV4ej%0G75YRkL>CXHv6A(4l>nJxm;0)e<%e`Mj6} zBEPs7zG|Pq#teW0zz{H+LMh(r(u%V#Ycu{`0-4u2L=HVDOdBpacrrWJgLFS5d z%J<%xyIF6Z5%O06h{7)&dI&+~9uEbFZ{d)^m>xAm};u#k*TO&yNl2AD6Z zC-6bqrMmrVJusbK`Um%)6A0oMp&r9wj+xG;0;bD`Ls?rNL<8S6KPW3N6%9E8^YlhC z`Dx!y0D&I|OH_tcbdMKXiDPkb^x9o$)W_-Fs~_5OIqgvGiMb-3ZH=hC?pKBs)dLao z*~!$V5*>Gbu5#LSd8^D3%qKhjk~QWJBHzu zzm+?AeC{v9{h<@Lw|A7x#(tpE=Q&v5`D{c?j2MiNnKi^?F@x2b4cg2NRO+zxuXF2O zkG;iPE&SpRH$kA&Y3tJigJd8_z<`+7dFNp99^DU=zv zwK$ET9w6p)+$2sR>cK|nSfEc%FS)kCpt*+6a$c!4i#BP>!Ax92d^1Cl-!sX$9kW}z zzJ&|bb+=g%!>huV5~bOODzfy|o1#e3sCwWUlFtXI+VLKxC#DR53;4h^{PWxVwiVc@oD)=Q&Ft1&yl;aj+LM z%kpG;pK(=d8^}bH#$aLlo>l$`zYjAK)w_it*}eJk6fm%~+usEz^22}sNNgXfsg8SPf`V{yi^2(W=?#ve={iI%j6IF zruwsDGYr96Wp*lI*pwO7Zy$%|Cv`+$IGj?pgvn#aV9Q8Q*0_IWcQ1+YZ}noj+r!a` zhcnjyd8okWP(w~ z#&4cuf2yJzirVO)t%i}Y>aV#o8gxWGWH;@yy}yAtR8|gb_}3nHSL=0R@jl`U4c%LF zwHqeK26q_gU|=&!uD*RoAf3$VM}M$UNiq|XI#zyTGi8`%`h8qgytQ?Ay!hb?_eL(E zSr2TZf1HZkE;Bw`oo_SYv3F{v_y0ZHXf26Qv6o<2A2?(Z(SM^`^>$q>1p z5QuQBXA6_HHBLDKfvD82YYMdZS%CHmk7~tu-75p?>vY_A1Kt*ZkBJ!n+e|E>Uu19R zR9RK&M|G1KR<7_s#_Y$g1v=rIT5Z5`dIGn&&b%=Tvya?|20!gg)e>{A>TCB8+gy+R z6yKpeZ|))AaT~$5hrNx&A;R~LQdeNLY%p|bkN@*A^5zCnvr{*6JI-i!=C9@||NZ;x zLL!d%vd+WJ!R%4Dq1R?l{-gFGn#xQ4{a4yNr&5>F$ID^>Z{q=>E45QM#?$BNU4X9B z*ME=`_4XZx6Yj>5V=}K$IvBD7X!;CMPJ{zI1EgOb7(?Of8@&tkvC4KY^)|~(=-jk@ zZ*kC+YLB@apj-SBL?4ci>uXaN=!Dls|FtRehHHttylWmI$p6RFps{0Q1<_{6bT9$M zFRlI`Sgqi0)Yscz=H7d)kDIntdXB!dwoPr3dIo*n_BmhX1i275u=L=b_`b9PpLO?< zri*(*zs%i3mlmvr$btg?(JBxayAIlh;pGJPq_zutbwc$TQ&+J`T{~bXZvWu0^;{Ll zw3%r(5Ac+MJJP#9XP>oA%Z?lqn{s-RXyKLaYQoS+-_!3pu3D-95t+jx&SJ`7o@i`A1zwXhjXDz2 z3=*|j!7@TsoEk)MS*mCJ!2>Gb1M%&%4&Br#0QJ;1NALs~@Zxgz;YsZjsCXbKMah3o zokB^8ZqR}_pMRNFN-ut!Do5%)Gt0jr|LtQ&sd#WOV~q1cqVjf7DYXRticc8c@mwMYZjxciM_iL!=^`J=6Dr#+W5PDR6ya^mUBqz?<)gDdb$BujAIu; zaJ-#w;0UZ7?gRPVqGW+f;iHva=l*BEXv*S(*OuS2cPh0$T;*za$bFgWh5`<5XW%;) ztL*f5xeS<%wvPCDv1C+>wy=2e?EO{UZsOIO{|WxINHfInUV|aF_v;L|ksE+$)Smu!(1{v+?awH7+Z+ z{a4GLFa&wF(dR35COyM|0{_TOsCazw?!cQmcCQL++PSKUERMQ%28wGf1X%07t$`AK z=!{r?FkMfg0fk>RzXdaau2>9Ybz`v*9#Up79K%t-Cdy-`GyL7|{`q;%=U13VLWEw4 zCgU#dL|848@i1x}zFTNL3Y0-ulktbs4??H_Zu~9zoZx{0pE*Br2+qr8NA43v0C%D( zWuNo)h;qeN7tz`yWVSlVi#4Cg`5Z)~R;PPnuvo=<-P$_HjHE;GdY=0laHX|%pa~gX z&>W%KcH{P{C`i%Tjrq2>M)kK!8L4r~6q?MFtJ)tWLU&vB;qoj0un_LL3<`CbgE-vx zTDxa_R$nqw((8?pE9WpP$}*Ue=}uS5KH3YBqor739o-t4!l8s=LX+m#VksHgf`)=h zr1t>0ERHH8i`t6tI0$bP!k6r;E=efa5#GE}97!4UD7JX+mMv%)1Oz7fZqp-%xNNSp zFG6I;wDDT_XzAJ^@#FaEjrD$IFB^(Mw*(=9fH$Iw|Ml0{8G+ItHP{@|%e9&-31y=k zF`k!WG>QO(zt-%+m!UH0ORL|GcbB#jDE`Qqm|hzL{G(d$uzLmldBBt@>T5MBlqRdR zJ1ywDaG8-ZS&P_}qGS$acJ{gwh4Yg_Qt;R<_(G!4XeAich#6lV1GXluyIhaxd*(Cm zP%=gVKL;H(f)NMa@2c~IrmWnozX{VU(5XVSx*YUGAZFLt%*e5t$6_-} z6Z5P$;|>qqD=hhqQv&DD{J|AdA1l>r!8ZNg)t{c9jn5V@B7zy{GX?bV+90KqIPCGh zD2?s=K`K)-=GGV-jY|<6T&C~$T%s4w=Pkk1yL6iY@0e=U8j$c<^b~EU9&EO&IP_WU zeY4N3P(Wun=DU@>H6tXv&!i&Ay6tEaXhKzbhO?M8VBXGyI=~v8O zQn?&QgZXzmx7mP`ULdV1SV_N~wW4_8qej= zKq5%Lh?$2V0zMaf#M6bkNc+J*jZ}u60vgrYl2G!IS!rV=yA9jX# z3rg1iylA2O38u(tA9bMnsH1e&6ATX3^CY}Ag`(Bc#C&sSuVXUVwsAQ7H#Gr!Y)_Q8 zS-qsZ0Z49=8i~&gCOV$OkBw`UTvXubXwj;F@LXtwuW~SSukGsm z@#f9q1$n++GhUH|@^ZeFi0=U}`GMC4JdL$r^b}SP;aA8O0Dm~0A9|>fVxxTeqC+W_ zT2&zBo~$Y0uzt&eVi6&JMY28|NXc*ZLXZh0rY<`x67-7Hs8#WPl^wJy4E%A8h zg`)j@ehFA=o{&qgN<;bG7uoc=gsz-0QlwdJ(4W7~Z4~*7U*d2pxZ2$HN8|NZI+-xV z*(`vbl=$-0Uq7cDe#*bMHO^G|`^PTJUfZvB4E}tdPp6~kRx7J9*|8Y^m0zY_4`rOM zh=R#6AP02p2E@H_gVRxY*-~8&cSnH<^d6h+!-U{3mT7GIomzK~Gof>O*O{4hIPoo1 zz{X(GhwMJH=;p`qnRk>*)#99s>|?UFR_nEfoT)tXF-ElZQ8g@do@>W0_E*(eP6?<{ z8DhoTr1l@$wd-}BIeI^sFH6Pahnn9NIF9M@s9 zpG5&6z096|F)47hELcp!1#LU&Ra(3;%eHx0fJ5T3?^MUcLkR$*r(2VI*CWP^>dmJz z8=RYWv2op+3@k-u(jg1c(l3r%cTvc1`iOP^@1Y0>FK}n;{sg_Gouk(dmM7*^y`1UT z4e}k@Kfa9h&~$f-b;fc8IfKU@N=5nGLbduJacc3*=|WX>@!g`)`aZdpPBjg<+6k`R zTBO*`F4HOgH*=Y^f!=r2r+`VBc?V*c{qyBcOXQuIJClJ7=O&KL>@lln7xUqe#KDuFCi9835 ziB;wv%aJ{FPQV#o;z^F`z5KA-{uj&AWU3@Q zq?x_c51dPP#=XYATbgopojKkiLm3+B><;unAiQUG-rVYkzIqsRjl)efsvskFrHCWq z#&EXcZ}hD~ln2H%cs-ICc6BV{dStPjG&6IXx(X8c!@W(hw-I{Kv#V33!XNxi>*auI z6=`KtZ?Y1&^Zm9c7Y-?_vAvMMxH}4!Xgv1#VV0CJl0%J7b|yQ4z-Ukb!(q1`ro2a4 zXtjABp`FJgZ*#uE1CNTp1WTr${OpL+8}LidIO}b-ifP;46@wl3;@DEGD2aVr2G zB!JU}?M=0`DBNiVLh}3YD@CXceV$E>S%V*o#Ym6T2Mh*-KGqh(x9Bb+k5Zxln6o9v zUx|5%!GFWzFf00d`wQZT@I|YE?Y}e{X{1DQfNpWYabJY5jD@_TMieUr@NP>qSgZAR z|LUeYCjmzvv}}KU$Kz%fQkU1$BaPPS`#Y(y)2SN7{!zs3R_0vk7oAF!KSAviv@|_H zz-ESXGmM@Utyijn7)wPY;4<*@chmIvMe1Yess`+4&0r8eZR-h_%BQ+O^$9=lHW@L4GXmUKagT zcsM{}1x>s~o&!*eJRUF7+z~?qc^#{sLW(tm z+_PE(0uuA}qUAQRuC8JZ6=;cEb~r?XpUUkzJKS%gQn^7zJ%h0xb=VE~=C@a>ZS<#O z6OYQROGG5`Cb^R`Vg6Oc{hy0-mz6asr4toX83Kq%5%`i80hb4LbI&8?*RnrQyzAxy zORH%R`JU=Ok^oz^{qQ3?`Ei-!kT_O9kk3{KhDZ1t|M)HGuMfCnW}CA?U0BeL_}t*6 zw*Pfq^>R5k3xhmw*rabZSqdiOa(#w#v6KnD=WFuzM5(ioGQ9|QRVOAk^)aQQPcK$T z>sw6=^h|ss@5mtSHVlc%qV3k{(d2`=+rsIUWymvNgxSjC}%~ zv8N}1hcOP;BH0O0pPy5^EcqIIfeL#vih-QUzl0Rfnf|1*tCE^Fq^_qHI#X-?ZnZwr zgR3$wSHwMAjVqLA+SJu>=aV#&XurH)xznTZLlf2a3F7|6!S+|`^E?NRo6XD9^$!&~NC7*QJe9tflP|8u$1-R0wQG(;!~Sz#_FG`%vCqXfPaUT&L8)vYE7n8xE%Ced zx1wOy$k&rk2lse}Ula5pQIE(hL+uZHgr8qLOnqFHrM#|onl1fHf61QD*jPUUP?7B- zw3)NZ!8v+a{B1T5q2##dv1mdsXVP9SWh4GL;0U=~e}>VX z%e;CjgGSKRM`>g8-lF4b%zI=4spBIZh1->79#BUUs3Ee{+70x{)xG+l`eHw-#ul(o7{$bAss(86!cUdOJ|V<{wIuhg0)%w!Hwp{Kku&(Le|@HlUMT>l_#c<3w^id9O6K~%ztzDVjN#V9nmI2Y!~R4R z$2I#7Gs|>S*ih9FT&!FYpoWF}#eWd=;%lFN|D*K$0!1nnA%N$cCq-|4v7ktHq4^cegGp_m(t0uF*;HCzWOPgC)H@~hnBt||(wakqthXEXX zLBfcZ2A(`SC8Dn&gF}s`zVD+XRv$k%Pzsi3C60V>9-rM2R(3|upI3y$XUhfF&A?P) zV1U@)$ITdQEIy;ziu$UZawTHbef7uMwvDeZKH>4yCm(ka@OV&2GBL7HIh1GUSoSBq zWG!iUZLTzK8mD}sz09F_xpE~O`vhs+H-5sKAK&|%@==Q9Gw1v5{HBq^!&X9@lZj!l zGbH`7+4BwS#N@=1L0&}_w^t|-<8UFoG2F>09xstaJ`;UN#s9GVlXZcrmGP1(O@+)H zxpv};?firLXbP=Cxy8X}IxX}ABSkQZB;8>nkXBgP2~e~85NbZ4uD zHY%Ew0f(ySwwJsp=*4cGakNc_x!k5qU1FaWxO2>dln+-IRb=zNr^J=3RuwoKREV2G%(FA|g>D%n7+#yD-R-r_w z+hj+w-On8s5uTmI`*(`CPsUOPko9~uS(B(FE81zZBy6_biE>+>;g2j#KH9iEq~~iX zJysJnx7duMHNux`7>Em<5gIUZ)UQyDbocO!ai1f==I}dF?Iz z^C?wA^H(_dFqu-Zi?~42QAX=M{P;^*TrgeNjj-UpC76^ot#zl{fTC`L7e%8lULSI} z>C^Apd)9t=QBUuBvL^ej=p~*eNewV`J)Hq%!UpCAYEwyQN=#af$z#4!9@zR>8=#)}=&q89FmBvfYH zCSApSMbv`EN0WXcttBI+|@X((7YVo+_0t?UM|<7-(gn^eXrm5@F`%2 z!)6$0n00mz+j}})OKy<>@Zz%e2CSFEH#uwt*9|yM^)yVcH9HPB7Y-#GlwP~lODujg zlSvfXT(n^nfjPz%8MTF+iuFC8j}>IFJy=@g#t(3pWCZ{lk(N6>yJrN09Mq1GU$&VK z*8)SPRoggGQFk(4?hwvRHP+3>(>U`bEzk3})nqP%#gMGX6ZF1VhJ=aLZd~`o2)gFVqdHvhnX_;nJb>cXhU_77jDBR_iSMJ(fe~Q!R-r zDPyr14@&e2=xG?87Z~@WVO#u4@+#QsQM^%`qnz$g29G1;#hPlg4rj`$e2@5uG6nz( z50n=20Zl0dS)A5#DE-(qemim)BY-WrRgOxXtZyW&O%AzPUIqHPEK=V$qHLjVpNtcM zc6^qTdE^?pv}!cEaIr@Y5@kQg5xgzlW1f#+CbLIGl)_iSqL~SAp*Zn%OlJKNvFuMe2(NRqvg+?i zwu`?N@}m|H-|z)dhgxL$O{SZBcM69cTdCxL@)L~4>m|kn4K~kl!RmAdbr`L#M}0j4 zopg*{72w*c4$rn2*SPTvTbD*sFm0U+GeT(C^!mYI#eYzwjM?)X@92cF#!NVcLPr_|mi%31HA&oVntgS1?A0RpQ{J`qwB zTNzlI(`66!^m0}saz8l)aS4r$5OQ_+B`oL?95#IS_CAPk&4>L2^Lh{)gAgFgZWyv2 z@g@i2{RPj%BPMh*6uAR?!TQ+PCCg+QnXl5Lxy0PkvKGooq>YTvwYkS|&|wOqeZyNf zGO6;&(Zi>Q`cd zGs9cKHC7#_Fe}1V6i)G;morZ9-?ZKPr+*Wr*X;uPN=j<-Fk}BpRqN@3*HcC)3cPIu zPLDf2yP<>I&9h`{$%3F34*4b4LU_%~2!pK(O?58A-dWIzE&+K>Ag`3;PZetqVGlP1 z6N2A;3blGWw3@vmA38lQe2xvus9Gq6aea0%eEja21G2P0?y%`Z(kC5_>0BSq1jh54 zQA8sV`t}Vi3KfA2BUnke?LbKFN4=#mPL@p|5y03jUQd{f1VB~oljx8;lTwmT$i^Q8 zrj5^KhxYd;jm=pbt!DL25S_|v#byII2}!|xT;>GlB2Oy_lq)86BFo_IoE^aNXRuL> zT38k-Qwp`iqnnj!pO})=)T~RA#gAy}`llO~XY18rGOd1R zmS-t8{}S>>3%D(9?7E4%nj4&7Vvt^Zx43#^jWJn`n-htu7l+s@_ zDT>p9{Fbg-9cH+piRi6i8A+`trE9G(^Y>uU7=?;2=16d<($TdK zzk=fSaU{ciPP_Zkq@9O-Mb@qrQ$|pie-;DQO|WM3;H>_Lp_KE(%R32%a36bl%!=M1 z_llH@&Aefs%9`v}l*71NfLB&}X9M%ivniSEA4R^>=aAsBUB@wCbkNj|l!Q4GL4xBu z=^%e(+=ER7!aiWcY3`3?t>|TbANSHNl2d1>Yy8T{k>Q4bfsNPRzLQH&#PxTAd!b zuuH>dOC>{r;UVQeL6vgMrtKD|#%>OI?Gb*+Xj@h~A=wC8X61F*~wzEnBt$gX`l-!+p3+Mn->Xx4`f#PFkNxpR)p?PKAC4+ zIdmNSHaMHt1tI;yW?<{Qh%xlHF3pn91ON!aTx6}I)_qmFU6G)5T3%m|GRoB!nCF5{ zD7B+pjkX%1p920tMZs2Ezp8{ur@ohX@d-@Vn&VC*Z+0IL;B&hZrrE%;v+=%PxJ!`m zYrUkC*wR#O4K+gpe)U3x8zp*Nu9}Wl9Y1DQciSu>5O?XYW_6KKPBqv*GeZf0I*Y9>+>mCYsi?fIAtTj=WYYNyh( zyVqkQAUrjD&7MSCsgMB!7WtrPNJ0Rn#l_zR6Ld)oq+Yf3%`SrIqu` z)}1ae`fdJ~t8%G^Je%z-Olg-u{D)xz6VzAk9lCy7rx4u}l1FC!zU5d%hk=_x+W|-y zfl8>z3&P(tdi#g{-H`{bfZgw}*VAIInyA!nsA()6mYYEf3|%^N}f z==TWnXvR&?d`0jQWCm4nHga4qk2+Pi11FDX`uP%;`2c^dA#Z6l!(hL)B5S`UCUK zv6810i>B)lq7aE5_-EAavYTcuTTHPV+9&U(eWebC)lqHAz>H?Ao=4qu?y9s3@HM8J z5!dQB!OXyW~ z(`?;Av*fZa;wIE3Q-(1r; z#mU;Nh=MfO#A3bP_@wQ)7u1QBL#~ca#HKD52--cb1}PYh4n|YHURge5(2}!d2ni>3V0ws(^EyZp-={JC~3u{@JJvA3MB)PNuTo0w<_5J%-7EaD^hBG>% zn37fgx9FmmlWj+Y8e!yG9MjuWfVLn4wMtQsf`bz3h{<>PCptE6N4<8LF=7~HOVR*K zlb9eM;<+dC;d|~_r<1Rob2A}1ITF^7`f7=Mq29i@KZfBU{^?V>P0*Tq9dgtCxqd?C zw_|+qG5as?m;6w_t+X6+vI7hgGlNR5s+XHTK}?3^<4)?2REY=j4He%w1m55@;&EQd zSW52t8!}y!QoEc_=L1S01G6{?RIN{s#uRZVnwrhmkiJVNL&<7ZiE@#xp3D}r8?$89Q3KO>?>|Vjq^v2$98}%$!!?pHTqq0=@(Ut4X69 zeMK%?hH8fkqATOsv0LA$E1J#A7lpTzR?kT}ZBf$qLZsHpiyo@@eYroSUS7|$`>+ z9M;H9Bf}zy<1S)vrgHi19prI9sU+W?;1lrqjBdanVf*|0Zx*I^xO#G9Yz#G`bU*MQ z{lI#9GjfA}65RhE*50{0vhR!bj@7Yk+qUgaQnArd$F^&Ztr2?7h}ppE?aP^OOGL5SS@0Xo3kwx_!Er5JHevYGt`5bMXV= z*o7sYLywl#2N!RZ#txrn7J(wblw6NVjXhXHnslZyQ&7%L?7)G#y6#WQ)C)BQ}Mu1#0*Esh*9&9YweKjyA0i+9Ksh?#ZL z7pO;K^~YYwh`QG~P}hqAJi7E)*nJFq=lCv#j!;YP8}S{lOYO24OyisDD83tOTrw#q z#5;Tc`dr~ur@ATGsVp1ob0Z*F#WsoGlc0L6+45{`b?y=5aGl@&d+dgXRkw(3ixJ?Y zD%5Bx&UNW~uUo~?K-kHBtga++keaXhjvMz$xs|gP7R%?<{9{wdF9Ph_iD=7fY1=goJm(Q_pV#+jXq}zw>enUs)-uCk%-sRzMmrzpHS+M@z`Gi;*Bu1` zH5~9v@=oY8r3iWK8MB2`wYuczX73y`|BM-vW1Z7V{_!wNvwgt1H{hgM_vN}>aqKII z4e2dgB($dP+x4ab4fwF7yy61VW?^80CG$ix$^O+Dp9<%mEAvDeRd#$pMN{uTDfZKj z@}$TsYcrt>-JKcEy^srOCDf}$4iqS){)eggd_Z*!I?>!PQ~xKV<`-^+%7GI7j}P+= z+S~&Qso4JssYc54wu2@9asM%EM13MxH$Wj3{y!lV2p+Zq#o5vSgw(hlVmEi-W1;?o z*|61}H-O^o0s75pj)Uj82$QQglN%pl&-Rw@#t)or`{K7F6@SG z3k6;%2AapdRpRi-TbvHaGxjVy>0<45CvuwEItN-@HOw(eOhu(eeg-AP5=^z>|bMu5M|Z@CG(HHUHu4>ai5?%;di8C zyL?uzR$prJ_PPm%@CtZB5lY;MB*WpSMLL9j?3n-kXum`-!QqpIM6gvfK|o0)2K|;3 zaI$(s;8YHKqzq4x76H3hCTHuKRFgjE`p<8J3OLH9g0mu6ezV6u{ zG8SK8#xY?WLKAEV>hYX;<3h)M?{GE4;BunIhKdwLBA^%);fI-QLQ28MVPKFd5pQWR zR)aB|WkN+R4L|*#ftr6m&NM|wW>l0d2^H@m{O-)Vd_LX&6HIH-rJx#L+-<>dOY7xJ z1DR<5$d@i;riz3{lV5s;jH6&p>HB|7f#8YU^cHr2k3URt${xWP3v%@RlW7Qho!-A) zgFKR=o7gmwNunI#U@e)tyFZ>us(>zZoK74Wlxu_B`)Qu|X(~*#RH=`XheQz5%>!2N zaSY0OQfF#u+>{`5e+0~UAt_zvCYSza9PYt&!R`NVs?7Chzzm}FS?pII`p8^mTZCa0 z4J;Bqt^?xwry78<^~7%6@0rEf;>%5~zYRMF-f35h8wi$&vwecSd9z|KQpHI0XfNL? z&IXJnF(idmjOkW{)3ds5&!)brfe^W%h zWrr2PtT2oL1O%5Rq);*FWSVlzHDj{Wf_ySE-(T=_!U^p7VDLB{)puKNgzK|WYGM1`E5N_ zzQcQr*e#?tlg>i1+3S>Jdm6j^XA$q&YK@rlBH54-pRsiAr{G0E8*g7&Qd)}GmFA?& zm*Q$_s=2nuVWnoQJu%dTRGaB3ZRXzwcp473+U#^er__vFC3g3z%}{NQ4b;7s%twkp z`SeY|+t~3;|7-)fAM1PlTSW=s=`BErXAxZzl87pVVoYPO&42PBD@9JSa8mA&l#cLI z>oQk7;`>r+KId}>_^KN@i;!L-Ac~}|^2Jvei^;sJ9n;1RPii2WHemeHpba{#T1E4G zF3mW}im1_OQ)GBCV+w2xx!)hX4m(&c!!2^kW0HRl4Gl$=uE+jx!XU3!#kbLBC75lo z3%Hi@kz?@O%8v;VCEcptyjj=>w(8g)%UoK`zXY_|Yn9Mf3n8>GLcW4V&{+SG3%*{E zf%8}{x5ftWj-|kmF`JxQWMVs7Cpfl*Bce@V#^FBc98eKS#Xa|NGBEi^tQz>NUmYT$ zQIT+n5HhSuiR=NF5I?T}7$*!HG)k=sR0u#Z&Sud@S16%z06o+yMB~f&O$D{u0(c{} zyI}xSsZtg$9j6V|lLvLMDXEjT^&TF~S$xrNhh#c^}2B_$b*Xo40A^iW^K#1bU=_^_}IYlCTIzQQ7J@3p62ZbJKZ@Bg!I zI(pD0_|?#wA-Gv@e}ss0tWSr#qwag=NCu6b6#+Xx63W*;5jIV2E%RraEv;Svzl9Z`~b7L3OtCkq^+bQWtwqv*t}JimZ1ABa(XW=)OElcWa6Xr!tix6dvaTp;YU96AVBv0^ih= zrD1sY@snDgg$szSprAX?jZu#z4`=iF!2Nn~FIVGbg7W5Fn{hdNAw|5@wZ4%N6{*mw zMW<9sk2qDM%GbZdo#OFDs9LdO&kxUP#y2In;6pYQd_Hr@n)>#Qq4d-zEfieO7c4B_ zqKda;;{qz+yN|Qxr3T4A0`!3x$<2+a0eMW!Dvv#(UWKlZxUbnf_eK7?h z2*N!3nQ~QdvX-DCm7C(&o3fbsB z&VGz&T$@8&S;pMPbi4MuHj7Mxabq*l-}(`Yv`(8?{_Az*((7h0SjKXz5^^N=9h4!@ z11;s0vHNZzidytVe;Es8zxkAn+2YN!6ZLRPUP)?oPiH?v6Ua;*NFodmNGPpG`v2Y@ zjmZn|ICorzHsg%6SNjiRQAN4+2(hn>o?EUHQ_LPRrsCm1g z8r_qK{Tri)(cij-t82^0#tdRsnAM}P_u;5+w3+%ikJq2xsz5#O)Xa-zQE@%jkiz?Vm;8Hbo0ON;a- zL)i0eVM*;Dfw;NybAM2xld+g`lLk)V(k^FEq<;&cQiMktm`{rt??;&x9%+#KvZvjT zC}h}y+3YXjY(k)8eVs0Dq;8ZurW)aHHi3ZTi4qo&AhFE7U8*KfQvH_PT-4B2jSNUr6b_t;W;bU^oAHNgiJl2~`+qdGR$%uS6wu7W473e@DC6~q|4e|XFk6-_6Z&SH$w*&`ts~Y-t7Nh7J$rGZTgsz<8k|km6f$agliIy zVRWQ3-tkR$;VSPjLL;}$lDp}TG1IA1Csf?(U)KM?aGL$I7RPI5H;4oA!y>`?%dZhn z@_VBiDEzxOZlL6r7BXBo5~513wST{SF%a(_%`a&1d;JSYyhC35J)t3g5{u@`_ETZ&BQC}0T-4(WX+lPXn< z&nyf5Go)UgCId;4I7*g;VvW4SNfk3Q8iy72A9Ddq2kWdfjJvfl?2nQVRlbRf!uz)x z^|^vFCS-gTj)gL%u*D&1wXO+Hr-;*1h=1{ac6LC}Q$Q&x)r3#AVPVX2RVJvfNkI#q zmh%L2jD2=+gK8Jo9d9NM&up^9F$6~SZ6F6nU?uf!P{c5A57Dtv~DPG_rfaihgLm#it`Dpi zruU*O-p78Ft!azzR7&hv)`QzbgY=G^F9BAx6l2CIvQr%gar{TzJ^+9*RXL%( zJzz~JLYD#v(pQ{6Z;mhBFvA@q#A$Z$5{<%16?$@^tWO&-y0f-iN@WWRTaq-@*{LQ zV(1?*vyLAZLV%pjS=8QIBygtdKyQbJdx<_}tSSAlJB<8Cf^4L3Lt;FUZ6$;otRf>y zHcBNMsmds~Axq4^dIT6CED@p3=r#^<#9nK|s#U=o-Q_WA^bwXW1A~NV!zYaWm?{&j zS7JiCn=GMARaUhdAWFGUBL#w!Imq!8Y(TKwI=pp@2GqL9^cNXE)JtXJ{+O`h%aZr!)e zxN#gt_96aX%LWZ}Z!vd%Yz2{w-u^RbQ4pKSW+Rf$9{fG=k88DDE3pUXki9`n~&tMm(ScVd-KO$WppnRu0Tw}EorLH&-w|(vHb;?4R}}%>lIf*L+H+z3tEsz)M`6PGdw^Te$2MFZ!;KWNY(yhsVSN-*o4wy9iq$o z&XgMw3i|$8S3aE+`qimjII7J)^8L`h=)ZUo5JW|^;(GIvg|So)I!q?OucP1lLlM(; zwQ6O+hAI*TorFLH(>~q02By0x-h{=mb~l5npVClVNzr8z(r*LBqW@B3=>wOeH64Is zoPwtxD4y{760Eo2`3ZPCfGnSX_x_+rr8kh-Q-udKn*Q;+?zJ_4H5L_zy>OUJt$`u? zm*hB32iX#@%W1zJAe?!knbFA$SQt8rEq;`X=*{zyh%#h=1UQ(I%V{IE1X$LO_zFZlRp`b6|oO9DGh6K8{R!DSSGMN41arK&!0k z?`pIBTJMfVZfw`TK_J#-PT%e5FJ8bMef0!xKn4$UmOy%UAaZT6Kh^t@_mH3aga=H= zkc6Y$d!sZaPrR-d3=kax_If9B^a`6ffHB70^?Wg$4y&eIDa;5CNXF@N*>L?2V;Tq+ zk1b^4f9O(iuQqb>=JEtXCqI9acDpKye%^zHpxt0Yjxs6C%FDr zQCce3Sa0sBj`0u|g<2!jY&tTZ z+x6fnFc;;s$4#Zz#%kk7JeQK4H661p92%V8?4^s23(anU|Exd#+kAHn8WpDbbZ%Ic zN&+U}*`IzSpT-B2tKE)qZYbzaSVWLJ!9j#~CZnx(vEn7P)kz#QLIVbH(7P`}93`Zb z6&r=cND7?(al2Em873$>WiSXTJiS2hqu&_W)aFqsWDcz~AmPIdPzCi4{YB7;=X8-p zgKs)w-1YQ@`!PWwpAO>GLH_i3<3O!bi;SYLxp#32qYVcteR&)flhwA{vke|k=jHkK z&T`_IU3#-_agSW#m%$VFsEXa)RDXEHq#J!b^5GAEy6}P6Iqsyh+4q0xN3aSBZ9T!W z%1dZvdQEe3Me+MI!S+aR^BOfGLEKPj#y(hVhmCEqu>=YM&TBp!5q1_0nE{G(+}91l z_~Fy&)V}a)2mt>dg5N1{hs{oZk&C8T8sS`_2}XL8j^hPoz=91TMGwK&JEBwj^HZ9G z%X+yk;Tk!fsqN}v^Pi^Wl_mbrRpc?(#@HhYBK8H}QVSdF7%CjSL5i}6<%ZY0_)Y(5 zB9XKuD1L&f{ap)KaR0mDzPYcudkrK>nL8Kpq8IB=&G>@@Kpvx1H^d_ z?#7nGB7=hiy+w6hCh}Simz@4zeUbNmGE+Phh&Wc5zTFirgHO5OP`15Xm;7MltR9xLtkY z{HNLGbu3?re^35b;r4kyZ*_cI{HOi;9cgr-eKP%L6aK#2ay$OYD*)oO-x)fWiVwgW z=WXDWVQCQ#f1ct#+nXGB+4T9T%uwaBAl@>?$uZ&bs4egprAgi9O5_dpy|&F-JxE;! z%!}0x#d}66To*`5O5S?hdiE?!(qFreiJ%`zmcqZrSoZD{qXtE zqPlvXvt3uTZT0u>=vV%L@Lvsp!Q=0K2B_3Zg`?fyEmrNhU7 z84(pn>Uyth_!&6nDDA>#Jo!z{+w2nxOIlTM9QKJqh+<@wmvZsPV-1xRX(J36eFI;r zn9E_0qRKYC7=!2LyZR9)Z40oN%^5A3RDl^wCiFtYm)s$|ZtQbE`S_9=OBdt-=2=1Y zK#p3x#}0d(FzLq*<@;`_)XH1IRakQ#$pxEcvL8~xe}74tPXDv7mvgiEN5oz3AnQ*H zew79;I0RX`diElT^-^{__$V}PM~2Yj;)dMWcMlhdMHgAvlC^($6vu*N&X-k|u5Z;z zA{5zHL^d7SCXUvp3QSN`Di_WOEndXiXb_u=@Y79x%dy6V&3qgLax710A?RP z?*Q`xkhsFJOD-18>_96>4~@gM=KeKdNmf%jRZEMC&fDtp4C>92PerR)9gb2YX+kGL z!Ja#Mw#;I#?6;%z0-KTUE8A|@VB*2vJ#uNA;V$n-GRLhtJeaN6iZ?Ch^m}_E$xt1S z)|fL!LBa(Bm*y|cdn`npU=U(RfzNqaeA112rA~{eRkc=A!1V=HTQzUtZA}FL@0Xmj zG9R#-Y0!ND2CYcK9sO0i;@=7ymP<9<`633doWo9bX%k4WPIft-w3o{AN9$pyR1(xx zawTr5F<$qu%VG0$Hv@6Js;X^zpJ?C~rQu~*O0{IvrYq}H^_IJVA&^pm1cY~vR9ER- zTG>?|pkFtfq__P%^-(mr?X{nIj2kFZV&*-KYi}^Yy)_ffD%}mL#_P5IHqzajhC>tz z^DMdB2%=?RES*zW!*hl>hRJiz8D%X|fc;r8gI=4x z5NaZz@Prh7Dq$ER>d13fnR;P?mq&sex1?zSo8AFxUVkZ17*8peH_AWybZU!Re6#I$ ztcbH*7Ap< zz>fyLo^GOikJ@hrR!Y_-yh@>2>deU{V11jeNWcGp6MG2s*CSfxQF)o8Iij8bqcVt3 zwA!adni(>ws$wQjH=u4{K5h{tsS5a?rv^6@vlEYu%WLhOg>yGM95QhXvCwiPaAmYb z>t#iSPuFTG;IQb&@SKuPs_1Set6!xD=&Q`+Fu3R+7rP_Ct28wJ=hjQD)eX}pdgRK7 zF^eV;aK)!o%m`JS6*4Jj_If5T#9Tjnx_LT#gHmHe%&4-z{Zg(b0y`yDM;s;~jbkYQ|J_Z{v{EX`t)?D_ z!-Y~7aa0I>^q7`A$f*qujOi1fNT#7#t7UDvB)l-j1OTYPY^Rd=sC;t;Hwe#KXW1M0 z@4ffy&8K-kUKZg4`9`FcWe?M}*cwx_S6Unpz zQ>KLT3$)M9qm7271z38-#5w4fpG4_()_KafO*D^fYc}QKWtaJk!qNVybFPi8+ z0uDr)Bnk@KnS9TbyA!29HQ9k-NJM{_bCX1s5eKCr)_rKPM=e6=uUKN933w%?OJ^*% zn^`i>QJb15hv*0l#2p7Pqt;hzHsiLh`+`biaQEl-1|I}w4^q<7SnQ8vMad2a ze_ZCV-GrRWBjvDJAd=Q}L;A_SlY1K$x1``N%+4Z7!7l3-cmo#q8=(>@`Be|kJZyi(V09!BS<_4zOtCoZJM#O;o-QvDzqtz;+ZTlqHcsNqI ziE8NXr`M_MQls#J%?QUzjZWN9L{hwmHH*&^j}1JWLt`wb|xIO`N*f)IXn-eN-qh>s}l8Lua9lj`r&0K zxK@fPnuV4!`1R-SPbZNE8uk(mqOa>aRi?>Vsd0VIXllc z(1C$4dOnbKJqsud9tOuVTJl&0$QzZ`E14rCXx$>8oxt2Prd9{WIHznqzP|DI$Knob z&(h>9A*A~gy0rXi;Q+JVwIeHe{ni8^VEJaBQHabbOmOsiJ;*($bicAVOf$LpO@KW9 z5>#Cy~YIdF<*WN=BPw7iGnsPK3J@xEv9**z2Is0ck}Gsle& zoKwoR)@JF{*SDWATT1SbeGnzZ>t7N5*{z8CfE>@SiF)vLYdlLadKMF z=}9-aS~*eM8|SZ!`!aoy$!IK@SF4TX`aVtc>y`E;1I$yq+$m+=Q@N@YqQPH3!_t zBn#$~;x@p)$VT5@Odb=c^O*zaP85};r!xh@R^%P<3n5i2#a&JM3HaQMzN%ZW1+6IO zEl9_t4^c$WxE1yxMxrCpyqB)g)PJqTTDE$?+g08sDXo!JFNf2qXmdWWA<*Wv31*yc zxor=f*SU&+_x8|41N*-=uskH3P{*HV*uSO&C8A(_RhEURh0gfqMsA&B8ZpCUBqk5< z>v|=C`FZp0!%m!`rqMmkw(C<6`;&EjL2aJCfxmvz;bqobvBb~qBO3bx2-tiHV;xbl^svy(;Y-XqR#;UgPT47gS& zMJnFyrPJ9_l;U*Di8CJ|a`W8)G`5ULEC$ns4it{Oukj&;aXi|O=1Ld3_zDvMvekKP zkL8^+9a}|6MQXgZqJ&j}$#8UtHwEpwJ!Hef1xQ4E_Eh0@K*k43lP4s-R&y|tG!OcC zUeu9;hxq(XZr5*|e|@yjpB~z1;DSV&!+MU_jf) z^iOOKYaH#RI)Ac)b(@(;KI!&wkD<+}K5KYNr?<3IwuZ>7Xb26i{jnTURE3hr6y@hz z$+0x5vUv)(T3sjsibefxXWiH)-Hb$RL37eytCe;Gzlj+Lj3)i&nwa()BvpcX`!Ujf z%j3G9zLh(G{is4-3E}FRgz*cbchv4 z94XWLDWcCL5!4uXgG*UuwAgCyfb|2gK`_Nrsr)OF_ikawexPM#7Q^F~w zi+H$sc4Yx@XcDQ6vYz|)2T8t_B4=4T#UNi#Iul4sW$b;^)+u0X(fU{iJWm%W*hZaW zW+V~=6j9Yl5`CL%6TVA{lRj8wp;ulRz%In+TrRICDWZ1I(!H6jGR&&Dn5ms2HN-ef zf4~dh6o_f@A6s}oy{47+Kzs9t*DI<>XN}Ba?^u|na`U3)%~pyD65#j z-_g)h{~rP$vG zV%)BKia+z zi(Y%m%X^6Q(^lU-hK?PFbI z4aGoC>+zQc3$gfX+2LerCqhB9-GO;#m&0YK^gVEYjM>ZL@N5J{49Q_-At6$RzvRz$ zReRBqKnhEhb*(k{^(p(Cd#cXqt=Gpse(QydN>SzDlGUaigtUZFw;NqzQe)6{zlmm- zQojAQ$#)r%Eo`$EzC<}k?A5mE zr?pMODv!QkdUMYXLURzxq}e0-xew&=W;Wj z$!?mxI-b(U7ece#tG|kkja{hpv|0z#{%WSeevM~cb8%M)`Ep&aH zP_CC)lA{gBKwxZe{7^@(KA-)U$uz(?Isp04QoXwR-LB)o1JWZ#ux>1|PD3QXKqJ5h z?epK=?unI?vq!RYyZzHC1zTBcnqb{iXreu}{?9B~Md~!%-9ZRy6*AZg@#b5iR-^ff z8WiY-kdmi1CS7Grzcv|dPJ2pwGN|f6dX^Rk79k-Ds?~X{83QsVmveHlc=rl_2!xPU zK+;HfPuxVuNzktr$Kys2f;-Act^gz_VV;{YVZwas#?4?}LN2pV^U#bCtcFD=2&rry zvuf>0cpKX-5dQm8OCi`)*GnW4QHXSt1ggU-3AvKdsI7lC#)XurFT`*bgze3FK7vvh z1A!6-lS2+(h3@|Qb>mLCf0;UW`t*8A;ICuj4Tm#h7Vb;ze*NqGDtq!RqTKTSGBM-NL%DuN(YG>FE4C7jAkawSdUnEli8V6)z2 zk}=oFSF4&|7oEqikjj+FbRdP42xVRsTOXleKZA+~ z*%O%#4)iPn|3_TBf^cJr%lCd$#ofV^UifNMrD!&reE>vqRq)FjH~RUHMw0_L8AX}- zTh;ngJA-Zq9WgfZp*oW8eaG!YGig-gnC}e=! znD#l3`hQ7EE4GLU7Dg@H=Fsg^?RTgAm4rCqlVc%Yf<56YW(n%Sb%?y|&Srtyi|FR=daBiIU*j47@tS zs4Ch9?SYF?b-wEMNcXtoMw_g$;pP0G!c_<75q+bF+M)MKpd+TdVO&+h@M(Fc=y z&q^}3L;4(Fiu1;&m1Fe&09R|AlPeiCS)iMGct>gCz&Pz2gAsTLvR?gDP}!Ai_V<@A z>)UCOVJ7^fWL#dM31VDyD#XX-!DWbdWYx?@H)K>l8p{p+^#OQbh|O0$Y%wMr?-p@k zspJTiTuP!ZZML&oTuyY7-0ErS7o}OZ9tA>%u^Sb13_*r_M1)duGdwdsNQEz3mgZ~g-USabH3j@r+)QYP2pWQqQB`F1u#81 zqO&^6KIl1-4<&Xkfe~t+^SAFl~m?cwfoO>U$Z`4QI+YZvcf>x?RE|VUrkIrUv9ytxCgVu zc=k;@Sz|3-%) zG^I3O&hTbIY?UA}=gSuVn)Y%>zzIhxDkada zkT@V;U}n&f5hhay9TK&{MuTmWCo54ms&@Ko0fAiXOzVc=-3&y|(PQ!@*Q5Y-?y?b| z?aRdAcSmf%!9KS73$viUMR)a}S4_~Q1A*V^!1Rr$sQT@))rMH+Ds|cA{6u4%P1r1% z01uNa*F)NDJt0xvY)$j#(PWM#K9$t~&oWC=D>l)_!5`Ohd~CHQCbv`Dcwg=puHzJ^ ziP@3tQ<)FLE_6eE!*v-Lqh78$_`VnXpw{luPJtODD+NMk#MY8~w>llFi>=oA(3%fd^Bx{kwXQUB{6)+2*JTq2?XcKSy=HUpc!32_+ zAo=N_WA}JKyZ$v;s7Wga#?{_Mhe0G)YpCEFG;0jUfh9Q7M?L>_??Qv1EllC9P40n( ziOtH+JwC=jP}st3B~kaW(JIb!gAmv53Y5kJW^F?fr=Vhpv%=qe$T~B=k(U?1=xskf zptgzlFYa?<B-4jcAEBiGc(MYMafVnG#$g7#=hgfJ%{2bZ;{t8gS}(-v*wT|4nD&wdVfq_cdcq z-^ri|#sI1(tw|pKaz@+o{+&pyRee>rALyPUszhgXYhmNSIVC6n3n?%1{o_n!4F_a1 z#O&LEf4BML3MxzVtB-pym1TV@6i0`WC1i_V9?sMZE^V*D z(d&7lX0T)kT|SmyrMBM7oot@3Tc?3X$zUYCn0k9fGKJqPE9&rYGak4Y^!}QltweY9 zwGc4>fk5BW`n9bwV)S%yt=4Z2krO?fMjLMSRDJ*zd@5r=Pm+W;Abmb*p(g$Mw=`t^ zx(DgAJa&_B^qkCOX18U6Pn#v=aWWBv{*Q5t_s-i+>(vEON#+<8{nPILMY*y%gbqBP zud3C!+n`6i4Qtiq9ic|M$Bn>?m)KXG@2!vf!XN%GJ-D?Y__?>?JcU$EFK3nd;D&Ng zUz9qJBLji73_k`^&wCb z!|A*v-p_=Quvor-r%4<|@BN$OAXA=@O&r*u77U|lJu|YgsaX#)0UDr~Wf|kVnLZre z-ree0PF(Rq=*)fDRVxpAJXbVKP-JMA>w|>G;g>WlP$HtOxlG|fShN`54&6q^a}j>1 z?FqdoU=K*8}?Wkcn|AT4RJ#reg7agv;vhC8LPVU!H5j!K=!&i`t(Gw^hA4f#*jm zb@kkER2uOKgj#o%3s5Y(WQa;-l+tU)({4^|SvkqQ&o9guCW;ee$crYbov<2Tom9!g zCyx3ZmIaQ!&p_;5FGQzdFW%Egs=bxsV}t%Uk4l-|^#Q=X+$7 zUuDGmDrjpUszMbpC#j5SHGojdOH8w{rp8&LEP>Hg%cn*B%5hd&hx+pY^MJK`8b})Z z1ZT_ccp?l5Fg-O1q>qKF#SXw8pQ4}M#O9clivHHR=s(c}f$Dc_1;Cx*WS3!-L6VQ? z#GL&EZFCp*eDs#lZaJ@>;`dnKj);oWEH8=3V?tHZdOUBlA0t^}E4tfLS(sJZaiJ<| zg3?7<5|;}zoO3aMrSPI=!^|WnD7Rr09Q9hU* z5J$epk7=MN=;c3kFicTWRA{1`DF=B1(unYQ)y%YUS)9r<-AYk+s(JQ5Nt%jQC${~mmMR5ujFe<&>p zt?Y7UZ!_meKa zjeVIkgTt5LogplZTJS(@RBy~vpwq7kl5W-M6 zIw0FF*ZZmuhc$uZ?csJBuKhL|D>e3h{UqhG^r0R0#g|-8c%x4=98|QN$K{cpnqxkG zMyU7q;N3A3oEy_uH#I*GKJDw$I}~--?;&g&rc=ZKo4I9azFfJ}as^#$>KCqDqx6A) z+dG{h7=!0YuGV^^2P18o2AIY(qdM|56Zp1=nh5sJm5{#Y<4I-9pwj5@AGDsrT5B1Q z+n%L&1coH}(Bi6@zgIHUhw|Q>m?r!fSal>2TPkkJFJ`HkkDI3}PZ!^UhRIHHWwA`< zWxrq5*(VVE$UfhCX^93S4L}UVE>0I6S$QRUb-Gk$`W;bPS8?P&=G#@mHSJHdel3?X zCQ(6*=l>Zbzgq%GC|GT_7o<`NdeY--S@*)>t`)3qB>pffmqNme_U)wU??2-J(ew}5 z?D49@T)23Cvp%Wo@kGDwUdLjdNddX}EkU;xO27|)!OX|w{1X0xK3>PzXvA~94e5>E z9cs(>B)kV|gNmW$QJy#*KF=bR7oF-*BsIoQEe0mXT1v$b!JxUcrI34llPZs|^V75E zBXLNy19^I6Yg!?+TS!>XZ$JX&KG!Iiuhycm4h!9hOW5Xevjvai2=vI`3zqlw&zOvM z&k77|Guu&InIve|c;~kusioh(w;P1IJpv5GkLT5LeJuD*VNToiN?|ZAVrHgiJIa<{ z%gGgaGx4tV)Cgy*De>`_3ngTKUTSq%N9q;xrlC%Vk|ky}ca(o@7g~vVR2dkw*GOIc zp$8?!xniuLM)SMxORwOVrr8A#i%s-s!lLF(ud74SecYtZxhR`3T0E)&0aVBSy%Unn z`?@|8NCUalrKMK(d_E(Y#GF+dD?q5~3vszD86?An3;5{n=|OiW{ednym9T|di@f!C zDMADyoF5Pf$Et~PazNSJf5&)qO_jw3EeDKmEkT*_Yxy0~{A*nolupB^Pa8!w*MX^o zI4VSC#~1Hp_vEC^tlUbW!Y~}c&X#3Qx*Sj9I-Cwi5>n%m+84Nv2`BBN7dL!_5^=&h z>}>Gw$eR1HD5WSwnWs3H1a<@~=meJV3Ns1Nawa$ld)mfSc9%`R6D2!poWFmryAMV7AmnbZ6yy8KTPe;P$u;L9qN4r{nY3=7Qsl$E)SI-GGG?DJL6{=@^u~H#D~Y4ghcTb_nmDdzGM$L+;1oP>Gjl zRhn!we)I&9W?#b2@sEQZK%{Lf%gM?4Cz*BmD`nLc6&3X`Y283(1F=Rqm-naDAr$lI zOS3a9T)RPOri|jsy#022@7kX;rK}$1cjFI3yP#aP*%cS`$IuhDccfrZN3TDS@5}tBVLMsKf4OQCjBIBbjqJ$xvRF@ld(1VWStUV-JaOxau|C_9@AY$J zwwSM^bDK7!HS3Q|N5>HPZu<9Yql%e!1`2YK3KMgV%t3L77YG+)s<5Rp50a0=g|Xq zLYay|0&U8SY=v%$5~QH0sPb{|T9bL|>9+*?!xNruZ_2a|$WNaXV6n5!m{K~7l;bOc zr_!KYBKMBZ4vYMus`xD}1ZUwq;PKk4sid_=clTypC$O1WSZ9-jZ9imErrH?joH;fESj_yE)(i`$-4w~`B`NyGwSdM%#Ux$#@HW`srR;+h^w106yzt!cM$SYh< z!0sMQOEKB~y}rrsJu+qgoe9Qy(8(612%7(6yqe|DZTRbQxi3S=B9J{_p1@$2EL$Q3 zBS&^CmH;`af1VUTFHBdKX2{|Kb)KV$&eq{)nB+%yY*i>duqSNRf&hej!p9FU(pbU8 zsQ1~~-ag%_o|HBIJeN^-uI|hkLfL8D<6HORR&@;~6gy|Uk(Ra0?!?$pi+2QtzPjYv z0m=QV6DgyC3Okbc`(8~^eES^ltQx!|1de)cS>F}ZHiajIwM3RiU3FZxC4v8krjfj? ztVXtraTL*r+f=$!&tDJ#xg#}_sDMw8H{@<5+{Cfk=y+@qOCu?_y2iza%!N0Z>lf;k zWykcklBk$N_b%YNyTpN@#*=u(*Mm9X=`j1cSn7F()p!kBwZR+ELLU7}N=g=>jB5@G z2;PvRJP^5Ug#!F5O)b2-3a`-|FSg37Qr$C0<$g?zFr)2UTcnJJfH~0KQfW0>)R0(` z500+^M@;W)3j@1l(C?J*bUUZNy|o}mbvKUZq){tHPYgt69BLF7(Q7u%h$dna4L}Xw zn*JHcS|T@2wP?QU5&M@35+FZXD+E&kojR{kz3uPb8wEU9q-KX6v^N(ulG*gS*C$eR zB6#cPKUVFwUx;Hn;yiYcjne1iW}Ft}r<^vgDh-3YByK2f$N(>LDx9MicQ5OG$C+-X zg!m1*Lmxek>;lI_5p8OL8L2Vgp>)M$cmF4sB52(S4p_xVguBgWa>Zcx!Q)aoC`fDF z8|&gf1ComOahojOpxjVH$Y?cxG5FF%+@h zZ2ov^6tD@9MM|L^al~MOZU87R?5D$0C|@4g9K2mY^OzZb7OwfK)oUaL2%6C`F_I_$ zbFwLT2NGntBmhaSB1MYG?mc?}I5kzjY)|eKK0YjWG4U^y^6X@Qp$NONgV;Ux;G$vec;O9k(smR$j*IX zQasQ@$4Dh{<9a%TK9|O{S2M2xPfiqpH55x+d{!Z>EUeqK4ZxDmD$KF7vy=P;S`8aJ zS$zD81N6}X9vOoSxUmVRAn?e(-w-TG31`%@=L1GM-R}h8flvB)nrz*^8*ARqP>6SR z;}Bi+)Qq1|%iaONh_Uip_S~`;0Fk$E-oSc%F@PevDen1@krM!$YzGC2Bp;M1fibB- zxJpnEF+afyGj9DVY1oKFKteA2ojH>r)8;P)pk@wTSzsof;lL-;KgZVR8w!JE3i?x% z?LRbR6G$!ers?7_+kWhHlGMc7GvhpX^KvNiwA_T1_yx=q*?@Am?hl19p?u@iOunQhQp;4ZI=0QuW}EKZ7hILIw* zI5~6nk~FSa5{bdwh@maOfJ_Gdcq~@@9Scd)8kC}t))Ayn}n`jm%JEnc6=A;@1?X#LqDznaMBM;dd8U97GGYu46wlM zyCTKS%UV2TpOqGhvQv^4DXA5Hjk%E0h`ZcsX~Mk$J5#yx11+rEAN?Tn_yG8TW%GHbv zUDKyWz&P6aV4oiBm-TsmrqDbL0FZsP?w4^N`(cdD=#z2oVSB@Q&7=D9FxndJ@i+TH zg`uDI+4nx{HwJzFNPC{5;9Aqs(vD?L*e9Mh#&@qNRT9Q$^Y{M^1#HHm|KAMvzk7-b z8?0L<_O+*7$-usHd${9yRA~RZmdvY73jDhiuo;W~?~>u+PdD65d+h0UMEp$GoR--< zObTQ*3Ydca7c)j-r(^ptclj@FHBXxquo(*2%!V18p~yozViER-oG`yKDUd}dUGcTZW1;y!K~c-A zu>UO$*dM+^%zhjH_=+uGq2=qq=JEF^U>n?szH@^4IwK1-Iz@YBtxRgwlyq2~wm`0rBxFs{KC^ z8;=S%sPYOxL*xDSN44=!o+Ek-5oU6uywihQc}ZhcPIx7k01!|5MmQB7U-#v6_>YA! z3Zg&<1y$z@@1H+dR@!>(>WVmZnU2U+cREques9pFE0j?ho^i zpU8ODAd9hpeHuCBU9FimeB2aqakN)N6fbw@M=}(d?Q(jCjQwz+);?pkm>ekBa23^D zmVL8AR<7M79w^hqLJt4N!S}?ceKc0V630)OsbCVu%Q-BRL1?GGy}P5lmA8x-6FMe-~m*eE2l~wP(5^EU? zE9=|?S-eLR%XO#-bC2ouIy6A#NI_<0Sbsl1Eevr6Wwrdhiz+R7j@I`&yeAiwT=w?z zLP@CGT9Xb1UnCoZjv~f`&ostuRH)(jIXC>C&nC?&z+*q`j_S4ha!5&ol)aZ ztN)mm;btG%7akn5K_C9jF_IoU*iS>j@o)B>ip8Qv$Tu8=<@IA40e)}r5wGX`@Nc$b zeAY1HUb}pbF}I`|X=434vvpsrK`||D-{;>4$H4PX>#zwyr$jsyWD!J88_to zwVTqk5@8Il(zjgw(%h$KQr=cLlL%)Fk4bGf88z!dfY zgrHm3&eEbyN4Ubj$kK9&XLulFRDwT}Az7>LFrc2i z-JG;0JB2L=`b{Rjnt4m2VR`eQ?UP6L==EAz2Fy>PVW<%vbw+-MfU^!?&^<6nGHyKj zX^%Sh$*Gs*QsxbD16YMOieED9xrO{h)21k%86JW5lQjgYTc?(^Y}-jfcWsrrD;CR< zqv0}Wz}wQaReRJ2%tXHnt3so2B%nUtd4OedP}iOcH7y$v?R9@841N1X!Lm}r8 zfjWKH!5;+ODB-E;ma+=(dk>4chktf5DGdSGrD{)D4F zmf2=|K|t8ahwzhO2#v&f&?_!EO%=bFb765sNJpBppY&qRXnAsYL4}EBN0{xW@2%K| zpo8#aTFw|Jf>XiYX&0}^YdyOFhpZ&Z246xw^<6qyWJnVIZIglk02bp(L_t*jEQsEv zeQO2sBZG%*-znR7??=Vdyi%cTDaBa31U#_e9}IxT|5aA6-5|#zqGjmt(c%HPV4|h4 zBs0Madv$@kh<0O7#Q}${CWw7U2EElscI?`N+Uh~5OnXGZA;{DOaP;-@k`Ys8D^n81 zr2jkb$+lewRET{_Rg+I=%uC~pVRI64+mD29L`(P!vE3#|# zDit6Qc~B)cRz5~4?C*hcL+&Ci?cg?3xIEllWdJbRC^$q(A?y;*GiO0;H0CWPjTodD zYN@HIvIGK0rI`~J_ch?xN1c5_yWb zUw$Qf_8yQKpUu{=$j94D#*Ck&0#FdK_LgniwOvkqZ_prQ$8J?ToQHx?wxzt?Q~=$8 zh_mkdRa(xA)nwfuxD>Qn)ho$}p>@$lPWcId7|T|zQ(>p@G_GG;#$z6-pa^)eVCgDx zM^RDEE1{%^yxUj2y}Y1+e^&IEu*2b6MYn$K>RPTk_{W{-b1wBhS~O`W`@?>cbcAF* zx^@8FLZxSey2^tKmafoBzY~WK6gO8_&?-~bZP<)(B?@$L)HK`t`ID>Dk0ZTGE((@bmG3^4Nv? z@-37pUU_FIDz82#T|0MB%X2_pN^7vH9Iof(FUutf_#A-b(AYX5AXSHw0rk9ezRv&6xs}oQ{g@%JST= z^zJF19z}t}_Xd!2-k070Z#)9jS1RW2-MWC@rDebeBUNx`Oq~EeDU2HV`xQKsA;A}O zzm%as#2xkFU{x~H<}H(Q0iN(WiU`Nedj3}+=p9~Y1GL?`s<7F9YWg+#?(4DI$31AT ze7UkRdEyvVZo@xYEQ=?9s5o<^=dVzz{rmM5S3qRF)cqZqJ$Hh1?$BO%j-JD-y)DSW zgGWpdZx2^hN|>0Za#(_xr_$8ZX@vGX{c47EXi;BD^6w8Fp~=WlSP#M|1;C~BMlvq|N-8)wMCvqdt?n@aA(|mCz`n0uvtE-| z;uNT0h7Le4-L-p* zerB#A8+eLd(@QWICCr#S-kf9T%OW8Ud6hezo+BHjfDQ~V=`JFUw*g$hR zOTJ!?{x%oHVNwo;=NDLV=6G5lRGhzH5qQfTCAaP19X(z5-R3MhwLN21LKYD?Vfm`H z(!O&$5dV&>+qgyAwrQN+)P+)xoz7!MV3u$TO>>~)(qQo*9@x#z$k>CmMI z5>Gb~f2FI{B;ym2gh`&jigoy>S`R!LM;_Js>_<@`rqqNB$dI6F)yh)7WHG4^oG|t) z7{CXN)!0rN&`91J`4RFA*#LZCFZF6ylYvOaz1pj%jG6l_FvgrDCjcdWL_2xyP!}Bv zfk``0FHe0U6H$!wznZsB+I8#>ki~7%1ny$BO6AlNW`nR1Wbygtjnu*s8hPLT1L~F% zkbyvkFVw5339W>)i85*WTxnP-5V?dKXy3Bb#RqxgdBGu2mH=6(S*f&a*cql!$R&zf z5O9cGLpNCa3GaenkU8PL`uqFg?#qhjMgWXbm3_dBC6Qb^uL`NCQz1Z1TUIFOa+mRj z>j}ZolGJ>#cq*+)s|qz5%Eny>W$=Xy>S6J$pP!!`K7529A?VrEiCXFk??9?<^Tw3kk`HdRXSr@>zcpWYLm=rQ2Hw$)}xr!{iNM zk2P*sPl~}R)2eM=w^Ba&bf$Ff)Ly1en+fIftKyB5DMozwfmE(oK^0J=GJeWD%s`)v ziBYUGK86C5l$nnaGm-Wu|tB9=j`pUc5ZbE`<{U?Ckm)B#B1X< z%oQ*ssZg_u_LJFqChBei#6dIHxQEZ8SH!ydw1S3U+C= z&|365D4@(aoJOd2@K}_**6&^E*0CKdxr^f2H-XpSQ?WVPx2()iDU-P51LC){f4=}I zgzUh$K0lCqw6;GC2ziGcBfXih<5(TBZ{j*=K)zG!o6E9tLJy#XzmF96^H%yX+kfgb z5_O)X#^Rif!$*(n1c!zl()g}BvffM-HK#JoFpmJrOKALzn9koVcPwvRrO z;mMd>?>>4mNrl5W2Q{qciGCX%x*c(^gY4ZOrb?&JD=!P7nhqQa7awG#c@Js8*uOAb z;`W{E$e78~kqEs2kjIzh=exhj@yL^ME%TaMYzhbIIeWoUO`_7 z-`j%_7rV-b{W{ArjM)o{!yYhEMr_hGi+bu#C^R z1h#19MvbqSfU8ouf-)ePo(JREd9znZPY`eH=wXN%0kR0q+pcYE#RW@@4AqP&H`pk% z;T|%+HOS(1EaA8VM~pGk$1~?aspPbP3Q7)TBGzx8JbI{l2pM3ijhnYBf@l&fEkPEG zW7#Pb%()ctd{@M?vA{bcP8+xs%uz;)I2MsPNbm$ztc?u&w^(u;CP$BjtLt0=Ze=A{ z{An{j<7l*B2FM~Uh9}~;Z@=H5j6v)6-MUSHUGkQFKOKXc87A+(-Cz9SwqDJ+3MKPA zT-@^jS=U&wpVqH<}E-WO>>t3}K; z#?C9ISGaRinCGOuMMo z{^;>2sZpaU5@_=^90>S$tON#@ka_bLh!iTOsJXnJ8SwOs4D5k$LQkFnU4a~nxn-V* z3BqgGgHW!xw|upDnS4BPteiNwUN&zDmeIrBlc1nLnfK*avK@%EbjSO=)?0`lNSrz5 z7U-(4-F;ME>XwGsyeSfm>*0;YsWqqfb{q)7gzGkVSBde2KWqbJ5rbgdSP*NE)W`>5 zr3=8V+#0eIad#o{_ViLWia6i|FpNGKBRTVC*Ykxz5Ka`AruM@f9EP230VPVpBIMSk zFK%Mt1`sknK?*tXw|)gvVHt#3U<&vl00a_q>;kODWnhGH^9;Ab7Dh%oGBR3Y)fC{5 z6J(JLF#nsiivPxCyx<*sB`x)WPNb8gqq@AbYSU)SlC3}P79ZfCok>iV2xQX(iuvgV z7KR$ESkux$V9Jy4Jb5l?5oHlI8BT{F$7lwegLc3e=zd>^%+Re(OiV;v?W1{vGXO%|@WU3MvR;Lv zIt@4YnjAcM2rCi3x=KOCJMYVdvSwqj_+fq5zHmWZ72uL3p{?^GEV^<1x`JM2K+x$9 zJ7E*jc_^N!lYo?l`_Hv=c`ldS`S~{7XeYS*H}PErx(3h1$5Xt$ykt56Cv#%{X)%eZ z$MECep(7SS$Gnlwhp=2_m*+WEE>~~dR)9?eXUOH0(Bv8sSw9>#QCx}?l5IQpVcGDe z1Qria>&=yd*+7jwo0OvBvUAs7(7+pW;j2n&$rZkfIfplOGB8K3w&vKpW5js{9zMFEl`w*Nw6&y z%zfxoqSP%Lpz#pL7J57ujE_CpaBKY$+g(h*CSI-pS;XY?h=_?7cyqeB15HQ?SX#En zrH~Zt1`E``Y0m-3h&|~9Xync;ZbI1u07v^gIi*|)U)|Kec#3PEjMaGU1#Hr(5#%Gm zp;7XBm*!X^8-sP=k0k8SQC)(e#$}v(A?>p43y+slzRn7=7#n?F8rGw-v22>)HP^1+ zl#uXKQp(*y5&$q*&d*)j;I`SL(Q)GL2#`f2_h=1y&`QRiP0`8r^>R~>h3+Eb#ApSU z{25DqIaL@+2YAD6epXVE6ubg~^Y?Ps`*=Mu$=$*HuGnm&t~GKE1cdZ)At1$Falyur z4D^k_j68n}LJ@K-1{m#tNWOR#YuONR2rR>au!vI<;OU~)hCWg{*5y+$_7Z?}#;sV} zPL;za0FqhWSC#6aD2x~Mr)Ncw$6beFrF?OBDFlTTvU#m4Dblc3+aA)iN@4m^0$-?xb@|nlP5W37Ty=6fGr-7Sa9$VoyFdF|j=+@Cb^@4Mqj?=0;q9Tgn#q z(J}E^@fbq_`rwH@Krk`F4XUTw)Ps5*JNrTim&1jr(P6W#t6%9PhmkvPiH-i@QjMw}33(#Ts})UDKw^ z#WmkHU3yE9znAvG=p!ea{bIYkmq{1)!{{TgBlB_6Ie}DMyq0b{dz}lGlP)@iocHq} zJ!nz+7k6G6-}4-qo^dkA%-?izE%dWkMRj?3Ar6j%&tVddZLpv0FOx<*NGs+?jCMMMQlg`XYcqg7|$tPjo~$4h$fV4Li(<_+-MGWV97crF|1tn~gPFemAtfRdmA za}uOI=fgNiUw%*ea>EkGWzd*&!g+ew-10jnkr~3UP2=GGd?x3JzYSXRyq@DdzxR`E zKQM5kp(prl8!V}Yj+hM7E=*GIj@)|;-7vhHssnx`a#V8x6^*1NdU{LE5h9L7hi#=0$~%RND|{{9bb-8*5KFN?z9R}^sTt{LMs z`gZ3IEG>3}F-K7mIf|{@Lgc&kTkh>xqmsP$z5>>*A9fh?XPh(U%=p{-H_zRt(jRF; zfiwDMeUI_^LHb%>O9k}c@n>^uTt~Y6+40A7f9&U<-Sc<8w;7B6cRK%1-$Mo^!`wom zF!fTpIAK3JLx!jAR{hiCu%-4%Q!3D#5N5t~!#4yeDCY6cQov>``ae6&zt_6O9nL0p zaJ`tUql;(?`QM|ZaTjUIB%U4ORcGWR{%FyRtIXd|n*yew{{=-EC#p+{u!2l#9#2jI z3mp+tKfO$4Q@|ATtUP;W-%ScUCIw7Ee@sG|mzfmE$`mjKJuA{ryk4XVj x&>xdf=4B=YvN8osLC?ywXZGEsz++P2{{iHr%l2yJ?KuDd002ovPDHLkV1o8r;9CFy literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/Angular/images/bookstore-edit-modal.png b/docs/en/Tutorials/images/bookstore-edit-modal.png similarity index 100% rename from docs/en/Tutorials/Angular/images/bookstore-edit-modal.png rename to docs/en/Tutorials/images/bookstore-edit-modal.png diff --git a/docs/en/Tutorials/Angular/images/bookstore-empty-new-book-modal.png b/docs/en/Tutorials/images/bookstore-empty-new-book-modal.png similarity index 100% rename from docs/en/Tutorials/Angular/images/bookstore-empty-new-book-modal.png rename to docs/en/Tutorials/images/bookstore-empty-new-book-modal.png diff --git a/docs/en/Tutorials/images/bookstore-final-actions-dropdown.png b/docs/en/Tutorials/images/bookstore-final-actions-dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..4f41829f0d51b6eb62292d7827575b4bc04a4706 GIT binary patch literal 13747 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 SUf$2IB!WK3idBf{`~MH3ZZ&)W literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/images/bookstore-localization-files-v2.png b/docs/en/Tutorials/images/bookstore-localization-files-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..542cda209c6c620a0c6b111c42799273b0d1e05b GIT binary patch literal 6123 zcmZu#cQl;e))pap?=pxUW%O?J8blp6y6B?!F3M;bA<;Xdw+MrX-g^lmh!Qo-AbRJU z+~2+5UF%!lALl*qUhAB*_St8zXFvOi)7DfWz@^1SLqj8Yp{l5hnx{~s82bt8dqevE zDQbG;rK=*3RyzUMMHv|Oaxdl3(CU-$Zmlp;HjcZhu@@Q|quAf^NGXlq5)F+i{Dq<% z*x!6V7tbBgpE>xjZvAvgY@5)fAkpZS1=qCPk_OuFxjUxkBTj2W?~yLcD@IVfI&NH~ zBy)O*TxegqI-^`{Ky*XBI=`VxwW73XDXxYl+!T#NB{_=Bs4cA@3*)Q*Wdwmp$9-U+ zZ;-FOoxPvkdEr%PEyv;MnD^w^dDt~#;l9e*ZX(AAAHSEp-(xQ<#wtD>vyV^O@)3U` z(eZgiZCIO92xp>7?N69A|JYFfhj9A#ZGQOnJJuw#jTf@-mLD6%>6g19^f*djB+HRp zQw85+6?Xuak`yCe94X@o)55S64cf1KE#J6-5fj(GQDJjm<}>yjyNhx@;Kj9yoVr4b zR}Vs4tb*!H58kZ#^Hv2j=CpjNsmCC#FL9{Tb7WlrqDUx;Vw7knQZosbBMl_PU~HcT9cgP(Xue|m|A zqNT}BjUQIIeA4?P?je6HWr#bgU2sSEPM@U2S_M*<2?)k4f=PRwQaKF_#c9os0B&SN z@!;MzcY1O;ZT^dqr+Ju)Z;e~Maa`NsbfQ1q1`nToj7F!*|{0FqYXK~GEiR8UKO^k`fB`Ol`3 z!V`)mN1Iha)mag%nv#mbeRA`;BFBcsB=@nUmiq(OR&yVzXme)%QdVjAq1it5LAuWHeS7(S9aM?mzA1=Re86 ze%>?+>i^K$fqCaaA|3ZR@i6_HK^(S4w2^0LaKJoM8VsQyg040HTlxODZQ0F3_zfpf zYw44+Po|qxK?CQP_`Vk-eSy*|BNv{N)fa^dvnuVYzhmm8wd;ZJNjju(HmqbYoT9Q^ zb(`Pz>1TI6S?V$dH$h!D!~%8We4P4OJk6pleP;UD%>e7-4B3uId%45MtkX`?z^x-3 zq|g~lPb>k>k&-s0>k|19eBg1{wY)X9SwcCW61G60kSyx9A1Gx}Ovk~(p?s{JS9bGK zdoX{38Br2Vk-QpN`3boJ6kD!Bo*e0RK!TKaE9f)IL}uYSoBITl=zEBzm?gJPf{lT9 zsR;IbZ{1{|HnXc!C50Bz29Cn0T|KmG!!t0bxKAztF0#X<@U)6JUcofs@*9Awp&Ujh z#UTWD!NBN_u82`1vr%CVhnQ#Xuetzx0t{o0K=;K6`C2h`5XT{^Shi zyTnGK)dubV-50Ns$a77SDNylXnDCMNc|u!&Gr8BhU2Uayd0rSu^c33JmLvd2YxFt~ ztn+S5JM^A>Zg%?ho1FHIZhg8aF77W?MHX@s^WY=aR1@lVCr{t2LEPBL2Qsy2ojT?a z26OTYF_N{^ZrKG}Ru6jy&J(~+L+U}j%l8X*_pTdFKn08J_>G_??fHu*)^_5N*;5}) zOF|QNdo@V}hP~eJ>;T;&nQC?Jn+h*D@Hi%;J0Me$Y%Zms?*s2oXVAr0xTrwsD3=sl z_cnAEO{TdnXnRu6AmEq^U;pPsy_ey4viKX1E$ZrN*!Dh!Qx9NqKZ`kfgcoZS+=XsU z%^-&R`={5Wem-@KM~{x|#q!0>=U9i{n6L)!iK#zCXU?BZTp)w#faXFW>4GD3tIg3% z)H0hvsFI(b;d7>AHez0f;tKWsCT?K`r54G|DUbcfHRkOSLL|Ew%xpF}dP-k`nIw>^ z@VwAK`xlC{i`QmfE(hk`IJOe$$Cii#fra@?{F<(6`xyXH8~&>=;-2HnE+=qFC=Qw7 zBNCP(;4AtMOj&$ZZ`IBq9MqE27;J2n?w;QDxJTU3@x{aj9q5EvF{fRgjmz>!@5B$; z^%=K60bke%uS8a!tME!P3}U=Af21?&wGW>kN^@B42;meqI+aeQ8KK~1S$IyZD*6ZkfLDJ(S&BEqwimA9>mX zm%Yfa5uTl0Uw#V`^E}y{bQdxjxgpOW+SSH0hA??PQ z)=fof^$9TNV$<#!$!fT7hTskIB?`Li+EFvOI7GrgLeT;SQb@7b^WICCg&B`E|KfQ38@KYlv` zsldi1oyxS&tB|G`Ok0}htNY$JGkVcUHdx6{R9-`&ISrlSE^KJF$ zoo%_n*OQT1b4=oSRg1iC@QIsU(QWCV{UWcc&kITYXO!wZXwTzijwj*vgf>@y z!OyIwlTe8-Qh0eAdQs+Sjz^gNV`O{2wHo@CuS!+}5y0S+Y$}?1zwf&E!opoxSjxY~ z(=D_)4jRoQv4rXS?0jHZxh}mmjxvX3kxLC-;?f-6&cqJ}m7v4`?cC#`JS_deebY>* z0vI#Ny8YZ5w1lck*zcNb(rRLUqDx=q+9I`wFBR)10)+{A=&UhTNUOhu=YJF9zZ^(; z%-O}aNnp!T5j!@gX7zFpqx$;HD%CprNrkz`j-C_n>1P5XtS~l-yNMcw0Eyc(JzDqH zZ`|+fjMkE|<}{4uTSmN^IKMt3FicT!9-~=B9}rmkIHG3V${mYQwnUxbRJe&=>2F^J zSffdKBg^2fhVN6Hkey#y3PZ2NwRheC39*RS$@4l1kI5BV*C%56ETzSmP}S#(q?DC4 z;Wz_dzN3-1BM|c$TXLvr{W?rhWui9P!3fVw1hSH8+e*HI>nu}dzb&tZLUo$oux*C3 z&gA~!Ibne~;azVGIJhg2`_|6=t0bH9H0eCVo%>`#QgO0Vu*;8gYXTXb#~C!ptnayw z@33L6I}_ZroJC_8b86^_HJZ@pRNhH~$v7_N7|^ak)fzvdcnT`Ln$%`;^|AZqpsgRh zY$=O=|9(-(xL*smbyRYzil&rX%FJv8{7qt-+)yvC2>Sduu}Yw=KYR*ve9 zq_=S2=joQ?J>lzH)&jQEf`I9#EiZVv>N%H9rtD0&VRcyn|I`S8!4|Q)RpCk%(=OUyV@oAL4{quP5gPb$M zkN?)MQ``BGz?L`uswY!Z%>%RRQq8xFc=m5V;eIpw*AVDdD6@+jax~Rn-6{~ z3lX-XX}=P9e~Uh2IMgczBpHL_+;o6_MR6JYj@66))Mi@y{L+M>QTt-__GMfh1c&rJ z&JEVz4HUN@_?y)DaTN0%muvaO5JGTs2O5oMin_AJ7wriRd1ldY=XuMUbM{ZJ%MxSx zVaYi!CevdTF(2}rgg1}NE2pBFES}#I&RaPdln;PulgYJR24&VDbbf1XClkG9e#_DA zK^NBN$OQ+NHguIFi6mur+Y3fyk0Q|J@9t zFphP>_S-EDjQ_O zn@h)TB4gQpBOkUvs)uPDV2mt zUOala`#{nW7SQhEGXSOI!c=4gjB85s@jZheiHBd45=mbYn`a#ZgF!xd8h8XwKI;(o z`{hGRSyuj3Ef!3n?OsuSVEvPH(^CSPrkB|w1a)o4xZmqK86ZUV$}GXsuB6hpd#f>A z^x{!FTE;VA}edY@j2#xi|9)yAic#~ZtI7gB>!&Ki{6`C+NT{tn<(=|JOs)BDS zwqkPTGS7vKy?SyDR3%VM?e*2rA}M@>xTD4cE|DXhfa1556OU~@U?bhdglQN}Twr|e zf-dbEjgSFhr^|q`Kk5O|ZG?O^G9-9@?e?o#Q%&s*R_YTX?Ikvb&K#DHFyo0|09rJo zEi)wb!P`L$Hh7^*6 z{FPRYn1E|>1d&x{$ttWVPVHf_n(V~T#TT9yrHcC;q*6KIpA(XDo$<~yhqfj%GQ{cv z@}p^9Ieh&GB2P-X(?ct@yY{<#94uVk1Ew~x7Vo9spLe{|vd+Q))d{$@YP+sAnWz47 zPwzYY=l%E7P%R#$6G8e=jC;4FZd~sV;bH%Eh7TbG4L%EzHB8`<2U0o2PRo5>1C~rM zr9T1=ruE2?&Gf}>MvMc6=<>Nzgt-`@3ZFTHgc~p z&V^ndssRjYYl^i@`xh!6#DHHlFnu-CBin1A>A=lzB_KOIhv$1^Ysw)J)6hm?1_cxn4HMf` zr4^xyP>j7wvSb1ld>cHyDql{6VYgFBI7fI-v00*WYy|Uk|i} zxX7V`^-D}wDdU5na0qseFUT(AgTrtD*tU|LyVg*>lbyMYF;Ku+U)=4U3sRs7bU8*i;sdF^Zmo*BBxLs^b55ejI=fU;Ok)- z1y7N(HxZ$w_N&&XbEQRvpyr}>&6+(SUq@S?IH_KyM1=Kc95dNd1>1l1ch}eBVQ~ls zw->zjqWP>dyAAhYp}M~v^CGVU>xC|!H3`7t&E{iPQf1jwnMeN;x*;X^j;Y!z!HAeo zwOlt4|aP z%fI*Z@_S1UX;^w%Yq9l6A4%PvPW(OQ3fX0Uxg{eVmoC~FPsMQgI7QNTBbiHdcz@v` zsPtcw5=w6SUNPs68;R1CbPCDez|>5aqTp$zF->){kDaC)jrUc=w%;@wEHA%OYIV}# zzL97Y@HVRmMSg1MImwV{yvTAi$qbla^%B2s9S;Z`S*=KIl>E-vNvccwe>&1ZEVsk% z7LAI+*~&?SxEc;<`(cpbcp zQ8oIxg;Mn&;YSHk8dty`k-JUBEMH52qr+hrKlzXNlkR$F4Vi++jugiK{xgdzwYYb7 zdQ5*wZ4prYu)J3NW2#dIdu3(MZpJUz4>!!fGhE~^iQMT)uSe@}92Zs5ecbsILoqsM zzYf+?7IdZ~?NJ3(%RIz8NaqLeCAwo!PGWfH_TV2893UG~l)0M6*-S;(L872lB(nv7 z+oHpj26naOBcZ4-W{-}!lIx?38%w}3`OMJ&x!UOahvjYR`c-PR{%%_Vrbosx|PIgW(1?(@44~34=Iv;ul1EYWp*Z=mz?%}?FN&9+Z$~y zo8~v9N2mKniJA^tLnx+wTJayIy*d6$VL$unxe?9YV(jY~+TvT#AifV!xq;X(aYd{p zZBg7Xsfk349H_q0L~~!1H08n7PQHSQii+hrzql_FZ+6z` zObbXB$0fN;cU@FY<|c17X^l|Fn8qqN@4FHCs|kB9$F62iMQ$s(t+BONN5!tr%{0{q zp)myx!vaQLxsELwK06^Ms;$1;TWq%WYO}~u5sg7Y7sRzUiSIZAuJR^Uw~ZWZ5j(Hs<*BCnsV0d`LHK$ce;iz5j^u_{dicjw iqy8;!YfPg(5UCk;K%IH9zo7(rv=>U6ina2VZ~q7AF}&{p literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-menu-items.png b/docs/en/Tutorials/images/bookstore-menu-items.png similarity index 100% rename from docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-menu-items.png rename to docs/en/Tutorials/images/bookstore-menu-items.png diff --git a/docs/en/Tutorials/images/bookstore-migrations-applied-angular.png b/docs/en/Tutorials/images/bookstore-migrations-applied-angular.png new file mode 100644 index 0000000000000000000000000000000000000000..0724e4ae8f00ad010031d790facb3254f6a98370 GIT binary patch literal 69174 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�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 diff --git a/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-localization-files-v2.png b/docs/en/Tutorials/AspNetCore-Mvc/images/bookstore-localization-files-v2.png deleted file mode 100644 index 79314dd2dcba2d78d09154c6e5c7e798718143e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6323 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 rq`-$Eum>2e) z;5~-6PaP)ggB@z@?CcTuoYDi;y2X0F**!9O`AKbQvt#`RH9?!n4azktf_Ih-bMCQUO?(MEr_cc`xa8 zi17^o-v>{88HjlazW(h0gBf2fG!K*GD`(@YanHCp0pUxR>%OB`Fnsm@8EJj}vs(U2 zB7B8P=vccI&h;1DWD|Y;4rjUe=QI5b0sd`=42>@Vry>6_?;jiD{vrt~$zELEq2J$K zKgT#XWFN|EZ#}+F+b*F*1I&Qb-0ScAdz*XA>-_I7jJuZ_KT&c&E->RT@~zZKWwCW; z6n*Xz`P%o4-ToxbX6C_5!zs4nh)*laNPqMFtgWJlzSrY?u;H;U4VWnL8%j)lKws-^ zvp1SLtymnuj;>eU$~dURvIzMaPBtkQM~3!*c00Qp_$s@qoq29ufb^LjCq7h!;wYY) zG4$zn3B@x%^~Iho3xsdneYLbpnXK<&K8FSxt_E5^^H$yqe+~q03i+g75K~fmuUha8 zCcct&-*{t*m@78IUGWRcJ zRZbh1Z%G{r5v@Z%M2>FX6s_6pX+++YvG_Ou#8cGJ88NcPMi^_eyA?$DXY;+KKl}Dr zfMtHC66T{r!`U61`h>ci`is`cG*n#v9M5&}wmMwk%GPR8117_YI4n#_RnUK-OF0O_ z-(+R9x^!IQD9F4V&uMnh-={emqP=Ql_s!N(Yi8My{+f5qvK5nMimTc=1I@aK&9dC_ zWx}SW!7+}nFu!S$EpPbp>{?3+rzra;6*}3Y*Ii~;8`opnn{K{?vMW1r$iylT!q$&V z>oIee8{lxlitVv%Yp%U#RkQD3ruWp^(a@wdeH7|bFkh{dD2uYV<}%1Z&k`0G+rWQ2 zUHTPWl(bl6SXjUy|ENVQ8g$LYL&9C@mo-xg&KsKiqsrcwVs&VziUw1bknoR}cb6QD zekL4TWT2?9ehsC&Z5)vV8@Q-_`Io^>F5Ab%VUwK5PuzoHwapQNR1(}Qc=m9Li$RB9 zO;O{R9OlP1%ht4UhQy>StQX#GW>=8G9AK6&^3>UFhuz7Q=;{qL_s*GuYU&~S@0bW52=z=yq7X(GT}Rs{4m`C4DfqE?a`x3{qX)t=xHEt#U8 zt(FbE^hGhIF??=;%=D#_7jC4;?BIFa;zYYLn|j`=HnZAj$ix)g+h)~SCV3QfqfqIK zTAnyGSx(+Dq(f)vMmP|!wIkb(fISoe&1mfv0 z8IJiHkA}#pCAj|C>g%hyg{il=^cGu}!Z|T^Q`GySeASTc;YZ)SX}Fx@g$)_Yp|ww6hPRq` z@q?&*!HvuNUU)@Z7+DJoTi+Rukd%H_aj=F3rp=Q2$G?ccb294QXK@HuiQfXN>**1P zPAC9C!TIcxV63yP(6{FEjleKG3I#p^eQ4GZf3~@QbF^Y77ug?v0{}2l`s`(3GO8;r z26cDBJhZHDPEo+)tbmH;Xe|IR734wyNCfijQUCzC1K#JU1+M^s#Bt+pop+M2cMceX z_!vB2xvEvpA^<36Lvb(9O1iyZE?Vq>z08XG^h_E2nEygT0jM+f=o2e`bs!q~2{;2c zTOd744Q&Urai;D{>UnB(p^+n^7VDiKc!Fb}d z{N#fMY1#~qK)XUe4`s+^M5$j$&liYM=bo;!#}l!!vGpJH^pMPxEQmRODmBgj#xz-Z z;U&yi#j)}8_vb=S>FKyhXCWK7!982g$by2so8S_Nb~D}J8k>h;*|w|evZu7Bze{1E zU7Ga}Xm`naH=>9?I;|rUO&e^!BhtWmc|;X+xJ;-l)a&lxP+xwhcPJM2#O1-o5_Yho zV-U-58h=a2%#x5#A5Km}@(2ip4mJ5wq=J2MsOdxB(}#OUN9_5B8n* zb{GKx8P$rb5^ZQ3(lzyv2wU^B(nW z_NR*Sn0hCz@QvpmlkT6LuVo1SCP+$h;x#O~-12veLxG&)SULOPq)(OlFZylcMfdm@m@cH+TA(kI-!JvP&fK z-;YksqC~jHs6q&hDP|@sZTMHQ@15!>szH{$bHqvWjv>me6J@@+)@;O z3Z+6!!J^Q&>44fe#sTn>a*7IFJnuOq1WJWHsJcx4j5&4s>$z?svx}fsy9Aem)sA(z zUq2{Pm&<0|+iUPUcZIjE^d)pd4rc8BtPQ4_eIiPff37`|qNnF1q(T5>WMFvawS%%N zc?{(ex(Z9oEH9vPTD8N7IDOYp2p|M|nrIL|-Xgo=PtitAJ3F*kF6a3)uQHy+#dELL znks2Jzl)<;*MI<2JLF_>UNdNU((SUdAmjY)R$Jzw5C&JyM9(AK7sd3tM(K2 zam@q{%TkKp!F*QAgn!};OsliSxjEDlDqbN9QVo>qQ%R5?R=t3HbkBag^?ayr(5UZR zsy!_@3uuq)>?{kuoI!Kk3o!=`FS-Yj$@|~X+l(}`h!59d-73*sr!r%A!hX|g%(pHo zWo^x&il1n&jLJ*}I#P$LGj-?Kq@n@8^Rf;yjYBZhlp!o8VD{y{NL7Zg9%t?+#S-xH zB9+MrIQSml>+eUmXxC@R3*(hM9ANF3pqus8qK16_T7w*Q)iR3(_u;=Q0t5KBnF?iM zSk8VtB2zx7E*EPUW%gqCbkCc!vja2nQRZJVb$1v^g$>_xCbF9>zDr>>k6K(@#5X-0 zB-IP&`flu~*tV#*6wAo^XfNUB@r+U_M?DV$r}Fd?X<(~u-6{uvtMitl;yM2s zoA)uCWAj&;sy=1gtW{Pto-~Pk4S&wO+UX-3-|(Ia7^-?jEtnLQn~~_i;g-6$Om6V9 z1Poz|&%bhQav}B8b$b>58U*Rf``hM&$G7Vc#(9|`+zb|``aQCKxshjg#mbhdLcvq@ z_EgpTA3x|_@KpclaE>>tZ~M5}iBp2sTTA}BB7P=#Y~GEZeX>Rz*YYlj%3>Xz^--jM@Uo_vasG#x zgm}bbK?rr1s3wx>H$@*4WToU`|MBlp(+{DVetv%M|9SlU8dK3SxLR{$wL`yV;7Rle z0A}I1gQ=_AB|hUpf@i{e#>U+6oh&c|p~d0&U*E|KD1PUYM~jt2p^9+kTDxc5tEHwh z^44pcZLxX`T4dunf0l?7Q`*eV(;KO~}C1r7OLq^mAH6w}IM2(NeaQmrarQleC3y7Nl( zORDF;0`XGt@O=Ay-K3knp0gq^$MT^wE9E@vR|D>-jyysgUQMr)^>Dl-su&>I(cmVt z_;7PpB+Y<1O$lvtQ5$pNStB(lG0wP0+BH7mMEc7Jp_Kf?Y zxp>@B{N+bxS!IdiTR@nVI;Gmn7sy3t`QIdk6hGIb`)~ZW>ef8;$ST zV`?8qU5)bXqUGPE?ksXtBvX#8b4lUO%<$IE!@~n_!@RwB1vPGj{c6gV;@_159-N$5 zN(+liC@p6IO@0;Z-0>UF=y@)R2czJDzmqTO7#`GzO^Bx`G5z@AMMbEVqs^dk+*ziS z!&lbPh7dKLk(rl~q-_taMk)-4cn+#VS*)v||Bg zP^)3T$AUU6K+{l82OmU2$KL>>=XeKDHb1a+@Dy6kb|SY;6ajnwXnLo&9oDyI!Ju4! z=a!{%0OaU&rJpUVg*(g__p2o4{d(EmaZ!b&SFs}FIq~qK5$o@Q^F%08H{&auFY_T~ zTTD#MtI!iCC7*X1qhz7vXe*ApM<*vj#)85@-oX$V?4mPc!Nt@>o8VStWwfnjd+Cqj z`ft8RYl=FMk%Fb$T;9hE;(~gint56t)3#eyT6p#u+9Cz*l6b94fJnu4f#CBO=5eyN zCI+ya;H2eTyoK|FIk^Pbm_oj%#mUOrqRaBBmg=Q!BkE=k8Y-e?Z8=pxNeJd!^J>x1 z?l|%$@!( z6=|IJ12To+5~|o^ivs1;Fil+zrqHtyo*;=})#Y3Zb_7%5t-c6NgfOu&^lk6EA7J|CUHV z2s}7CGM9#Mp;{FUcI)A})JeVZct)rU92tratIy!byaB3YI+)oC@3 z^2J|Ij_@{fUdeQ%OtNJ7wyR!0wRXGL`eywK^co=A1jvX2Pj|NL;iw3V^{p zc+_~2lT*DW>jSf~e-5tyfDo##aihTtW206dR#{z9`RyMdu*kJ%r3T&opq!)0?e)g} zd#d4|r*qg4k9Jiek2j~}JKtxvLEOCh4&XN;st;vw;`UWaPWN5+OW=&E9FLD0CDI4a zZF0o!EOHLEYHu0uivN0ncX^dog7Hot){D$>rqX7)E1~(y$Vzyw?9?Loznt_WRATqm zOn^#EJ_MIQu$N~$0kOTA@v&F80$k0BZabsF5EWR~luKCJhO)F0;6}|oq>`d{X(y}; zQ`{UJq9uGbq0RFQM;y|B?@&C(skZoe-yb6g)g`c@Ufkf&^I9V+0mx0FWnS{V> zR8sJ?ui?{lG8O*s5E^FkbOb8`G?R}8LULQZt8Ekfm zllU&@H>$aWM8`W6&-`8NWusNo40S?q@eJ0h*uk$?@fG#F#pHx0KDx8VEK~BWn?w!; zX;Y|cKekANmaN|(AHi*wU+@9oYpDue2tr&;?hkAd1}c8)B@vLeCXUL8w9+615XVuP zpg0y!Z{qJN3k3hhQeq#{pKYvR#+Zl!;(K9d#)vn7`(g!Kr2mFrR!IpZ-#^sDDgSfT zB0c(lLpJ{{Hsc)(pa{%x!ZlpqokFSq_xR0!#*O}OG^oVp@*yksHDl`sl6lh`d-wjQ z_)#&o=>SoFR(EU56R|qoFXrTMb4KfX*Xi>$NoV);FwS3fZS3E;vlLiIA5h@Q0)cM8p;HFT zW#yKCzEdT2%!YjSS~U8{>Cxqf4oPnXw9CnD`wO_^BMu2x`*E&{p+BB2#xjkj{yi`R z4E)->d3N}+k2$5O9_N`b-wIy*0AC$N3-Qfrw1b5>=XXh3}DY?I~W$+ zX{Bu|*?x<;hvI6?FrwbvywA}KZZ0j`h$L-!j85|b0Dx9UIQ+Mqt_i5n*;6tNpA z9ACy6op2#v(^y&r%b{Bcwn#j`qFZ4}*=O`QPV*M;UbUjsYlAkd4G%Apq}5^%((H-1 zFH+^7dH4HlPSXbnqP!CNYZ&V@Zj+S{w4Vs}X{I*=5uWB9c&c~5!##0YiyF-Wq&4Xq z;ZHF_>P zSVh#&yQV63(R8+DRTsIHnyV8%0Ye64|6#-Cb$`_N;q-f>f7H@4!|fY}a9`$j8$Su~ zQQ?w7JztG)=e2?1XvZx4kFy5?;%}^gt5|%>iRkDnETk`_>bdL}Yvxgncv&JqexN`a zR&a~8qkVpV`CMdO)m{}U=sOjkS4q#ST(>iQ%lU8zmkd7e^c2D%2JL1lUOWK`yIYq&zgw)F3chi^dO2|0A`P8Dw6FfGg+*pR@ zP`kl-$$=OR6s<|WG*d8FV%j+a2#7ME0~crf_xr1k(LZ#!6B{Nkap_l&fV)=O(E%q; z^gRctPK}S-*es#GwfE(zxmsgl9;n|B#_pN$S+64RPD-ffb%~+mW49YnhhZvb?N84dT(D6{XaKKVTA1$?d5WnX)%h>Z5yR z!AT8S!1rTLXNPhTUugo~v|*CMh8K&ayIlmW&K~KT246F=JIt#Atzw8;W39DFb`mpS ziS`R=F!WJq?kD$k38+nMUcDA&dB%^BL!#zEN?|6f`au%Rg0@eb{EMc^XCBwUEjv?OTAEf_p#3fpDW^X z`pu~G{C1B|C`L!Uuc6Tn!!LWDcpUKuan7w$pDI9Vrg+Ey`H4qPa1*DOtoyMnB&U| zM6;jsZJC^*J&yvabgqz$(aDi5s%~pXkrRr^ok-)dq4K1RWJ7@(I!DTrMT}yaR1oG; z%HRL9{;Mx!V`6qm zzry@)%1IjN>%KIKA)b`E_ho!8hQGyK;#A(ZSAC`Elh4fiy?2Q#1b{J=!F^YWsED4ob$yw++Cq0 zof8O@$>IO=UUL^bcxyF5-8G=luAnYwuPQa@`?t@?1gbHhw{Ih8;wGBaa?-zxprm!` znHl>71wQ`-r%ESd?o-R$J&g+=xn|(FuyCAJOMu{>$vOSdARAl^Hzrt-vAb5Yorykz zeCxN~UJjKk+}VLFn@tGKd&l1j$_WeMy>$%`UY9LilUF_z{@hk?T03bXf46VUK0v1g z*q-%e>CE{*V&n%15J3h`Ns@X!<=~g+I-C|NO4mqg%^>1rZ(IDtw8848*^MP)mCmJ7 z=i+au&2wL>BqtFBJ~Q#G+qK1ben{$7ioW!pXKb6*3y$^Wt~yW2$uhKju|P4GLiW=; ziqQ2G61g6D!YfR4?jeYxzX*2Lx^GUjYX$si#h!?XBEoi$LRLcEG-B|A4cTeLGmULGpE7HAD%C6bzH$-0jcBE-5%f0 z9InilSXjT^e%4&tRkKiIGc)Yp&-zdzZTYOjyPIB9-N&H4w`u!!%lFvBC(4SHjl5eq z7s4DSB|SA1_7BBbl}=PA#>G9K2k|K4Rr2ad*8JPs(>w&AWqe?2H!zXJeFOX3rfQ?~ddmhsWeeO7ZE~3iVW`GB$u{JB*(SUe>l=0~@6=^$oya z8$NNM`%3GkGfVL{MQQ!SbqYZEHx^(0_e|x#o-W)Y{gEXzKCju&wT@3T;FG2QI=xpE Wa{{HzVsqmE5G%^5$`-#g3I0Edl^9Z;S{oZZ{j+G{<}+G`UcFDr)d>GLNjC@2I8agZVu6f_MK)LWeoZ-FQ6Ts}rn zP()A?ps&iVX~(M`>Pl)Y0)JihxJP;V8`tA|9g>hqLlO7yGiLjTlJFB#eJoS4t5 zYIzh)8;(1Pma*)q6>7#Ga(V)5z!|}Lk8l|9o z*&9;3VBY@Hdx6;hHR8`SeH8WPP;+?{-AQ)ryR`I~u0`~w(@uUGY| zv%XY92f<^~ctLpK)mEbH;_6BSjvQ>D8@-p&$CrA)lT;>BcgXPqWMFI4G$<(OQV+>D zW-rsndot(6+~+Yr5mP3aIpD<|%34Ne)r;ljTw^evCb9Lea*#Ev-`(wPTb=o&ni%E` z2bJj{zc=M+_;c-9uSws~oPc%9!%hrr*z=YMAtB+Z?%eUv5O;dKGdGRZ{Ad0Wb_RR3 zIXSJp#usM$M46xS^PD_9a>*Ank9U_>NEBovK8MAF!a*$>Tku*n=r%PCP8&P((}{IF zb34ynYfVk?u8>8uL|Ud>u_~v7siY)qB&4Xdl22U)O)ZFf;M{0-vXzW7g{@Nqi%91EUnGhc4C_lsOfs9RIjzKjQFq76*;J<O zk&;k|S}VJfZe6h)96UHUj13xZv>+!$GYarNo~NZb3cPquNKzK_-T8q?V#N75xval7 zvP{Qb9l@C={y3>}=*8TWwU|)ze7feKlzn7&K1A2~pw;4Z@RLd|o%4M7X5DAKwf>E7 z41~BW^*qcPjK6>;_qaPB+gTIUCsepQ7j!?)-Z&TbL-u%UCH5t5aE`M@O-<~r`ga5a>%&9uN0L;0 zXh5G!idtnsO5fF#*E%=3T#q>qroA&zyn84juai%AFrD^vCx8Co2r0UMb_OSYGLpcu zYm&WPookRNVr!MPGJCk9fZ4OVb5kREC^H>$P|Mkcy=;6;19af%YFw)kyN<(4o@X_= ziRP$Kr`5YAVsYG?j+{Im|KriGTM>{J0inlE5GT7gokZuFH+9Tq7Nk$(coJi;0zTtW zcR6}Kfwu2^HLL5zz|#CTry6o8dp??@mR&(DXlcWx2%F`GYEpx_2t6nrQ=ZaFYh>K+ zGStrBrUPA9jCrbP!XS7icoZghVUT5g3UU82+&o=yQ_J<9iiSq1EnZR+QAq43TT@s{ z)bd=mEplhFWacPEm+{Pt5377%K@xBj6euXd6!x0lRdu;gH`d4lYK$->W1_k$uW-YB;xPY#I>Kgz#nIsy+ zqM+Ce-n(9;>%>md1SjO_z1+IHKkql4q`hAxs8fof2@WP9yE~W{Q2oN+Q6q&~Z7A~N zM-BS8igy<~`|RK!gLp!5k_I%O4on``8QRS`Hyc<|Nz-Rf~>)n}$3R8HSM(R=9K=_O49svO`mZ7#h2_ zU^7u-9v0zzf`U6PWty>8AGlwVBfH6$X)g13qLi{?id1QLx{WGoViv76 z#Az5}7HO!*y{@I`!cP|x{Kfe$1a}uH_UMO7VQr19*(lxt_Z12WNy)SmT)Si=WY}CL zDSm&>PlbPgenFGj5L<_9Ah7zxUO*e?7{_pv2n8je?Z#gG`8^7a6TWQ}?q~(I6-TH^ zP2AEWVS^PepcK_Y+45g7!)g_%M_V|pnUvd)6&&;w&WFN&W5HpmHgymwtZvhh;D(FA1YWG}ikx-t zBSec@z|QUU>vA=A_kJbGS$gb@SQCL`P2{nan6G#|r9h=- zytBK?>L_kXOo=lbV)%H98@Cn3Y`TDtKLL}=x7?fYQdN^`%2smEJ_xKe9( zQMCaVPtD}(YU`b{pi_U*pt~n_@z2A{>CN-Ka^K2%d}hDdh6 z=XrCgLrH1&59G^NTm-OPl9I0O9F0Kxn=Wb)2pt`LW!VI3AuT$3VvYVyS6W~o#pBhx zDkYPo02rXPKbiQ)AxKYYn&oqRrq~5oG;g4)=pQ|g#<>%_W-OhptV$IZOH@l|E!jNO zto;PL7~y*ug|fxTP&d|*oid;0$f10np)AT8Vcxw%$I#h)X-lAB1iCRbwX(FtZ5*5$ z6x2I8sX>d0K){<6Y-wesrKy>k^0}l0{pNHw7(`ON@bwEi#CUNcF*!s}+!Shp5O5AZ zs`x9nUg-@mU`fMyRuiBaZmYi`ajIh3`x4-xF*?Ew+?o2zznIHfv3&K-MoN6DoTMrkBQc6pepGv=Uc!N z+x$g_q%?AC3k%E-Fmn8N#%5cIV}E}6XL?>p_z6w`6E=GR$OG!0==7hSPEFk}7@^T7 zyRr8C`il4Y^U~B*XhbRiY@wVuQIjO|EiEnK;owe89}T&9c!B}~*xA|j6+ezlw~nD; z@xB!lD7<3|hUR85C;c`Myc>?YptefT|XuBCG#QI z_!g_vxA&3C#WPK_)y`a8TmmK@F7ZSU-`b8KxQLG33+MLFGH zeNj`JN7R~|oyF((%qx>#3#f&G3BSC&G$Pb)acYL+Tfi@UOkpwV58wa$_iwiF>PTI) zMWz!hFiYH#lUBkOE->f}WAizz99mkh~U6gS%v2-awsp_i`FG)aEAm51&3A zh9K{5ZC&=`N~Nc#2Y;d5OHt$7C14u ze_27>e~1W}d&{%4ztWzrynX5J?#{}}BKTx5IXT&K8y_1xM1Uv2-!!a1%gf74Y(Rjr zvxk+&ljwME=oc3^oy7DUM=3|Z(*LrPh~@Kq*I+wWM%cNqw!rWp_@P!?u&Ze>j`D0Z zwcnH>K`5KkVO!j`!gwsrl|<+RG}PrggwMuqMsT$$F}}X`{_hZ4d|voHTAo?p`=@s3 zbiUbx!35khqw79S_UG3X*LO2YaUuI>KI`hLss%i^gOo2%r>#B{cCP{%<02@g zDo90d%Z`$tcRV&YXn+K)F5NcuZ|8<@mM@1HI#<%aM{HuHHuArCYIS}x0F*I~0;jjq z?Q$2T*yU_Z81yN?@NBJ)%W<<(kKtfHb6;!lp|KdIX_}l^pWO28IK%n?$DzQ+``$+-YlJ?U_g^#3m z1$a~qhpC5eo`D-eRgXxAW-ue)K(~Rr1n3yVogOnAqTq#4`FCM`!Xix0SXN*8`<3Ys zaq5fjFU5*~{+JihKtJQ+WIzfEfT~cQu2&jegZ(_s1q_wt<^KY+YQn6Mh?Z1a%YqUg zAMf?|*8{*uSKGBN&j*f{IgBoo?~;ecYEIiq&S~>9`mtUs#z z!_Pax<(%}kVAtC%m$Nyi@;EA`3B^B{Nl z=j+y+aYVC7y6n!Y4zGSgVRgkRy?fygfbHV(ysdhUS#5Q}tsfj6P3QM&(V?i4r5+oc z;xGF`WtX(SE28`rRlqLsP{>A`W~?0to$k6Y$FSu0;Dkw2Xj=E-j~G8?ZR3{qz~1q= zil=2rklAs*?EYKuEHBD|YOj_tx|aS`1y*(xw%F@Qu=IcYz}V8%7Szzt%?d@qzEx=P!Qrg+s z<@zHaAUr@$jx>X;d8aay+4JFu<*+(~gIRPA5Nn9b_UMHUoPmysLhIkxM$-le{dz{O zQ$KD=uMB`EBguJx_tN@JM)YCJ>EZA3PO7TyDu-871ODEREv>;6%toX}8GDBt!q(H} zc{VXS!i@IEmfhiv2Z&6k7pLuFCy8M$-*A1c#Wh<$w0_{*p8grE0%c?r1bh2QA5r_t z4Bk~TP~cV|Do5h|0~==D&BbNG#k6Q##_S?h&=+dr{f;%yBA1=7V0t-@w=?Vqi&-3W z*x2#NyAr@^p0{mrJu-!&-F`s8P<0;`ZIO3wFujmfE3_4jN+)k){*vO=T#v+(~AmOTgl|^$R+Tg@6c~$xJa|I2xo4Qsh68%VRSoR`zQYuThMdh*u<2(Vc zTHe#sQ&TgA{s&47y?3>+YQpgFa71W|Ea-&cBQ;H2Z8Ia0KHf3~14E-y`V9i$=oJr+ z|NQx5OTqZ;uZC37+lbk^(5>bpTG`f?mhSm;co=fBtfn;Gry;IXh7q{XiR+|y_)LZE zHQdS@Xx7P%)36k#(|B1Q?Ga?g@EE?JT*nfESux1SpTU}9o^Lk#GNzmH6-3i`suhi% zTHVj+j{xuHwX(5jKOC$|Q79+pZ8cppE)5|}ts~lA+gN0Ng_hb_G!Bjl6 zJ0tc_;~O9&tD09nsGN=k^@>J05i{TF=+ajH41f*rz_2pK=;1Bi=s0ghgvS-$c~8S_ zdnVuwuR@@VEI~pMSv)Q)!9YRsBIuK|nL1k&V++EtzAvUsBnEvVd5JlV=RiV<>C}4q z^;0-Snw=?!j8y8Y?nbo%{rm!s9AHB&GJ4+;NkzUFCGQPbH;PNUOd{e=ip??CD}1xZ zG&yzr^Cu|?u){S)U4~%xhH|-!D9Pw#E;U(qu(D8+&s>ZL3R*i2k}10LLMI6&Uw*$i zrlOjSzOs%H1e?~Tvp(4<#BG(R{t77~^U0IOpFs*N6`Ao06q9)r23i2Odn zd|z7995bl$dVm0naCucHNB#@2q&8`dZEVT~^)Gb);73|~3=jfi)^t1rV8a0G(}YE5 zmZS@@u}js*!GVE+Sc9rDLzX$p%*V#lVEPCgkqds_`@WKjiUe`8lQ}<}XmK*k=O!|e z(5Hy?uH_&s%LH8$vI5>_mW@I6A#8j!!*8AlC@2q|pt^&L6R#~%+?#8n7az7Q-Bj<9 zm(jQ5>N)UAPiQCz=i%f-L`zpV1F&yG%fit|dp1d_mSRv}1z>YjhpvG`bqq2Frmb6i z6j@<120c_VDS$0Yzq=kKo zS1TBj>GBjW^a=MsuCLFJl&{o|fOsmCj4nZKC{H*T{T)jN23Mh-yPUBUv;B(CBX*0M zykpzGsfl`YCKeB;nud85c&$n{J<#es+pjv#8`FtiV$`kA3tOgRDhg>HEarwF*LJhJ z1E;Wi4qIUm!n|zlEar|bE>Fz!sP{!^?2vmL!y9OU$7mc33<;1}Bwqbvu$zgA!|J-- zJ#lz&_$Jo!Lbu|zu)2~`?K5v~W~QD%lpbhiVIe6~4;dAeHZI`hVtDY>sm~E|_$&Sv zzNfD4+qzI|em*%VDJeVq+^P<<2iSUENL@ym# zBS{vJ7-*Iw#5`DPx%OTfpOPdoX7ZyA$6?WY_!!#?hk3c0SrE4ey~y0bMN`Pt89Yq> znvyET%Y5ha>>}yz&hBnNVBkT=OaLPZbEuxR(XdB{(}9DaU{+L=oKoDcGfBuW5P0#% z?No<_g(W8bwXv}(qYobC^aI>ilI7CM%E~A*O%p#CWY6nZlmh zEq0XZRC%YymvA;XmW7I`xWNnLIWANIxx^tF>$RyeV@W2C6O#q+GP9ld2K`(d2e=t+ zdW|xTX8~j6_&rtRJB8>>0XN0FPBxY(=GFW}KZTEqk#T?<%DzX8oL}cPZ&Ue^Xg@0I z4E`;`Vqp2JIrt0XNNY!iHyVBQP(PYJ&EetU#f3wJ5cXbtl$%>~`l>+puU~$_DJh>N zS`*cEbnqWcf;ch`E*%^kHa89P6$t@uSX%j5jrGp)yHIvf$S_%>gka81!7|iSauvGYq!10UI6?RL)uxLeB71QRQRbJdt>)qn_3DT6dLPr0e?|&fqEhWy_8KMajQPsW?J1gWwH&DS=8P5y2R#* ziOwyXz*`$Ru?UbV8;x7+x!DripO86D(MHLn70{deU9wNq$ z%F5e0B4L}+B-=SG!o{yoK7#1}3I`7zWpfO6+6^~Og>r(0eqOCw&tt&IPuI^29bRX1@XR$ZC2bOjSYg_sD42jH15Hg8>^xLT=E~A3 zNd}Rz91<W@>ezs~%!Z)dYy!9w~xyI3uo7M4>GQEawut!m&U zFF>f*-3B<1_ABG&4t94E_(Fkb<#ui3$-0=4k$>j; zm*P7A&J%n*JVPU+ko|`hTv^$6H#1xIw2LaW1b`z0(uRHi{-{EQ_RAMe z`_07DOqY`-f!gIasfL|Axm61^Nq~7CWvDab;^h1h5O8;QSM6h^s-~9s^XK;N=Gcnr zR%PQNC@Q_DcPu}Baq?#rcXp+tvoiu5-1T|Pp?Aj5_(4a<%a(*VPtUybbNk~hsYLo} z540iU8ed;1h`y#~OL6`a5YQ+p3O>H;h(0-cJLtyqn|_^is+-4gZ+lzaK`N)K%Qq)S zD!n{Ab!gYq=rv4aqNFq(C&zEGs&Tlxo4{f=#>vh7DL{w@yo_}B5S1a|(^2dL29|bS zK>_$q6{#Uh=_9;5Hqy=D$8gCHq>&0FN&_;^-yiOLZR~-F5ryt?^1K6quBQW* z07SCb?$KD>iSZ!#ww9qGwkx=(y874fu+>NsQ-SUr?0khzX;IOBHx%|2q5H#45j3=a zbk{xo6OPa_RQGWzF!|B(wYf4K^80IXer02)?{lO4t^6TSxO7D(f^6b-BW zCG)u*ccpD?Z01`k%F9Q`#uSQ`4ej?D5d5Dd?8>1r`Je;^f<*MaGMlrhsu%o%@2=m1mBsM&@X!tfa@rZ%S)+#rM3dEt{hOky)x{pp7`XGTKo09mU+v)6 zcjST`y=Hp+uQDFU7=f2i9mIaG@>O3iQ7Ika4f`h>Lf^#tkr}P~Ul|f*5(2KtpA7z$ zM4_4+rj5&C%gUXD^iN>FYiQv%AI{+9-<8C9|7FJL#;&Xv$v?ZhR6zwQ7R>zqAoSXe zh4=rd!M_Oqot=UI$jjd9c2$9Uz$O7ojH8hik`vNv zNt1SNxWy&ctzHhF+vV}lHQLufyMMK{J)PI{v2l9aW|O|5K)EG^Yr(OI+sVK^*Z*Nxr~G(H^+J9lr)n$c)V zv}Z?&qTR599v`3Q&KDgyP+k!|sQpd;?f&n>PL8FjioMU_PNLMKa3gI!fjs(dtSQ;cxoihgq72*>p>yDJ+qtqk0(hK`JGwLqPsKjR+*emTay+Oe zKApn2o!U>vETqtBwokF%SE4dBlm2kaV7!oLqEIV5+LzXs)~*g|bj);QKPo9;*r|Uv zf(Q|Dn2oOwXF2TFcwPTyo!(jjas}++s}#H}E);^sVdlPVX^$b~8X1||x!MK(@Ord5 zU8IIgPH_1=ZqwnQC}`K+Xfd1(QsxA?naNF0$6OsXhs9gdL>&;?KD37io6m)BguuCI zljhtXw<)1x%$}}BFc6Vndrz^n1ovpUsoVK1p zHf}}QJ1L**y-Htxg5!gOQ*7gh7yWIsnUfp*T)yp#Llk;;O7B22`HiPldQ!&OHs#%K zSy_^i?6gN&cmqmKhoV~9z4d-q;5bHv`*8gPn(8X3Qi>ReB8-ZRJiR;*y9IJjFcWWO zA3s3OS9ADY?jH=?XcSf}JvzAmT2Dz23}eiu1k%gW+f;tKx}az&ez=en322C~^`>zl z%t0NSPDo#BQMl<#f(g=m4D^#pomL(=OsQ7!A9x^NK;UF`*Eao)XThCeZ-8`L^6;xm$0OR93%um!k1V-l0 zesa)_)_Dh;_!Km|TS(>n&@V>{%2L ziA=?a4z~qHrr>c{&E^zm94D$!b}l-O-k-gHojgO&F(K6xt;X%F=-}X=5%o7t93uqx z=H^5w3g*AJ2$J(vKu#{}lp#0utqN5~R~B7cafLuK1wZEYotGOqiVD6~XN_(vZoux^ zI(-~L)HZMP@tufV#@e?6zoL5cvu9FAHG5l)S1Z#6%|FnkNx0TpD8Hig<&{DNGITHK>ZQ-vQRsS9jXus0&Xg?@dh~VcE;$P1GTCoY8iw z)_RoN%Ieq7?B5#q$A?k;X~oMu!%T;(osaXEUkTnRNU?UgTo4L)4a@}Ifwp)M*4EGnfiGDvU;npxfd9`t&42N4XwH|{h2v?plCMS)s@-HWF6z>={}c#R z(!3@hR=NCp4_nJ+pi3P{Wx8Ynp8A#>U}ng$_)(-)bWz+K^mpZuT>Cqn=$~|G^imzUXyCJxqdkF`Bk5n z=I7^ENW{DKG;en_l~uU(p95u~xQ9n2_}qgX`h)KcDyT^|fx;Yqv+Q-YkIui1^_-iO zceX;`yuyYmB(@0Yukrd@mHujcsz-e4gR){5U51 zu{FL+nOa4LbZhs=Kd1yer~yJK?|qs5p(Cxo;QH!b@8O^QWg1mC9SQ8r^M&VO=g*kD z9;U=OC_h2u`y%_^asuP;@ZGZ~KROPnJTor-vt8cdQ=6M2YPe1z^qL0hlyIFp)qK%G z*y(gXn+iA(D6493-y(}T_r!+M?E1!6qzuLLgBb7i`fsT8e}-I+*5ixzn&6GRITGI0 zW-Ev^md*-bDg-cGW@j3-n%;}bhCME|cgVIwcnO_T)S8S`3_tf(E;qThsoW30SZXMy zq~)DkHMF62uWoNfVuU0c7kowHOkx$_dYCjhI1@ut*uCe<)MHdLn0G4B@^^QlKUI%O zqM{_ppq* ziRajz`jC4x$5gLh)lE?#A7sErr!9`^`(ZQu(dA9TxW1mAQ z63EY@?OosioiG;rXua{pfy{ZaJ|#~H!6hCflwG;p<*_YvoIYYjK=G_tX)(m9R{S$0 zF*O7a)f67lUUBC|E5;#6{6z8{N(G0pE~nHLsHvDKp57JmuQg3l{AWr(?iw=)zRy{lu*8yn$g0+=X{1670b)QbRgEAs4X7Z zik$J!)8z1N3yC9^#Vz8nIHg6k@~|6r$02_%Eb-42({O|VJgVfTLFGo{NzWH(${7hw z&sl3yzz+tmTH6nbJ?8tw4}>mi@B{GYbN38o8`6x@4n6h46;mLXPi_KfEP8IHcG%GvHdTRqoQ9c zc`spNcx_&Qbh^h%hz^lEtL!B)@53{06snH6+2vv%{=p)s#*8(adiTkMIp;XDqs9D@ zU9IXo%<3S%*qu8iU^}*1K&C=(yv(&YBq4Ae1lS!?Ff*Kmpqublqr4oyJmmw_yc~Ms zCw>$ZE*?Z@G>EQ!!H$_(VjQbzfAzbUf$JqVKF59!i4f_C=5Nfk1jDWsqcFuYsWrpR znOhYDu_k6cUQU&5NpWD}TRr)(BJ{Tg z@}@MX?gk`PuK?Ze)+L|$M%e4!g8AdrSimT|P13vwIQIP4^r|0;)*`cfn~>cG|>+W7@O7+n=cfcv{nF z2~uN*hX-AEXSDfF64ULQbtouhYR@;Aiw(kCb%-fPM=YXgrFjTUTL>&hxKGKQ@aNDr zw~RVujlQn+{H`L1yKTP(mh5q4IvJw_@87c)$9ihi=?{Q%8ofiMia(@Sy|g*%`fV5O zAkLsV6tViQY}Ib(TvyQ&_YBb6aR^Q8_-<7($xG?BbaQ@>6o_J8pt@R^=h?|#%t5nN zLe$Nc{lR+o-uTHx9e)l8B$kz{jdn9|CtdAmOd-4vq|GRA{2S)2{nETv!w4o$vE9H@ z<4c*gNC@___-5j}=-wh!D=(*nw09%bbBs*@*p~J(Xrmu=k+>|>TG;*TDuQ_}N~`yR ze>ORds~9`kH=O*xYE2RqeuahwflB0Vl#oF!lk^rTzSgdZlm+iAL?DcvjCvXZx1Ow}Qu8)lJv+l$feANVA zAH=-|6w@Q7R)i#%#}+Zi&0Wgc^nE))!prBi4IWi8icy30rj76S`)tKi_@$_emZPVl zzd9;wGspE5DlDca8;sNSLgWC;rAI&Q?LKwOHf$`BKwAjdeMUoukKw`g$Vhk;s-;7k zvmkgDWkz2$k&)OgxY|i@6hkwcNAzTiGZacs!?jB?HNJ78Y)|e>Vu_JRWV_OP`g_@K5!M z$M#QNQM8xaS=D|eTIoA@Y$D7s*zdA>d0#NY#xn)%+&p}IUVKM)AP#h7z*-kv_xty` znSbMD4FSJqE{%4n<(-wzxi$cC`#P%&_`!M9MI@fDo;>M){Ny9;57l`K%ZRlEirA>xtr&eyHsH{1)>1g|K>@i|IA=Uxp`_1&-|nK&Vj1B5*E8< zFMxf*;}fDq4~MOeXrNmChvVmtXn& z@RK*Fs)CY{-MhZ7uITeAm(HD#(+!D|mUZ6{P!`HP(!Gl@p6qIaG)%=`6d7flxUBVK zS^e{AmXg$w2ZKPiWw(f^xTM8R!g2IgpN!@tdu+XquA*J>8 z&VTaDw;$@31jbrSUT5H{>`l)C6w9B(L?l8fYh35f%Ur>>u=%?qt|c1uXIfxmN$w+&#k2bp5vwSL&k&X<@&S_MtG*I5D7^vEgJ7lguY@~gHE*mJ;(RG=WcTX z?59Q*qJw&uthmOl@tAX;HC_GkXL>um4iaYXzD@i@8Fs3L+67O4f-0ZY(BHS)Psdov zgZRn|Z0QGcSp@0d`NFo;K>d}$;d<2+ahK#YB=h(zt27TAR;@NiqoL~nQ`=81^U?cF zuyOxkiy-UCkoS(46n;q2t5f>qF?h+V&6lgxYe;y9U6)fZj|{2brtO=r0>iAN*%~$b z&cf*xb!>YT*@7m1!g?&=zZ2roBDSon1x{S4V9UJ&9u^4{s?6lr@A_pj`_`#OnH9#L z>$dWzic=fL5O!QgO@M4ulz5dL6ni#vO4n003&)Vxp>dJB$-%fZ0y2Gn_we8XAqU5H zEwskdJfDqauYx)%n2z4VN9vP&pCNZ2M@5MV6&KGdC=2xZh=h}KZWRP8kmF@A>`TEc zYr;EB%PYcqaBeYoWUr~1a<>+lK1dM@dyW%$F@~8CE7pz1Ysz0MJ(D}CzS2*(*kU4~ zHpVV{C~RC|28h^0LZ9}UuQ5;xl=#`MP1L|>kbK2y+O)7=DiSnPGUGuE98`iAsCQWQ zsff-~+UwgVY;E(p+eL4N(6kdLx8eKfCZASw)9p(?x)cTn|K>Oytz;F}2&`mw9g;WQ zpt=wb&MfeuwHwG(D^RoOybxEvp*%@isb)K0Uk&weWXm_lg(;WSVlUlthhI}rMcm`m zbJH5F!HT3fj90EQv)??Q0%r<7Sju$BkPJyjuBe*df=A|i@Z%wsTGhl_XI8n2*SNn6 zD83~E?0Vu2kH-4~a&$(aH(Q&`zQM`}9HVvUAF#81Q9gIbPn4dA;YVH|AkBthB{njw zdvZUH=2~b)7T9pLum*1rsC}m8rCveSyER@)0G_K37qNQPf}5wB$h8`)Dwojr40eA$ zjAO*Iei35u+&;Oz97@ZQImVgRO#-Pc#~=KxlD)k9Szx!To7C6O za4;id;lnJeNpZ+zqPm&TU>8(9yqs9M5PgzeymwChglye40IdX=L;XMfBz3@7QI)uYsX}M@r6Rg9%YzZkgVfot4!h6*8 zp^0%}e1mxb9Ao}ZUORGP0DmYL4Z9?w=6&T4N^D{M-}lDiQ3j*V<~$mD+!svD_`CXgwmQ4;1ti~$4o+EsgPi6 z{l%PsvnG+|Fnm~pONA``^DlriEPOs`%i#J&KpHH`<0#2;R2{yzB>ngLoTy~eJF=BP zDk0r1DjKyqSL}82L5fIvt8t{fp7mIm+v#+)?M11bR??->R?xULjx)|GTJTe zyD^O@Q$&}kDLOH(*klQ}9Tj7Bq(Y4lEmMqR4ZKc6|1~^%pnv?WlKLsI*LfxFUx+5< zDNoWieJ9~t@$|5%za947j~MQCCw$I_IdPyLH6-1d)xq0V$;Z@9F*AIM18c-n;9*yM z+ya+A))d3hMI3Etf=z|uS4I*LOjQ1%2vno=#vWT8kI}6J;P|JVlVLTGX;KSj&Cx&l z&SUPpglWtGV8Xr%Q{vg1mCy9eY}yVk=&d|VZ%L^6W~Rhh|4{w9EdIXNf$|KFkr#Bj znNL`&sB3Sl4Zw3WIQ}5tTEDjPsl-;ntip0z_r-~erZ5y>3RHBZBwNW!j@Na1;Qsu_ zgf!OC@4}RlY)rCSswz|#rn17BAEqLMk}JfxozZSkTM&oTsA>9uZcm1bny8jby5J8(8>SwK8@Z*saJi0Ba~E7(HN>>g`}@V(zl$)5+E- zDl87Ve8@Kd!vh;%U9zUcj=QVe6(rRY1ASkZndx^z*j_FNc7JV&MCMg=mROtH<9@LY zGpEq|%@DWjDDq71EictaZ7)`u z)`{w0_QTf_58PR~m$+w}e8y_)^p0l(^nne4Cx9GQMKZ#Z9`CewjBtV}Qa!iIIIv9L zuwOdY5e%0AwxW94l{a4lbB2Y+`!EAE3YGV(N*imuXjyHJ)Byiqtl%mJ#&j4``EZIp z-nc&~z1HQjYm^uOJ9=UoT>bffMhntA()0d<7G#r!1`P82M=ro6j>_Ykr$QJDmU6WW zd`9<&S1hCl++r{ZAYd~J(qh8Fr0a6hV}@B-S@B%Q0{j3B{ue(W^!?BL;9Br4F5}3( z*Ai{Dl${z-4-{nJ{-gBCQ{L=DordLlp~t^r)7*N55dMV+iDBq8kF~{mFTLg22j{M^ zcAeK9l7&nFeg-l%!!<8tf(p?I<%R02l-f`_g>KM52ig#v`Ky~r5B zP|{?md>_=uwqNAd^;}*zc)g^h_>|m(L#J^EI>=B%TnXMC%}II!A$12F%^T@^-|o?F z=*yz~wb1x~5Gzr2m}T@!PjDwoMb8}}^wH~SyL|oqo&nVO*E33rrL%LTuRBUvVpX+n zKxCc_6-Zt6kkrpZFgV7QFP*i1d_6+~1*KKcdJ!{f@K22YG_ou_;q=2l|G;2@`DtZJ zOUvpNmTI|D0wtj!Iqy$LUh9N1{nvi{|6!#1_;*Ps5rMHEB4A*&>1rFu?$$ZJPnBH&R`}a1(_{HC> zy$qw^G)2YF>uy2#&|7proV_?cf#Id))qhK;TmG8~usD|x@n{t*U$iB(Ykic?S5#2J zaC23!CVK7Nb5qkqPtc>D%t9YbV8rXpW{v+5Sa7l;=f6R_zCJwb$nEat_qNCjdOv79 zvf1}9)l`2oz9l)gh_>E^Brt&_px&varKBPv@R&vMj~xHS5@rXYwA$sCXDioefojzy zkXDjgONM||QFed7R`J^Su^iIB$N(eU|3!Ypb(c;^3yEkQU4{W6`?`u=a{)Ib{czKZ zB*(robj|xalewo-vr{|uu9y9zcuVqJ4Zo6yXWHMFcDiqD<|VQZ%6zN0L<;GL(=W;| z;M8w<23xh64c_*Pns$Rf+w251-F#8`AI&AQRPI~ryspitcD8vg%PV!^|JW+ld7Lj9 zy>3n{ybRVL?D?ymY4e8#Bickf=5%QX=u9WuA{9g&)o*xc>=KMF8TSKu37r{aE^M^Enb zohq^*Wlde#UVIRQkW*FiSE*aLo^qYXxZ6cKmzU~*jGIAD#?$-Acz3zwIs@G=16K5d z!y&;%ZPZb(8yJ3<9ZOttXv5FdJl|Wj09lcwN&rOqccp+UTXCc~@1C$k86jG|{Oy4R zc}z;MWsQ}p&svei<2Rxh(uYqy%Sold!IqynDk=u2@le*A$?p$l-=R#Vv8`3-9=MCT zP3h*S?rCj5GNUL+^_R|iutfyi*diQk+(-m{l0%VkpP5OL!~#*Au&yspvh0OW!2Cl= zuo7a;x?u=dGBqd;CrxQ>-$=2OF&qpnzRg<$?YaXLzA7H3-x5QomHmhK^?D{7|6Ory zP@-o4E(3{5+-1F$Y>H{PFVpJ#Vwm{(K<#OE6YP@z(cD`A#TBgUqQoEsf(A*jK+vGU zZ6FDQ1q<%(9^4^>1O^Z8kl^kPg9Miuf;$A)8Qkrz$=>^%eQurm-o5qe)qAO_6fP{JzWXrn_mtN)`dbP~6uQ7!B}w)r zxzB6^YLkSjPDq=xijPuPyw_}b$m9@PFm$D+cT6`{Fqi=4%!>>0dz08d3OwtxqRkE! z^X6Ghv;#0l3F>8l@pbdFZAqs&sYEY_QM*8HAcR)-`)RQM3VE%)+f2*6yy-fntN!>EGkfV7X1bABWBDcc>_nbF;zVORPh8&t)MEqs%(aPbaasE zOrP=P-jB!7{irj9B=Zo4tu6M0JK?G7(kv zOz!rua;#e;ppKLsw>fyqY42ZvLR+EP9?QQcdTV+t*0qy8`y)$qrqqUR72->T-(pf( ziDZmC$PjI`?;K=h*#^i)9hrF& z5Ty>|DlLq1hj!oJfTg`v@wKU2r~;^IHX*N(PpU%r7jRjFD#guEWd{5>O8({y$mYl? z6&B>nhLy$eiALq_px0Ns%QD72XMw0XN$uM>&vPqwmR=!!jSs6k z^TbY5o_2kJo??8l)MbtJp^s~c2OhVVdSbEui2<7I9s4RNDb_771bb(RduM)CQ@n|U zU8mN6M%M=um{P&Kg6Qi)${b-3WQ<*YfFZg7zq=6dNd%TsbUyxOBNK$PLISX!$=x9G z)@moip%*z{WoFgcLv`vm#=bU4y3te3U&QylAxb-Z9V$lJbZc2ST&%NDM9YlQA>iVUd z1X-Ok&niX^3zg<0aDo3v;HmPD4?!ObT8GgkLA$FfKTD$Y$+a(ngANKkoKBoCGrN8p zQi9{mcyBE__PX+b-s5Itg>CcwCCB#zhgahP6JO@XneQZvy>e|SG+q*JF4jK!HkG8K z+czGklNN`QoZIMPAZzfWF{?`#5O7$u`6g6%c?}T0%ov_wKWY!so9&fn%63Iu{B_-Z zEw4l);x@ZK670t`vkqQKp&rN;rtDV%|9Y6j6{?`Aaf^Mg~v3Hf%AWFK7 zSi;xAX6=_T7&Yh1aVe`&a#*|xe)5V0Nu4Q=thRFmO%%Irq-)kQm?A2l(Hy4NZgp6a zO;B=KEFm0rs0L^R>cTm+Bd2ZKgb77Z6UH=pE#b}6%?v$Xl|~?V7^0cxv#bB%JJHnF zvglhKT{5w2_iXn{@T9A<%Z>YAppD6(FR-DmIwO5=uue_kd@y>=8JLMBY-s&4=g7(H zGYr2{;^+XxEO-H-Pwh%-afscGNCV?glr~fnm)f>fr|a3(lU`?KvA^JTcfJ^QgSk*% z8Z{++zc|t8PO0~;Il8NJJ6lp5-)OnpfqLBYpdk`NiX$xbm9%BAcIqy4=!n z?-6BP7DH;U80Xz190_K%etm=bR^~i9exBhx7uC_#Bi=pvGC^oF z%^K;1UF%-##BuhoyQ^`u&&AEV(t!L(^p6@}WC z!S#o$cBaQY%|%LB2lvzh^0#zB)IAHoh^Mpep`r5t4mL4Ks;1X-dDDnfV99kvLzg2WX$qmo>`&?AF>cF)?9cVxo&p@iEcU(pJ~i1)aoNPu6yi zK~ZvpKGxp=7aG+Dd^zSt!(@5&>aZtFv!GxY6#;i<+>v z;a&1$6{r?Cl>irc@b1oF^h|_9ToD^Rz{EsKTl*mvisT%+IEqfT;vii%#+C&?6IWCn zPfuetbNc7ObkOOpjjHO(D}T!e1`=5nD=k;#DZEc_Tf6|)s5e!V-RqS9_Ie`}i{wSP zL|Rb$<#=#eVc{DPbmi`LG5hXXp#yr>e{qD55|yWQhWf!Wmwkw^5717+uUSv@VRsv0hlRakfs+tx|+tD5i=Ke^U54Ui1(v&MSM zk>Y^i46fkh??oa_B9gOLs0zg!5O$KOj-Ln_Og^vpL=Qaife~5@3Ce;^{g0}aKxq%Z z$xyK3t^L2Z!GAdrr5QEuMBzPwLV*=5#A?xd_V-6yaFnj(?fzb^v!(t{Pb#Rxuxi?d zH)Y(aX4*yzCsf50RmI=|y~0AEB2n5oz*^6pIdLyo)ap=+tc5@iA7BRm zeEvOswchb7!fOR?j#Co~fm0W^VirS38`lHy`NG{~`KEiYP0@gYb_Q{g#0J;~@=#&x zUzVH}FY($6D%Gj)8Q&lEY%NyXi5Lph%UG+oOa)b^%x?us$0y!6TL zHfJnDAN}z6WDl;6iv@kKQ9iSmY`Phy_9CX$(>8)U{v)ze%?w+UW>SJ|&T+9hfhq4OMea}y4%YNR&LHpePcEcg3 zw>Wrj3y~FA7y0y-T}aUBUG*p}s>MEui@ZiyQ(PYmAgo;~f%_}bP`!lfK+dU+)$@2} z0Acepe-A$EZj*+oAe$rtt$z-)^(Y9q zQbrT5#4*r&?zu_pRrV^-UxMyZjk~Tq$DV6Bb&W)SVA5zX8;*sLmpLdqXy%B^KFZk% zalF4bqEbh2{3>o8>^=HrGoVWL3rK>%9u5 zjFgpi;-*xR&z@n(^@?0|nUP3U^`?4;U(wT+xCk%oSL=f^yg!fuN7QM6!7TABH2win zwx;3YxkNk9m6Kl=4jR2q5gy;JUflh+s8kgT;8E>ka|*7D%|?epX6s_54< zd`THwj2C-HaNW37-lme(eYz-WtX4i@hQ5XKx>0TU5dOdr^{=6U$$^4V&qp^TkPxQ? z^=~3GaL+0!BsZwzW0gm%c;yqv=gIfcUY7Gq8@wV zve%?6Dsr2A6`zS~k>lV?CWwKv2jUluh!n9y2*Q^^V-tK3CU()GqcVFGKGqxW}Z`-ubJ4urAfmQkverWF0X6;Ji_I9UlK> z#K>czCcv7$BFM8D-fM%y4|i*BTA%Z(P4J8zLp4G7@)^##I++!`!c2AP5`Ay<9@RTOb)ntfwyjm?xPewwo(gcyL?Sm4W(C)a^RjUJaiZHCu8xfj0Le@ z;^1dJN}6h$C$~~(?@%>sZ%PEjk$4!(wEhADTw@&`{aBAsA6+D?SZweX=Nn!6+*wJ< zqQ-P?^=3T=%?3RuCxOuZI#=B7RTwiza3Y!T(eE&fG_j9PPYz{iT!e&=J}OlEvXl)n zOp9CBy5VxdVC=mFmicGcO1Z-3qf@b&*E;wza&bKqlsm&S@Z61HT;+BjE#7{%M%zG0 zPGzGSINM<~0zJy|0?ucMJjBQg=2o%1C@#qCXNmSo;Zj*+Wrq{JX>BR!JL4v?J{a)Y z$42{{NW@U}UC%~Reqfy5IC*Lp`OxEX?pGnZIG9%8pwgMgv+L2M1#evl6FXnqV;Eeu z)C2l4H;gw}!*dQM2JtPPseH7yo*rqyX&T(XvtQeGa-55>*(E*WO4)`HpLGw@ zPli8&t=|yi$5<9CfLMFP=j^j`JRM8}fNmZVtdI7&9-qP3fc2Dpm!>Z;)dW8Z;fD}h zs|tutb(~I&9q7*Pw77PJ!RD7@2ww0Ju`>=XY9x3KofekN7Ja~yeV2|j6BypX%RMok zU*}?;)TyZE(AR#QxgjmPVO`6MzPPTd@T0csrF<>-qs1vln$C|I<{)CH0C8}3O{H+^ z@H;fL%-4Vs&#Fiif%nGyOh1;vp7-`OyJhSUj^#EXA2ZNlUlV42G{Q}WT|F3tS-yHJ zV!PGOomMWz@5Y0U?6Klb(FR@Zh*fE5b-Ar`tAK88&Hc&kDNc)TQ6|2^df=2^M_av4b4bBm6k*LdUO$vu&$H&5+;)ny!9a&0$Z=&Tv(XLpeGEP zmH=0bv{jq7UH=-59j4!++_NloZyB-wTvVzjLlmCUZ_NUw&?CT{iHzei3v-SXGXP28&J@$a^_8@1E9B=o`~^ah`xe*HX+;xW)!!_`Es))1 zZ%_F3;nOs=Z`#s;DXBBved~epSZOCuna@HFqxw@G$dp2QrLU=!9Qhj^TO0jz`Mk-N zZbRvg5o{WoQ}f!i%}RP&>>()#a?a$pY1=xRU-{2ZK628&;gG~9AJmD3^_8}2dax~l zremZrEUm(;rm~jb0-aotG0PCEgaB{TT7UB)!QPZnzYUZAN77Hzknbm7bm zS*G(3W)veB;UpwKB`y*JE3$EATSPKs=jp^#t_pO2H8du0F5;+vJMg(-m30w$a-NJ3 zUl5YjZ-H`;wO55+r_=nrs_-Up&{bbMx*on*(@wzfg8n#psEt0jLLR_MDU{P&7HH?M z@bP-Fk&-0u5!y?&&HV*2OLKTy@lK>Q$tHFeyJweK z8kp5z+W06Kgk(OPb-vJjA>HmD%sbA5H$IETYmIo0uVDT5ib#9@nO z3QTRYNYpEDrj{JvG)-=emL$m&1qb|d}I5OsUsWF;gC5tosDYZX}$!!8BHISw?_ zjGC6G7#C~kctDvfyHJo2)B}~WR z@QnlUkQ^t7xb?9i@SO1td){M?iKhW@o?|z0wXUw4$Ec9AlXGZ}pd_b;ri$K|B^5<) zH2jIm>vz`}hqq(nKyiP>uIZDn3 ztZG`E*KblJbWWfHm9J2%A=*B_i2I)VC{cZg(%qt0ZiY0`j=FfSNYTRBAc#FRRp5I2 zF)`2_KT=Wx^>5zwyh(xOIjX&XnpXoRGf2KYHCw0>c-zDFz-Q&NcZfs>7A``mwJr zRAqp#6W{D0P9w8)0iXmCjZ!ekYitQQe`Bl$T)kQbXuAW3!@nxU&;KKYai^9Ek#2D4 zIzOT2V^W@C!|RyK?{Ys}S1|QkhS(50`#jr)LdoS8Dzv@m!bmR_WXt^}>F1{J`bRgJ zSM>Uv4YQ&HE&t{OO1AAtnSXmhjz4`dm^Q>4_@Ch|sk}jV6rr-D{`#e@(o9^PseIAx zX3k;RYG4s@T$q&de2P+!Jk>2c5_hl3TG!9_>}^PIthKL-Fz3nc*5uvUVr1~tOdxnA z)s=T5c(6B(qTvE4&A6@_{rXYTB$_Jg-1Dqe)q7|B9k8?W~0 zsyXmS2niBJm4$79X_d)oj1sUio(}~xhA>`c$dxoGcEekYOE-++mf*aKssY|PpEOiN z&F=R@aO1`!Wd{rv&U*pPpldg$cH^CpHoL`bR+{;_k&s{~x^>Aq3dGct_UpE_&qOYN zG_TII^TbSvf%MExcrnN~thY)%y64Moe`RIo!f-`f2L2UQJ8W>diOg>L0P#X+KL2K? zIyQQj0Y^3+L#Whbf}eU=FpZJWo%EM?U@*mDUk(ob^K^bak-Jsnl-}>bk+MF2)|jw- z-?%Pw1khw!NPc?6hL~jRWVhw-j}?Nw(&KJDZyP;nh-}fi`BgN|-hBBnf_zc+(i*U@ zbw53N(W?9RXJHO8mf4J3m^|WOH^a{TotK)Xp&2Bhn1`=_Dpe;E?6`Tcmb0G93548x z>C_BGlzzDrD@^eSg|dWOPvZ^*z5Z z+Xze>n!7k>WAYx;96Hd=IcnS~0Q!B-EZrT`#+C8(?QvQw&RA<+R~b<4g{Y8`AMXfL zmcn(Qe(!dcs4l_Wlr98Xv%+QWOeEl52n-j0_Xs#7{iRf$v5QjyZ7N2F*R@<%j+W-q zMYI??-%>fQFW|*hJ`gy*PH~AAn76iLyUHWe+oT*z^3uN5h-#D=66Ri^-oP76r5fZ7 z9#i#L|Cw%aqoJ3iP}*caUNj#dTeZhH_{`FKkxME(?dFHtNNkgR2DPL2Bu-=rXdvf6v1`l1E^gLQ&p z<8v9J9Aeo>7)gq^!jU1XuLo}WJv6*3BVXbX_X{`nRvj>SS3m9QkEn=c9P_oSA^=~7 zijAbo$x_m1)a{|M93H!^Y)!6*L}K0RIRjqi$EAYb&8jZ4!_v~o48EF8+Up#7{*-N) zqcy_Zpc6Yb9>2X@cnWIG4&yNmNyTnv{RDzq3X#R|sDV==Y^?G{**JNfioI6qWn;Ll z_=w3bwX?)KOUq$7!0%; zL!g7ufwwR&B1_RCGKASin)31MsRqW?)@=3#>L*#$gg{7@dKf~d;FKa{a)e9(T^tf~{{ zR1nBTFn~yA9)FDFy{JD*63UoYz1$h_I+4GRhG+X`5o3M3a}SxOu5f#YaY|lqp-RA( z5-WJwPaPals@#;U=c`I2O(8gvD8l4&oIN%i6CH$8kydhN(Ia84Qsg!gfA0uOL79zD z`pkXk=Z5|v6!-e3$Y(9_1m|2xA@Hn=yt5y1A2!xbs$ky>$1T`Cj3v7 zkd#t%AY}H=nNihe_{Hm7Vc3V;Z;hD<5VS_(Q{s#_BrA7+a zk^X5HE4bEd{9)2!BZN=}f~SR-w^?^LwZrZgU%@py%NrT4Ox=ckg^H^-Cm?&ha%QnI zSs9sfKbKYSAQz30VVLN z@ciTNIVD{ksY5CCPquv)gjR2_$MwGop1Yh~fW+UQ8DFq1Up8$wLEU@uueVS z?O@hoC-w-SYYV&f&-?N?V|jmBzMD9y=Vt{dO&T0C>VU(fG-u_^`epUEw*#M_^52=Z zq3e7%Z3Bq5R(E*=hs@K-l$-c_WClVR(?8tSM`wQBXL$g`h1X13>g0l#Q>sfM0A1_m z;sUIvpL5!6eO;=(+EB3hJGVEE1jAdN3YcCJGR0DOBd!#I>}2oXe`yCYajCq2|K7{X zOGBZ-)t1@V0BG|6!t>SjGL$P~TH*t|_XouwFv<;u=LbNH7Lc=dXXNuLyBEGL|BAVo zD{mRO)WHkqnF7m_5ll?m-|h3lhp0|q79>EV_D?=s_wZOUsX+^6l7e7Se}TQ-Tw%#p z%YmajQrHh~0^}C2+MbEOA;r!j7?F4JA!`2u6v=tiuqieZ2l(~i4LUtdNM?SaAQRKk zjg#anl*j(F-GbenyOL5aKukxqRo~;t8a|IXw!fQ{KKilO1Te+{vO$QESp?OjufrxB zUm2jV;T;A5cdD-H0ydhtODZ=Q-MS2tzflJw$cM~8(Mb7$(mRNa$W*SI&_(?IC+d(O z9ieQzrcZ$ZFpdI8a@7iTCf>S13Yvox`@B#!kw50 zY`Bd*oqI{hP2{qdB4+fLU}nwH?(}G$I2f+G>*s^&l%d-!*(blET5k=vTGhSZe!maM zOJ;YsH|#CvMtf(A6~;a3ATRV%%CxPdwrB<&(VKX`iCa0S*;l7?*kzw)Ns;z0@MWgDv}#q6kgFqQ0cb(bhLs4RboXUU zR)5ezCn5EzPLnI5(sUr6MU%j@?mW}{{!zSp$J2%mx9bL7@Tzl@xJfpox65yL`dap) z^v1jdNfF+cySLzVch_jFgey?&vgc&2Hv?o#@cO{@=19nmU8`l^(-9yY-bl%)Fsl{w zd!6nA8B-o0tBkrrfQMqytfZa7ad_>CDND=rMml@`C~CCq&aTgIEaPYaHe-1)P}SOy zU&?ajtM=Pi*L%-xV4$u}3rZz?A>ZXE?0tJcf*c6e83!UPqdDqgDD>v6^$t2T0XzYa zFvWGhi#^zi;kM_BOhM3(TwsotM(HjnLFa(kc8=8zu7A0bqJuEnIJ>=Vb$w(%b!V|t z1V4{+by zI@>nvggv<6aoQU-1P04f6)axmP3m7wX?Dcg>xwFYMW*y8b3u-pODhVZsmwIdq6|Ar zUbQ?SQa%2SZYHP2pCv`AH*9U8p{v@Veh2#{!89}%SuL-1^k=D!K;C~Sl1R>hwNo!I zftI168Hi_1;WC%EwM764X@EVRhDr3j4}uxeNoAq>>Bq7L3`J@pYHRxKL{)n??L;(= z2O34CP2tHxCN8Nh+^Yu*)XcS^*sGu$(3Ki|Y?Z=GP`sE*MOaUT z&-7P0(w1Z<@OHqSDv@xv04Q~1s2am<@7~=}> z;8Ke!i$M6EOd*js%I3Gbl2rk&PIT~ex1Dw9c!s8UF-gR3ndowj%go?C0l*ReStMj8 zq&T=L?*O>c+Uc1r&0DhY+^X_NoS;q zP84)p-W+(P#siG|4;lYCi4U`NsAse$HC+YMY?tr1jFAC7Mh6hC5eNimZ)0hurbJN> zmnE@!5YtEdSJ99HFy#D}d)A7QRR36q{9lW6|4Y^G|KtE{YG|YNXrTo%1`MZotcwjx zo@x3O04sMF0{pN{QS}`)UhnLYCU!4XD(Mxa{F}KN7g`VFJatj{$Tp|P8B&{ zc$H)=3#tflfH-WKDh6KQkH1_QJNkEmEF)btFVb)mFdcQ~>{RW-^1^siL>^%Az#mp0 zbS7cpi<<0iS4%VjK^0yQ=`WyN{%;lbe-AH+FYM`F@E0WY`%LzJV&$G$J7?;Fi#ZxK zA9jNGZrJ){h%frUts5Cm#qRo%f?|I)MW#p0lPt*uQ7b%lui1*KAq792brt0Sp6fMn z!Wd)`r^XbkA4bz~X2YIFcKByBq$qwUSgL~hBs1NYa&8Z7rAAb0kB8~<1qQJFueHsE z>s>tbIztafLp_~;q*We~C@=IMX6}km7W~zS&nenHl4+vX&ZvIYWtfLvIgR*KGq&2J z;l=+yl7q`MYT|f^lhk&-K-M;v`1n!rgfJQ(XlGy+O8Jaw&oYO2x|a4YT3|XzBNdg! z<1}R-9eJ}2!Acm!!K)@RF;bnkG}PRv8Xza+HVVwotF?LOA>(e?%PbWP`5MMUSs6NE z!%l#(E!#O6c=SCn`R8f{>sXM;xzGt$$ z#^uEbpyTzu?mdBKHf09dp``Nehx6pklmZwgom&s@`fb z4*I$Hl~Q!5J&eM5d-MqH;;#O!pBJ3d+f2q`~n@QGIsyJ^t0tu4LpT z@X}j4@Po;9aey4^+Mc1R;5UpPxI@l9YA?RbZT2p+j&_>q>N6h6`+Gk#hw*C9$&X)q zNCVHR-ecPX4+O~B@6J?V0@EAod@qKfVs?7|drQrFlg4&%P~$74KjE3$ka{tT=Ep6c z+@IT9=>`OVLhLNU1?Wx5;!1y2Z63+oabg3b0h?1ww`1XAsn65Qk-;VRTkG0(w(i~P z4dh%sbxsTAb;t#EHCJ%>WlfTi7E%uR=O;&Bzt{jA38l>a!wZ6C&y^4#{Us7BL+w%& z8!F&Bi#o9}2tS%7xm!=QwYxx}vjSXhBq{CdlXDNGZ`bojf`b?j+CGQIJdC%XqCs!S z_D;8O4rI*Wk2AaOV%ga9n_ih>&Sa!9aXz#=U7s64tO?M} z5LM)6+f?_|l>Zdg4=Ji;n~eSdDCR5($61iks_68p^niB*B}p%!o~4n9FJiTx2PP(~ ze%pa=>&LZLz+>ww3mIoGjvp0ut{mDgXe5f3)LZR1BKUU_>|QjP4L{ppo&ZE~K8$*; zphC$MgF;Q!`j+;+XdM-u^49Fi+`?Q&ZRQ_$zoMSI4W59Cufm$$CKnVY z2M{`IA7s+Cb${le-dE`g_v|)6;D5vgh7paU3RO6^iXXjVNoJ0Zk7Xgc!^;)- zYjx;(`QA4@rFq2FcKVBfQx^T`)B=mgEWQ(=?|Y$VfP9YSbtz zTNfFj<^lr5R;YZXBeYcduX2wO+U)U&9^Xl0Bt z^_mq{0p42tJ}AtCXMFphwDrf7OB6gs-QcjG2jm_TlafL=GUM2MRujl7be2LN)p(f( zKODSbZLu$d6g`F8v#}(msm7Jij2@=>#Wq|#(rnRo+H?2@PZf8QC6tjoLgmK?+vSh91U&Ua_klt+8`(+(v(zmzOOmawDZqC(WPc@+N^y( zqNNEGu&i57=tbu-Y!1!X7%pG7P*hS}0U50CxM&}}ef7}f&1BF)>jRV^-rd$b6_FZW zB-hPdF+GoYc--(!RX+qG<+yCRWpx~aRXS{Ack(>KaZ7jL2#}_MRc(6hmli=Ikf zaA>)cVI|7~;rYQvM=-#+FqiBI)Y@R$is<;}v)8c?f1IQyNnnVS03MiwWQnjwfkz&y z>o2Mr9EM}b@1C3E7ihP(fxb_J^b68@6Nix&>1lCHBUYBSy9IYX=1|S*pDl-YUIIO@ zd@@^41%_S&JCk^ko`EbtpEQj;}4F*y`R==p@k*Ds!a!KVCA8z_Kjr_WU1*cQ`n>GK;1(+%iC2-Iip_F z;kHRJ3GW+$*ALwo?~Px{+pu^&{o$IWB#uBQ;O~88(;&P*_6MQ4fN{5!A3d>LZVOx{ zf`Y`i4jmP|wJ1X!p zIql?~d8!jJ(MA$rf|%nmP35x)0tQt7zD~nhe8pmJjuOA#z2sFNX}ePQ z1wXXG@r|+ig63`l_$T?q8wHwWJFu6Jvhruo_1Fb2v244W5jkX$Jq)gO7w~Xtw3a9k zFiqUdtmvesX{^PS+_P)Ks(UKmIetF=QFS<<;^$ly^V~SQs?xehX!lHV_X5>ilWoyi zbxUL5B2rx6j_lQ_?FP!%~yDtD#|?s!?WT ztAWqrc6~&9I8q4F_XZESv}} z_S59ce8M}T19P4OMEsDA(6FhT6lr=C-uy)QkAcrH-CF~(CC`o54|2bZ#622HaIewq z!?yh7Lh+5~0jb$tj50j)&`ax(&kCjooUuH|8JR<~&Q|uKsi1zaifC|5&{dv&G9g*1 z8re?xZHF(=PY_->2bI)26JLihPYr*x#QYsVWk;4u-((?IVfwD2_WT>*od_8HAdLJy z$fi{VvX1M~g!FRv4Q#Dl3FlQ;cO5<5JuykGdhMp1pk4&rUMN?!)c*0!#)O&8j!s=! zqkN}J8(Q3XGom!9he>>=P@?Sc+zHZ)os@$3VE+yvGItCWtI<+3$Pum5YVG}AX0gZi z1sZ6Od;Ob4K@lRZs`Uzh%&rS$vZtVkY>hcc(Jo0(q4aWkshrk<{KOA_)`iEMWQ}8V{HE-<5FJx zA50|m_2($m_IV4G6UwE!voDwha_ay;*+*jr-xGNVdYV6h>z(qP70MYyVByGn&0Akz z<1~I5h~xoh7Uj0v_YqM6mX}2O_3&>OSWk{XX4O}>Aw^G)NS>|R7w^o!w?M;twQNev z839-{u+1&|r2r2Yvgvr|&q|9u_aB?w307`azfbHLNWBhTwQgV6QZ1@KzOwrB%)cex zn?$0cc?Q>M_D+qaXi5PAb=BXTi04`_QTbv1>4!w|q{rD1Do$5AKd9#dfJ02cBK~sl za!Hh0eOX*K+y@v;rGl?X;fTp8@l}LzfVVH#G~@L1h-vlcHsJgz0Mk4Z$E@7~j2i!i z9+iswFZAff6CxBnx+NXKMbc{sfGai^ExKt&^Z;s+?lv%3@tLY>8M&d*)L(;$gQb3v z;qv2@|0G7;dpe!UZss{QuaNi9+Fp)Y#`%==&q~Jah3|2^2p7Z+I4L63R~=vK>n7rw zWfqmb8K*R6(Et7zKz86t#mbRgTzQb2M{?#JDd0UwgkbYc`FbNf{$HU)+d*L{B>BH( zJN+ksrKzGR+7LW14hELS8fmf=(=IMP%=MwjK24kRW~T)xXCH?<=yw2unxTBcz@Cd$ z)79j}1*kkR=#Y4*iYm{GaA3#G!a`v2r`P?_WpyASJoLzBWKo~PcR0J+kD&eUsS&T} zMnxR0diaQ^gTe{_;loHgxhCm26?v(?CPY8zirvcj1-0T9`$t4f;KW(r?b*%7?S;TB zgt>Z4YF@875>s~Prc$fKl1hYm#ayVgKhg%3iRb|{oiY{&6P4}mxmqwUdam~4ohz$n z0MuM^&N99(!AC6^e#;keP&H1t2f*Vruj#9}wq4hz5eFqD&VO*>z644+JI(){{i6Bj zPV?asRjhLO$gO1tE+vK%Cxs>-zvC_Ij0*s8AOH5yVdAu2_EHilP!TBzIX5(x?~z7u zW1>2lP849TUfWDT2?0tG$Pib+D)aIdyN%DuEj8>K@Lo(_{KFJKg!UIme*Fu0|2ILW z_^oy@dZ%hDuWa(>^+mL}{MZaGl!-Sgsw>d1QE^7UcF#u+46b}y$Cl7JMDDkcIoGH| z;1h9}bB&-s@zZQ(G-$a_ z?4-Y|2*99jP*q2n-T-s(95=ZIz9BQ&%v(H>1z$O6%A0#wz4pfs<{2d7grzau{#l$C12zCJ{*i zQ<;g9Wdqk%opJgGH*rSaV5yxqp^)C;c(tfD_2TV*kR+W~(%#8#d5$<3tTlrJIX)pE zi%34yB%ApnIfQqz%f{-yrU8+0jKr~Q&MD>u+#apw#C@<+GO|SH zyQ&>zqz(nhu`ATz%cN5|LPJ!)vGgL}ge7&!OWaNT>3lV16(kI^QNSHk>OT5G3FwKK za?;>;DlbINHs}3A7^n)gnxroAO*&MdWty~C=!+E{zwO^gW^5Q#b|+mP3!_1z0nhb| zp6O#auDD3^r&aSqm^H17=e{mGo$fh@BDk10k|89MF>_Pd+F<-Dxy$(o7XS!wOA>}i z>5K1}c2eh0dB7^(3YP1PBN=UD2uhrZLb`6fe(WdfWfwP=LeKpvJzAx}y* z+P2-ep3aG1-i!Z4rClR8=#6mk6n-F2yRWHQJF}j>LB6LjM&_xoQn}=n^p%sfecB{; zfouNTSF*~XcIlcY{R@{5Fhc0%PDG>j>HR=OhkhMtSIs0Ab8n4gHX#|Y71B)JNrcX;X zJxR8^wOzX|fakHZ5k(HPUc_lWnjUyP8E4ruy}#Ys=gn6Kzf$_iG!Be3Vr{JNVO(HS=L-=FzQ%edzem$*+P@ojzvQMc8tU9 z^B@k^%d2o9bo|33@88U}>Sa3QHg?X}iNz>Piv1%;CZSZbivIW&f%(~c`gKxADjx4M zj}9VZaX}k~#cwz3O_B^AgpE^r4SKf;kaL#(SwEoh z(w}wxamHS7A}W_LGrRsXnGc|99PM58jf9VKfoCF4 zoGv-C3%DwKLU-ruW;OM6j}#Z{)H}z~H~2`12ayRyGvLY%p*zO9YYx#4H*2JB>2HCp z+u5qF%8j*TBxvrHl9q?0wpNEo1;?DDSScjuVm<(V_+^kkl>g2fiQ9p?LSv9I!;pS_ z#?rsAslC-Oj4Q`hX3cI73JgM8Rf(1M*c`m;yT{v5)W9Zgwt&3;V|j;vUr@{MW!N1B z8izqVo9>H!a|H(;bY5=t1~zptxY0&((wVY3)>S-~`AN@`+s>?aV3v;O^Sh@+rn#6vTGt{c2sl!T(*JV#oH@Gy&IBQ$oF z(k~a?fZ@tE-`)iROi7AZ1txI->J z{M`Gy8~O!M&#E4-+vJmYdBwa7OQ36@Csr<1sdn{tDWql!Ir)|i`*yKNl3UZtzv1lN zWO%>4ngW3+32g@e=|k(wU>sIIn<9Q;`@lt&Ec%a(TV?*5>{*f3q*^CtF2l6{4N4`? zx5jb4D)EwVIVkRJ4JwUee?1umMFS@Yxi_pN+&#hvGLpp+DfB}_#jIfmrV-n zGFn=SMZNzM;O*m1fren{fdHLa!b*;B5@42n9rFN(eo9I3Cqj6Pi4ye$aP6Q}?OTCANKLtAd+VvyA zcY8IHzJY_DZ?4y;%O!ql=YA+~HeP4uR&)36%f998laAGb#RKa|CkI!fl2R+IPqVu9 zwx4K9yUW&XiGpfg6`$@taXXO#RXWz~{OlO#3G(v$v{zfQFnYP2yofcGm&3Da>uzfA zc9oog>Y*qg%PM+ob3GzIdd4>YxnhWD{X_q}U&I5RCMai4Ew;vLyv_mg^BBP4@V4o? zq2Zykx<3llC*Z64ej+Md+rx&rov4!0o1a}9pLzjoYxhE=E0Hnch-zA}X=GH`&Kvs@ z?DI$$eK)=mBiY>cQz<8hh+m)mQJt{TT1}6vrR#qH*wO5(4CszVJF`~RMHv|@b}kfz4a&gadDE)BolbC?? zh&gpH0h9kpIinUDTp{9gk=A&rzsW5AFN*yw4mqcz`41$EQS&b(`^ws`isZV_Ddy+l zmEq)+Jpc-jcmR4j6KC+27yTi^V!?KEEs{z}{DVsN3oG|x$Nl4g57;*iUf1^n?p-#a z;w@8q*_zFJ5URlby$rY)2-wjF*znHau~#qszq$5#;DECSSi!{urv7&>Z@fY>eQ#)#IGzh)} zC)V?!LiH8`_(*KjN9C3ox2?(c9-l>vwrSZCZAPya9Q`~BaU_q8vFWZkaCNjZ **Start New Instance**. This will run the application and apply all migrations. You will see the below result when it successfully completes the process. The application database is ready! + +![Migrations applied](./images/bookstore-migrations-applied-{{UI_Text}}.png) + +> Alternatively, you can run `Update-Database` command in the Visual Studio > Package Manager Console to apply migrations. + +#### Initial database tables + +![Initial database tables](./images/bookstore-database-tables-{{DB}}.png) + +### Run the application + +To run the project, right click to the {{if UI == "MVC"}} `Acme.BookStore.Web`{{end}} {{if UI == "NG"}} `Acme.BookStore.HttpApi.Host` {{end}} project and click **Set As StartUp Project**. And run the web project by pressing **CTRL+F5** (*without debugging and fast*) or press **F5** (*with debugging and slow*). {{if UI == "NG"}}You will see the Swagger UI for BookStore API.{{end}} + +Further information, see the [running the application section](../../Getting-Started-{{if UI == "NG"}}Angular{{else}}AspNetCore-MVC{{end}}-Template#running-the-application).Getting-Started-AspNetCore-MVC-Template#running-the-application + +![Set as startup project](./images/bookstore-start-project-{{UI_Text}}.png) + +{{if UI == "NG"}} + +To start Angular project, go to the `angular` folder, open a command line terminal, execute the `yarn` command: + +```bash +yarn +``` + +Once all node modules are loaded, execute the `yarn start` command: + +```bash +yarn start +``` + +The website will be accessible from the following default URL: + +http://localhost:4200/ + +If you see the website's landing page successfully, you can exit Angular hosting by pressing `ctrl-c`. (We'll later start it again.) + +> Be aware that, Firefox does not use the Windows Certificate Store, so you'll need to add the self-signed developer certificate to Firefox manually. To do this, open Firefox and navigate to the below URL: +> +> https://localhost:44322/api/abp/application-configuration +> +> If you see the below screen, click the **Accept the Risk and Continue** button to bypass this warning. +> +> ![Set as startup project](./images/mozilla-self-signed-cert-error.png) + +{{end}} + +The default login credentials are; + +* **Username**: admin +* **Password**: 1q2w3E* + +### Solution structure + +This is how the layered solution structure looks like: + +![bookstore-visual-studio-solution](./images/bookstore-solution-structure-{{UI_Text}}.png) + +Check out the [solution structure](../startup-templates/application#solution-structure) section to understand the structure in details. + +### Create the book entity + +Domain layer in the startup template is separated into two projects: + +- `Acme.BookStore.Domain` contains your [entities](https://docs.abp.io/en/abp/latest/Entities), [domain services](https://docs.abp.io/en/abp/latest/Domain-Services) and other core domain objects. +- `Acme.BookStore.Domain.Shared` contains `constants`, `enums` or other domain related objects those can be shared with clients. + +Define [entities](https://docs.abp.io/en/abp/latest/Entities) in the **domain layer** (`Acme.BookStore.Domain` project) of the solution. The main entity of the application is the `Book`. Create a class, named `Book`, in the `Acme.BookStore.Domain` project as shown below: + +````csharp +using System; +using Volo.Abp.Domain.Entities.Auditing; + +namespace Acme.BookStore +{ + public class Book : AuditedAggregateRoot + { + public string Name { get; set; } + + public BookType Type { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + + protected Book() + { + + } + + public Book(Guid id, string name, BookType type, DateTime publishDate, float price) : + base(id) + { + Name = name; + Type = type; + PublishDate = publishDate; + Price = price; + } + } +} +```` + +* ABP has 2 fundamental base classes for entities: `AggregateRoot` and `Entity`. **Aggregate Root** is one of the **Domain Driven Design (DDD)** concepts. See [entity document](https://docs.abp.io/en/abp/latest/Entities) for details and best practices. +* `Book` entity inherits `AuditedAggregateRoot` which adds some auditing properties (`CreationTime`, `CreatorId`, `LastModificationTime`... etc.) on top of the `AggregateRoot` class. +* `Guid` is the **primary key type** of the `Book` entity. + +#### BookType enum + +Create the `BookType` enum in the `Acme.BookStore.Domain.Shared` project: + +````csharp +namespace Acme.BookStore +{ + public enum BookType + { + Undefined, + Adventure, + Biography, + Dystopia, + Fantastic, + Horror, + Science, + ScienceFiction, + Poetry + } +} +```` + +#### Add book entity to the DbContext + +{{if DB == "ef"}} + +EF Core requires to relate entities with your `DbContext`. The easiest way to do this is to add a `DbSet` property to the `BookStoreDbContext` class in the `Acme.BookStore.EntityFrameworkCore` project, as shown below: + +````csharp + public class BookStoreDbContext : AbpDbContext + { + public DbSet Users { get; set; } + public DbSet Books { get; set; } //<--added this line--> + //... + } +```` + +{{end}} + +{{if DB == "mongodb"}} + +Add a `IMongoCollection Books` property to the `BookStoreMongoDbContext` inside the `Acme.BookStore.MongoDB` project: + +```csharp +public class BookStoreMongoDbContext : AbpMongoDbContext +{ + public IMongoCollection Users => Collection(); + public IMongoCollection Books => Collection();//<--added this line--> + //... +} +``` + +{{end}} + +{{if DB == "ef"}} + +#### Configure the book entity + +Open `BookStoreDbContextModelCreatingExtensions.cs` file in the `Acme.BookStore.EntityFrameworkCore` project and add following code to the end of the `ConfigureBookStore` method to configure the Book entity: + +````csharp +builder.Entity(b => +{ + b.ToTable(BookStoreConsts.DbTablePrefix + "Books", BookStoreConsts.DbSchema); + b.ConfigureByConvention(); //auto configure for the base class props + b.Property(x => x.Name).IsRequired().HasMaxLength(128); +}); +```` + +Add the `using Volo.Abp.EntityFrameworkCore.Modeling;` statement to resolve `ConfigureByConvention` extension method. + +{{end}} + +{{if DB == "mongodb"}} + +#### Add seed (sample) data + +Adding sample data is optional, but it's good to have initial data in the database for the first run. ABP provides a [data seed system](https://docs.abp.io/en/abp/latest/Data-Seeding). Create a class deriving from the `IDataSeedContributor` in the `*.Domain` project: + +```csharp +using System; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Guids; + +namespace Acme.BookStore +{ + public class BookStoreDataSeederContributor + : IDataSeedContributor, ITransientDependency + { + private readonly IRepository _bookRepository; + private readonly IGuidGenerator _guidGenerator; + + public BookStoreDataSeederContributor( + IRepository bookRepository, + IGuidGenerator guidGenerator) + { + _bookRepository = bookRepository; + _guidGenerator = guidGenerator; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (await _bookRepository.GetCountAsync() > 0) + { + return; + } + + await _bookRepository.InsertAsync( + new Book( + id: _guidGenerator.Create(), + name: "1984", + type: BookType.Dystopia, + publishDate: new DateTime(1949, 6, 8), + price: 19.84f + ) + ); + + await _bookRepository.InsertAsync( + new Book( + id: _guidGenerator.Create(), + name: "The Hitchhiker's Guide to the Galaxy", + type: BookType.ScienceFiction, + publishDate: new DateTime(1995, 9, 27), + price: 42.0f + ) + ); + } + } +} +``` + +{{end}} + +{{if DB == "ef"}} + +#### Add new migration & update the database + +The startup template uses [EF Core Code First Migrations](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/) to create and maintain the database schema. Open the **Package Manager Console (PMC)** under the menu *Tools > NuGet Package Manager*. + +![Open Package Manager Console](./images/bookstore-open-package-manager-console.png) + +Select the `Acme.BookStore.EntityFrameworkCore.DbMigrations` as the **default project** and execute the following command: + +```bash +Add-Migration "Created_Book_Entity" +``` + +![bookstore-pmc-add-book-migration](./images/bookstore-pmc-add-book-migration-v2.png) + +This will create a new migration class inside the `Migrations` folder of the `Acme.BookStore.EntityFrameworkCore.DbMigrations` project. Then execute the `Update-Database` command to update the database schema: + +````bash +Update-Database +```` + +![bookstore-update-database-after-book-entity](./images/bookstore-update-database-after-book-entity.png) + +#### Add initial (sample) data + +`Update-Database` command has created the `AppBooks` table in the database. Open your database and enter a few sample rows, so you can show them on the listing page. + +```mssql +INSERT INTO AppBooks (Id,CreationTime,[Name],[Type],PublishDate,Price) VALUES +('f3c04764-6bfd-49e2-859e-3f9bfda6183e', '2018-07-01', '1984',3,'1949-06-08','19.84') + +INSERT INTO AppBooks (Id,CreationTime,[Name],[Type],PublishDate,Price) VALUES +('13024066-35c9-473c-997b-83cd8d3e29dc', '2018-07-01', 'The Hitchhiker`s Guide to the Galaxy',7,'1995-09-27','42') + +INSERT INTO AppBooks (Id,CreationTime,[Name],[Type],PublishDate,Price) VALUES +('4fa024a1-95ac-49c6-a709-6af9e4d54b54', '2018-07-02', 'Pet Sematary',5,'1983-11-14','23.7') +``` + +![bookstore-books-table](./images/bookstore-books-table.png) + +{{end}} + +### Create the application service + +The next step is to create an [application service](../../Application-Services.md) to manage the books which will allow us the four basic functions: creating, reading, updating and deleting. Application layer is separated into two projects: + +* `Acme.BookStore.Application.Contracts` mainly contains your `DTO`s and application service interfaces. +* `Acme.BookStore.Application` contains the implementations of your application services. + +#### BookDto + +Create a DTO class named `BookDto` into the `Acme.BookStore.Application.Contracts` project: + +````csharp +using System; +using Volo.Abp.Application.Dtos; + +namespace Acme.BookStore +{ + public class BookDto : AuditedEntityDto + { + public string Name { get; set; } + + public BookType Type { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + } +} +```` + +* **DTO** classes are used to **transfer data** between the *presentation layer* and the *application layer*. See the [Data Transfer Objects document](https://docs.abp.io/en/abp/latest/Data-Transfer-Objects) for more details. +* `BookDto` is used to transfer book data to the presentation layer in order to show the book information on the UI. +* `BookDto` is derived from the `AuditedEntityDto` which has audit properties just like the `Book` class defined above. + +It will be needed to map `Book` entities to `BookDto` objects while returning books to the presentation layer. [AutoMapper](https://automapper.org) library can automate this conversion when you define the proper mapping. The startup template comes with AutoMapper configured, so you can just define the mapping in the `BookStoreApplicationAutoMapperProfile` class in the `Acme.BookStore.Application` project: + +````csharp +using AutoMapper; + +namespace Acme.BookStore +{ + public class BookStoreApplicationAutoMapperProfile : Profile + { + public BookStoreApplicationAutoMapperProfile() + { + CreateMap(); + } + } +} +```` + +#### CreateUpdateBookDto + +Create a DTO class named `CreateUpdateBookDto` into the `Acme.BookStore.Application.Contracts` project: + +````csharp +using System; +using System.ComponentModel.DataAnnotations; + +namespace Acme.BookStore +{ + public class CreateUpdateBookDto + { + [Required] + [StringLength(128)] + public string Name { get; set; } + + [Required] + public BookType Type { get; set; } = BookType.Undefined; + + [Required] + public DateTime PublishDate { get; set; } + + [Required] + public float Price { get; set; } + } +} +```` + +* This `DTO` class is used to get book information from the user interface while creating or updating a book. +* It defines data annotation attributes (like `[Required]`) to define validations for the properties. `DTO`s are [automatically validated](https://docs.abp.io/en/abp/latest/Validation) by the ABP framework. + +Next, add a mapping in `BookStoreApplicationAutoMapperProfile` from the `CreateUpdateBookDto` object to the `Book` entity with the `CreateMap();` command: + +````csharp +using AutoMapper; + +namespace Acme.BookStore +{ + public class BookStoreApplicationAutoMapperProfile : Profile + { + public BookStoreApplicationAutoMapperProfile() + { + CreateMap(); + CreateMap(); //<--added this line--> + } + } +} +```` + +#### IBookAppService + +Create an interface named `IBookAppService` in the `Acme.BookStore.Application.Contracts` project: + +````csharp +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace Acme.BookStore +{ + public interface IBookAppService : + ICrudAppService< //Defines CRUD methods + BookDto, //Used to show books + Guid, //Primary key of the book entity + PagedAndSortedResultRequestDto, //Used for paging/sorting on getting a list of books + CreateUpdateBookDto, //Used to create a new book + CreateUpdateBookDto> //Used to update a book + { + + } +} +```` + +* Defining interfaces for the application services **are not required** by the framework. However, it's suggested as a best practice. +* `ICrudAppService` defines common **CRUD** methods: `GetAsync`, `GetListAsync`, `CreateAsync`, `UpdateAsync` and `DeleteAsync`. It's not required to extend it. Instead, you could inherit from the empty `IApplicationService` interface and define your own methods manually. +* There are some variations of the `ICrudAppService` where you can use separated DTOs for each method. + +#### BookAppService + +Implement the `IBookAppService` as named `BookAppService` in the `Acme.BookStore.Application` project: + +````csharp +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Repositories; + +namespace Acme.BookStore +{ + public class BookAppService : + CrudAppService, + IBookAppService + { + public BookAppService(IRepository repository) + : base(repository) + { + + } + } +} +```` + +* `BookAppService` is derived from `CrudAppService<...>` which implements all the CRUD (create, read, update, delete) methods defined above. +* `BookAppService` injects `IRepository` which is the default repository for the `Book` entity. ABP automatically creates default repositories for each aggregate root (or entity). See the [repository document](https://docs.abp.io/en/abp/latest/Repositories). +* `BookAppService` uses `IObjectMapper` to map `Book` objects to `BookDto` objects and `CreateUpdateBookDto` objects to `Book` objects. The Startup template uses the [AutoMapper](http://automapper.org/) library as the object mapping provider. We have defined the mappings before, so it will work as expected. + +### Auto API Controllers + +We normally create **Controllers** to expose application services as **HTTP API** endpoints. This allows browsers or 3rd-party clients to call them via AJAX. ABP can [**automagically**](https://docs.abp.io/en/abp/latest/AspNetCore/Auto-API-Controllers) configures your application services as MVC API Controllers by convention. + +#### Swagger UI + +The startup template is configured to run the [Swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the application by pressing `CTRL+F5` and navigate to `https://localhost:/swagger/` on your browser. (Replace `` with your own port number.) + +You will see some built-in service endpoints as well as the `Book` service and its REST-style endpoints: + +![bookstore-swagger](./images/bookstore-swagger.png) + +Swagger has a nice interface to test the APIs. You can try to execute the `[GET] /api/app/book` API to get a list of books. + +{{if UI == "MVC"}} + +### Dynamic JavaScript proxies + +It's common to call HTTP API endpoints via AJAX from the **JavaScript** side. You can use `$.ajax` or another tool to call the endpoints. However, ABP offers a better way. + +ABP **dynamically** creates JavaScript **proxies** for all API endpoints. So, you can use any **endpoint** just like calling a **JavaScript function**. + +#### Testing in developer console of the browser + +You can easily test the JavaScript proxies using your favorite browser's **Developer Console**. Run the application, open your browser's **developer tools** (*shortcut is F12 for Chrome*), switch to the **Console** tab, type the following code and press enter: + +````js +acme.bookStore.book.getList({}).done(function (result) { console.log(result); }); +```` + +* `acme.bookStore` is the namespace of the `BookAppService` converted to [camelCase](https://en.wikipedia.org/wiki/Camel_case). +* `book` is the conventional name for the `BookAppService` (removed `AppService` postfix and converted to camelCase). +* `getList` is the conventional name for the `GetListAsync` method defined in the `AsyncCrudAppService` base class (removed `Async` postfix and converted to camelCase). +* `{}` argument is used to send an empty object to the `GetListAsync` method which normally expects an object of type `PagedAndSortedResultRequestDto` that is used to send paging and sorting options to the server (all properties are optional, so you can send an empty object). +* `getList` function returns a `promise`. You can pass a callback to the `done` (or `then`) function to get the result from the server. + +Running this code produces the following output: + +![bookstore-test-js-proxy-getlist](./images/bookstore-test-js-proxy-getlist.png) + +You can see the **book list** returned from the server. You can also check the **network** tab of the developer tools to see the client to server communication: + +![bookstore-test-js-proxy-getlist-network](./images/bookstore-test-js-proxy-getlist-network.png) + +Let's **create a new book** using the `create` function: + +````js +acme.bookStore.book.create({ name: 'Foundation', type: 7, publishDate: '1951-05-24', price: 21.5 }).done(function (result) { console.log('successfully created the book with id: ' + result.id); }); +```` + +You should see a message in the console something like that: + +````js +successfully created the book with id: 439b0ea8-923e-8e1e-5d97-39f2c7ac4246 +```` + +Check the `Books` table in the database to see the new book row. You can try `get`, `update` and `delete` functions yourself. + +### Create the books page + +It's time to create something visible and usable! Instead of classic MVC, we will use the new [Razor Pages UI](https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start) approach which is recommended by Microsoft. + +Create `Books` folder under the `Pages` folder of the `Acme.BookStore.Web` project. Add a new Razor Page by right clicking the Books folder then selecting **Add > Razor Page** menu item. Name it as `Index`: + +![bookstore-add-index-page](./images/bookstore-add-index-page-v2.png) + +Open the `Index.cshtml` and change the whole content as shown below: + +**Index.cshtml:** + +````html +@page +@using Acme.BookStore.Web.Pages.Books +@inherits Acme.BookStore.Web.Pages.BookStorePage +@model IndexModel + +

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 tZ<`*=g+``!`lRXyo68r*MtNbyjir6v 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îS-!y%+}%DyWjBTB1yd>GW9AM!u;a(DmH^k#6o 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